ITPub博客

首页 > 数据库 > Oracle > [20201104]磁盘空间消耗在哪里.txt

[20201104]磁盘空间消耗在哪里.txt

原创 Oracle 作者:lfree 时间:2020-11-04 10:14:31 0 删除 编辑

[20201104]磁盘空间消耗在哪里.txt

--//昨天检查我发现根文件系统的空间在慢慢消耗,但是不知道消耗在哪里?

#  df -m / ;sleep 5;df -m /
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/mapper/VGExaDb-LVDbSys1
                        201587     98607     92743  52% /
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/mapper/VGExaDb-LVDbSys1
                        201587     98667     92683  52% /
--//单位可是M,可以发现92743-92683 = 60M,可以发现5秒的时间已经消耗60M,这是相对很大的"量".
--//实际上开始我执行的是df 显示的单位是g,但是我再重复执行时发现Available从92g -> 91g,这才仔细检查,引起重视。

#  du -sm /var/log
1302    /var/log

--//说明/var/log并没有使用太多磁盘空间。
--//这次有了昨天链接:http://blog.itpub.net/267265/viewspace-2731783/=>[20201103]lsof显示link=0的文件.txt

#  lsof +L1 | grep "/tmp/q"
dg4msql     4090 oracle    7ur  REG  252,0           0     0  1640857 /tmp/qec0vT4Z (deleted)
dg4msql    20893 oracle    7u   REG  252,0    65051921     0  1640926 /tmp/qeGp3ORj (deleted)
dg4msql    25609 oracle    7u   REG  252,0  1821887369     0  1638432 /tmp/qeeKJCl2 (deleted)
dg4msql    36262 oracle    7u   REG  252,0    73348604     0  1638441 /tmp/qeSquXKK (deleted)
dg4msql    89244 oracle    7u   REG  252,0  1848225807     0  1638436 /tmp/qemsv7vr (deleted)
dg4msql    92746 oracle    7ur  REG  252,0           0     0  1639715 /tmp/qehco6je (deleted)
dg4msql    93770 oracle    7u   REG  252,0    17731541     0  1638442 /tmp/qeQRtgir (deleted)
dg4msql   101216 oracle    7ur  REG  252,0 72496082944     0  1638443 /tmp/qe73QgZA (deleted)
dg4msql   130059 oracle    7u   REG  252,0    65042418     0  1640597 /tmp/qeIt3oBP (deleted)

--// /tmp/qe73QgZA  已经占了 72496082944/1024/1024/1024 = 67.52G,很明显感觉问题在这里,我估计tmpwatch给删除了这些文件。但是
--//我有遇到奇怪的现象,文件大小不变,我再次执行发现
#   tail -c 100 /proc/101216/fd/7 | md5sum
7e6711da3d27a4f5a0db45645fda0bbd  -

#   tail -c 100 /proc/101216/fd/7 | md5sum
7e6711da3d27a4f5a0db45645fda0bbd  -

--//可以发现md5校验信息没有变化,也就是这些文件不会变化,也就是定位不对。
--//那么磁盘空间消耗在哪里呢?在测试环境测试看看。

1.环境:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> @ spid
       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
        30      15381 24625                    DEDICATED 24626       26        168 alter system kill session '30,15381' immediate;

SCOTT@book> @ pp
TRACEFILE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_24626.trc

2.测试:
SCOTT@book> @ 10046on 12
Session altered.

SCOTT@book> select * from dept;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

$ ls -l /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_24626.trc
-rw-r----- 1 oracle oinstall 21846 2020-11-04 09:05:46 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_24626.trc

