突然接到Zabbix的告警邮件,说硬盘空间告警,赶紧登上服务器,用df查看硬盘利用率,发现已用空间果然较低,如下:
加上-h更容易看明白空间大小
df -h
输出结果如下:
/dev/sdb1 2.2T 1.8T 488G 79% /home
继续分析“/home”的占用分布,如下:
只查看超过1G的目录
du -h --max-depth=1 /home/yiifaa|sort -n -k1
输出结果如下:
位置 占用大小
./logs 11G
./mis_analysis 51G
./opdir 253G
./openresty 5.3G
./sdk_collect 788G
./sdk_data 232G
总计 1340.30G
差距竟然达到了500G,初步以为是其他用户使用了其他的空间,赶紧切换到root用户,再次进行分析:
切换到根用户
su root
再次查看/home的占用情况
du -h --max-depth=1 /home|sort -n -k1
输出结果如下:
1.3T /
1.3T /home
3.8G /usr
4.0K /cgroup
4.0K /media
4.0K /misc
4.0K /mnt
4.0K /net
4.0K /selinux
4.0K /srv
4.1G /var
5.6M /tmp
6.7M /share
9.0M /bin
10M /root
16K /lost+found
16M /sbin
18M /libexec
23M /opt
28M /lib64
34M /etc
77M /boot
200K /dev
290M /lib
两相对照,du的两次统计数据基本相同,那么问题确定了,硬盘空间真的消失了500G。
翻阅了很多文档,最后基本可以确认,硬盘空间消失是因为删除的文件被其他程序引用,导致空间无法回收,所以解决的方法也很简单,找到引用文件的相关进程,然后停掉进程让空间回收即可,查找引用已删除文件的方法如下:
按已删除文件大小逆向排序
lsof -s|grep deleted|sort -nr -k7|less
得到如下的结果:
python 9100 xiaoju 4w REG 8,17 506684182703 11467 /home/xiaoju/sec_audit_log/biz/sec_audit.log (deleted)
python 9100 xiaoju 3w REG 8,17 506684182703 11467 /home/xiaoju/sec_audit_log/biz/sec_audit.log (deleted)
python 9100 xiaoju 12w REG 8,17 506684182703 11467 /home/xiaoju/sec_audit_log/biz/sec_audit.log (deleted)
python 9100 xiaoju 11w REG 8,17 506684182703 11467 /home/xiaoju/sec_audit_log/biz/sec_audit.log (deleted)
python 9100 xiaoju 10w REG 8,17 506684182703 11467 /home/xiaoju/sec_audit_log/biz/sec_audit.log (deleted)
很容易就找到了出问题的进程号——9100,结束掉相关进程,再次用df查看磁盘空间,发现统计数据终于一致了,如下:
kill 9100
df -h
df统计结果:
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 2.2T 1.3T 965G 57% /home
其他
是的,是的,如果你的服务器没有高可用性要求(非在线服务器),那么重启就是最简单直接的解决办法
原文:https://blog.csdn.net/yiifaa/article/details/78847871
可参考:https://blog.csdn.net/peterxiaoq/article/details/78676330?utm_source=blogxgwz1
https://blog.csdn.net/lufeisan/article/details/53149427?utm_source=blogxgwz0