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

来源:这里教程网 时间:2026-03-03 16:15:38 作者:

[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 --//安全起见,我还是不乱动了。

相关推荐