1.问题
在一次日常运维过程中,收到了一台机器的磁盘告警,于是到机器上面准备进行清理,通过df命令发现磁盘利用率为80%,但通过du命令查看该磁盘下的所有目录,却发现没有占用很多的。通过查找相关资料,找到了解决方法。
2.原因
如果文件在删除的时候,还有线程在打开它,就会出现句柄没有释放的情况,就会导致磁盘空间不会被释放。
3.解决
方法一:
文件句柄内容置空
lsof | grep deleted
命令查看状态为deleted的句柄信息,找到对应程序PID,如图PID为18683
执行echo > /proc/$PID/fd/$FD
方法二:
重启服务
根据业务本身情况,如果非实时服务,可以选择重启服务释放句柄,否则最好选择方法一