df和du显示结果不一致原因及解决办法

问题现象

  1. df显示某一分区空间使用率大于du统计该分区的使用率
  2. df显示某一分区空间使用率小于du统计该分区的使用率

原因及解决办法

  1. df > du
    1. 删除的文件仍在被某一进程占用导致
      ]# lsof -n|grep deleted #查看有哪些文件被删除仍在被进程使用,删除该进程pid或者重启该服
      
    2. 本地服务器存储被作为中转,这种情况明显特点是df显示的结果在比较短的时间内忽高忽低
  2. du < df
    1. 这种情况比较少见,不过我遇到了。没啥说的,直接跟业务商量是否可以删除文件释放空间,最后清理了10T

df和du工作原理

df工作原理

  1. 读取每个分区的superblock来获取空闲数据块、已使用数据块,从而计算出空闲空间和已使用空间
  2. 速度快
  3. 会统计已删除但仍有进程引用的文件

du工作原理

  1. 通过stat统计每个文件的空间占用总和
  2. 速度慢
  3. 如果该目录下有挂载其它文件系统,也会进行统计
  4. 对于已删除,但仍有进程占用的文件,不会进行统计
posted @ 2020-05-05 17:40  wanwz  阅读(1013)  评论(0)    收藏  举报