首页 > 数据库 > Oracle > [20201104]磁盘空间消耗在哪里.txt
[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/ ,如需转载,请注明出处,否则将追究法律责任。