今天遇到一个已删除文件占用磁盘的情况,这里记录简单的分析和处理流程
背景:
1、接收到磁盘告警后,用df -h
查看,磁盘的使用率是93%。
2、使用du -h --max-depth=1
查看高负载磁盘时,各文件占用都不是很高。
问题:
df和du的执行结果不一致,无法定位到大文件路径并清理文件
问题分析:
初步怀疑有进程占用已经被删除的大文件,导致文件无法被释放
具体原因:
Linux下的文件,只有在引用数为0的情况下才会真正被删除掉,之前所占用的空间是不会被释放的。
如果存在文件引用,系统会将该文件标记为已删除,在引用此文件的进程都关闭时(文件引用数为0时),最终删除文件,释放空间资源。
解决方案:
1、【找出被删除的占用文件】lsof -n | grep grep deleted
2、【释放被占用空间】使用kill pid
或kill -9 pid
杀掉进程后,再重启服务
总结:
这里可以看出,df和du的执行结果是有区别的,那这两个命令的执行流程如何?是什么导致输出结果不同,【Linux-运维】df和du的命令区分