linux中du -sh和df -hT结果对不上问题

158 阅读1分钟

1.问题

在一次日常运维过程中,收到了一台机器的磁盘告警,于是到机器上面准备进行清理,通过df命令发现磁盘利用率为80%,但通过du命令查看该磁盘下的所有目录,却发现没有占用很多的。通过查找相关资料,找到了解决方法。

2.原因

如果文件在删除的时候,还有线程在打开它,就会出现句柄没有释放的情况,就会导致磁盘空间不会被释放。

3.解决

方法一:

文件句柄内容置空

lsof | grep deleted命令查看状态为deleted的句柄信息,找到对应程序PID,如图PID为18683

image.png

执行echo > /proc/$PID/fd/$FD

方法二:

重启服务

根据业务本身情况,如果非实时服务,可以选择重启服务释放句柄,否则最好选择方法一