Zabbix发信提示根磁盘空间使用已>80%,登录Linux主机后,一顿检查发现,磁盘空间确实占用了80%,但是居然找不到什么文件占用了磁盘空间??
一、问题点现象说明
1.1 查看磁盘使用情况(如下图),显示根磁盘空间已用‘56G’
[root@public46 ~]#df -h
1.2 查看各目录的磁盘占用情况
[root@public46 ~]#du -h --max-depth=1 /
从上图可以发现,除去/web目录,根目录也就用了10G左右的磁盘空间,为什么会显示已用‘56G’呢?
二、问题点排查
2.1 查看根磁盘空间的node节点使用情况:正常
2.2 查找根磁盘,大小>100M的文件(排除了“/web”目录):正常
[root@public46 ~]# find / -path "/web" -prune -o -size +100M \
-print0 |xargs -0 du -sh
参数说明:
-path "/web" -prune:排除了“/web”目录进行条件搜索
2.3 用‘lsof’命令检查进程的文件句柄情况:异常
[root@public46 ~]#yum -y install lsof
[root@public46 ~]#lsof -n / |grep deleted
原因:上图可以发现,大量文件已经删除,但是有两个进程‘iostat’和‘zabbix-server’仍然占用着文件句柄,导致删除的文件的磁盘空间一直没有释放!
三、问题点解决
原因找到,问题就很好解决了,重启或者kill掉占用的进程即可
3.1 批量关闭iostat进程(如果只有一个进程,可以直接kill掉)
[root@public46 ~]#ps aux |grep iostat|gawk '{print $2}' |xargs kill -9
3.2 重启zabbix-server进程
[root@public46 ~]#systemctl restart zabbix-server
3.3 再次查看磁盘使用情况
[root@public46 ~]#df -h
磁盘空间使用情况已经恢复正常!