Linux磁盘被占用找不到占用文件,如何解决?

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节点使用情况:正常

node节点使用情况

2.2 查找根磁盘,大小>100M的文件(排除了“/web”目录):正常

[root@public46 ~]# find / -path "/web" -prune -o -size +100M \
-print0 |xargs -0 du -sh

大小>100M的文件

参数说明:

    -path "/web" -prune:排除了“/web”目录进行条件搜索

2.3 用‘lsof’命令检查进程的文件句柄情况:异常

[root@public46 ~]#yum -y install lsof
[root@public46 ~]#lsof -n / |grep deleted

lsof

原因:上图可以发现,大量文件已经删除,但是有两个进程‘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

再次查看磁盘使用情况

磁盘空间使用情况已经恢复正常!

Jimmy's Blog ,版权所有丨如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:https://www.xjimmy.com/linux_no_freespace.html

Leave a Comment