$ rm /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_24626.trc
/bin/rm: remove regular file `/u01/app/oracle/diag/rdbms/book/book/trace/book_ora_24626.trc'? y

# lsof +L1 |egrep "COMMAND|/u01/app"
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NLINK      NODE NAME
oracle   24626 oracle    8w   REG  104,6    21846     0 370409544 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_24626.trc (deleted)
--//大小21846能对上。

SCOTT@book> select count(*) from dept;
  COUNT(*)
----------
         4

# lsof +L1 |egrep "COMMAND|/u01/app"
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NLINK      NODE NAME
oracle   24626 oracle    8w   REG  104,6    23440     0 370409544 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_24626.trc (deleted)

--//很明显大小发生了变化。那么这些磁盘空间到底消耗在哪里呢?

3.返回问题现场:
#  df -m /
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/mapper/VGExaDb-LVDbSys1
                        201587     99586     91764  53% /

--//不到10分钟 92743-91764 = 979m,多么可怕的数量。该如何定位呢?

#  lsof +L1 | grep "/tmp/q"
dg4msql     4090 oracle    7ur  REG  252,0           0     0  1640857 /tmp/qec0vT4Z (deleted)
dg4msql    20893 oracle    7u   REG  252,0    65051921     0  1640926 /tmp/qeGp3ORj (deleted)
dg4msql    25609 oracle    7u   REG  252,0  1821887369     0  1638432 /tmp/qeeKJCl2 (deleted)
dg4msql    36262 oracle    7u   REG  252,0    73348604     0  1638441 /tmp/qeSquXKK (deleted)
dg4msql    89244 oracle    7u   REG  252,0  1848225807     0  1638436 /tmp/qemsv7vr (deleted)
dg4msql    92746 oracle    7ur  REG  252,0           0     0  1639715 /tmp/qehco6je (deleted)
dg4msql    93770 oracle    7u   REG  252,0    17731541     0  1638442 /tmp/qeQRtgir (deleted)
dg4msql   101216 oracle    7ur  REG  252,0 72496082944     0  1638443 /tmp/qe73QgZA (deleted)
dg4msql   130059 oracle    7u   REG  252,0    65042418     0  1640597 /tmp/qeIt3oBP (deleted)

--//仔细观察发现:
#  du -sm /opt
18531   /opt
#  du -sm /opt
18536   /opt

--//写的是/opt目录。最终发现主要写/opt/oracle.ExaWatcher/archive目录。

#  ls -l /opt/oracle.ExaWatcher/archive
total 2612
drwxr----- 2 root root 339968 2020-11-04 09:40:35 Diskinfo.ExaWatcher
drwxr----- 2 root root   4096 2018-05-09 10:55:51 ExtractedResults
drwxr----- 2 root root 339968 2020-11-04 09:40:35 IBCardInfo.ExaWatcher
drwxr----- 2 root root 315392 2020-11-04 09:40:35 IBprocs.ExaWatcher
drwxr----- 2 root root 311296 2020-11-04 09:40:35 Iostat.ExaWatcher
drwxr----- 2 root root 233472 2020-11-04 09:40:35 LGWR.ExaWatcher
drwxr----- 2 root root  65536 2020-11-04 09:42:14 Lsof.ExaWatcher
drwxr----- 2 root root   4096 2020-11-04 06:38:44 MegaRaidFW.ExaWatcher
drwxr----- 2 root root 303104 2020-11-04 09:40:35 Meminfo.ExaWatcher
drwxr----- 2 root root 311296 2020-11-04 09:40:35 Mpstat.ExaWatcher
drwxr----- 2 root root  65536 2020-11-04 09:41:45 Netstat.ExaWatcher
drwxr----- 2 root root  57344 2020-11-04 09:40:35 Ps.ExaWatcher
drwxr----- 2 root root  65536 2020-11-04 09:40:35 RDSinfo.ExaWatcher
drwxr----- 2 root root  69632 2020-11-04 09:40:35 Slabinfo.ExaWatcher
drwxr----- 2 root root  69632 2020-11-04 09:40:34 Top.ExaWatcher
drwxr----- 2 root root  61440 2020-11-04 09:40:38 Vmstat.ExaWatcher

#  ps -ef | grep ExaWatche[r]
root      15882      1  0  2014 ?        00:00:00 /bin/bash ./ExaWatcher.sh --fromconf
root      16879  15882  0  2014 ?        8-06:09:44 /usr/bin/perl /opt/oracle.ExaWatcher/ExecutorExaWatcher.pl /opt/oracle.ExaWatcher/ExaWatcher.execonf
root      17356  16879  0  2014 ?        00:00:00 sh -c /opt/oracle.ExaWatcher/ExaWatcherCleanup.sh 1400199952 1715732732 3600 /opt/oracle.ExaWatcher/archive/ 3145728 2>>/dev/null
root      17357  17356  0  2014 ?        17:58:05 /bin/bash /opt/oracle.ExaWatcher/ExaWatcherCleanup.sh 1400199952 1715732732 3600 /opt/oracle.ExaWatcher/archive/ 3145728
root      44434  16879  0 08:47 ?        00:00:00 sh -c /usr/bin/mpstat -P ALL  5  720 2>/dev/null >> /opt/oracle.ExaWatcher/archive/Mpstat.ExaWatcher/2020_11_04_08_47_28_MpstatExaWatcher_dm01dbadm01.xxxxxxxx.com.dat
root      57416  16879  0 09:44 ?        00:00:00 sh -c /usr/sbin/lsof +c0 -w +L -b -R -i 2>/dev/null >> /opt/oracle.ExaWatcher/archive/Lsof.ExaWatcher/2020_11_04_09_33_51_LsofExaWatcher_dm01dbadm01.xxxxxxxx.com.dat
root      61135  16879  0 09:46 ?        00:00:00 sh -c /bin/netstat -n -p -l 2>/dev/null >> /opt/oracle.ExaWatcher/archive/Netstat.ExaWatcher/2020_11_04_09_41_45_NetstatExaWatcher_dm01dbadm01.xxxxxxxx.com.dat
root      61139  16879  0 09:46 ?        00:00:00 sh -c /usr/bin/vmstat  5  2 >> /opt/oracle.ExaWatcher/archive/Vmstat.ExaWatcher/2020_11_04_09_33_42_VmstatExaWatcher_dm01dbadm01.xxxxxxxx.com.dat
root     114134  16879  0 09:23 ?        00:00:00 sh -c /usr/bin/top -b -d 5 -n 720 2>/dev/null >> /opt/oracle.ExaWatcher/archive/Top.ExaWatcher/2020_11_04_09_23_44_TopExaWatcher_dm01dbadm01.xxxxxxxx.com.dat
root     117607  16879  0 09:25 ?        00:00:00 sh -c /usr/bin/iostat -t -x  5  720 2>/dev/null >> /opt/oracle.ExaWatcher/archive/Iostat.ExaWatcher/2020_11_04_09_25_45_IostatExaWatcher_dm01dbadm01.xxxxxxxx.com.dat

--//很明显oracle exadata后台在不断收集主机信息,消耗大量磁盘空间。
--//它也会定时调度sh -c /opt/oracle.ExaWatcher/ExaWatcherCleanup.sh清除信息。

#  df -m /
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/mapper/VGExaDb-LVDbSys1
                        201587     97870     93480  52% /

--//可以发现现在磁盘空间又回来了。

--//现在终于可以定位问题了,实际上dg4msql进程生产的临时文件放在/tmp目录,而tmpwatch调度删除了这些文件,而对应的文件句柄
--//并没有释放.开始以为问题在这里,实际情况不是。
--//exadata机器会不断记录机器一些信息用于事后分析导致消耗大量磁盘空间。实际上我觉得可能跟最近连接接数量暴涨存在关系,原来
--//连接数45XX而现在涨到74XX,这样每次写入的信息就大很多。

--//至于dg4msql产生的临时文件如何清除,方法很多。估计也可以执行
# >| /proc/130059/fd/7

--//安全起见,我还是不乱动了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2732010/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969371