linux中df和du查看磁盘大小不一致解决方法

挂了一块50G到/data目录下
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 50G 46G 1.2G 98% /data
显示已经使用快50G空间了

可是在/data 下用 du -sh . 只显示使用了19G

导致这个两个命令查看磁盘容量不一致的原因是,用户删除了大量的文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它。然而如果此时还有运行的进程持有这个已经被删除的文件句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改,df仍会统计这个被删除的文件。

可通过 lsof命令查询处于deleted状态的文件,被删除的文件在系统中被标记为deleted。如果系统有大量deleted状态的文件,会导致du和df统计结果不一致。    

#lsof |grep deleted       //在opt目录下执行lsof |grep deleted 

解决方法:(来自阿里云)

1、根据lsof列出的pid直接kill相应进程或者重启对应的服务。示例:

kill -9 692

注:如果服务器正在运行业务,kill 会导致进程直接终止,可能会影响到业务,请慎重操作。

2、重启服务器。

重启服务器系统会退出现有的进程,开机后重新加载。该过程会释放调用的deleted文件的句柄。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择。 df可以查看一级文件夹大小、使用比...
    写代码的杰西阅读 5,151评论 0 0
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,235评论 2 33
  • 学习使用(文章并非本人所写) 1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序...
    kiwili阅读 4,179评论 0 1
  • 1. 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 绝对路径:如...
    许小小晴阅读 3,207评论 0 0
  • 装逼失败。他送我的第一个东西。小东西。 我即将有大礼要送他。 看他老是非常关心我生活周边所需。然而我没他那么多细心...
    浅浅圈圈阅读 1,090评论 0 0

友情链接更多精彩内容