du和df显示磁盘空间使用差异大的几种情况

        接触客户多了,发现经常有客户遇到du看到系统只使用了一部分磁盘空间,但df看时磁盘空间已经满了,或者差异较大,我遇到过三次不一样的原因,下面做一下总结,恶补一下!也希望对大家有点帮助!

现象:有客户反馈有二台主机du和df看到磁盘空间使用不一致

        

原因:客户在挂载数据盘到/data目录之前,曾挂载过系统盘到/data测试并把系统盘空间写满

解决:发现重复挂载之后,先卸载数据盘,现在只有系统盘挂载到/data目录,然后删除/data下内容,重新挂载数据盘到/data目录即可

总结:

1.du是根据看到文件的大小来统计磁盘空间的使用情况,即所见即所得,du -sh /  或者 du -sh /*

    df是根据元数据获取的,就是读取分区的超级块信息来统计分区的的使用情况的(比du看到的记过更准确), df -hT

2.du和df不一致的几种情况分析

   1)可能由于删除了正在使用中的文件,导致文件被删除,但进程和超级块信息并没有释放。

         解决:lsof |grep -i delete 过滤下是否有相关进程未释放,kill掉相关进程即可。

                   删除这种正在写入的文件(一般都是日志类的),最好用“echo > 文件名“的方式来清零文件。

   2)可能某些目录被其他磁盘重复挂载导致。

        解决:1)可以先用df -hT 看下相关挂载目录。2)用mount |grep 目录  过滤一下是否有重复挂载,也可以mount -o remount 一下fstab文件。

   3)可能预留空间较多导致,df统计的时候会把系统预留的空间也给 算上是使用的了。

        查看:tune2fs -l 设备名 查看系统的超级块信息,看看预留多少空间。也可以用tune2fs命令更改。

   4)也有可能是空洞文件导致的

原文地址:https://www.cnblogs.com/Tao9/p/7763347.html