问题现象
- df显示某一分区空间使用率大于du统计该分区的使用率
- df显示某一分区空间使用率小于du统计该分区的使用率
原因及解决办法
- df > du
- 删除的文件仍在被某一进程占用导致
]# lsof -n|grep deleted #查看有哪些文件被删除仍在被进程使用,删除该进程pid或者重启该服
- 本地服务器存储被作为中转,这种情况明显特点是df显示的结果在比较短的时间内忽高忽低
- 删除的文件仍在被某一进程占用导致
- du < df
- 这种情况比较少见,不过我遇到了。没啥说的,直接跟业务商量是否可以删除文件释放空间,最后清理了10T
df和du工作原理
df工作原理
- 读取每个分区的superblock来获取空闲数据块、已使用数据块,从而计算出空闲空间和已使用空间
- 速度快
- 会统计已删除但仍有进程引用的文件
du工作原理
- 通过stat统计每个文件的空间占用总和
- 速度慢
- 如果该目录下有挂载其它文件系统,也会进行统计
- 对于已删除,但仍有进程占用的文件,不会进行统计