df 与 du 大小不一致的错误

半夜突然被报警惊醒,提示磁盘空间不足。

磁盘大小

到服务器上,df -lh 查看
1593396038.png
根目录的确利用率有 92% 了

然后使用 sudo du -lh --max-depth=1 查看是哪个文件占了空间
1593396124.png

发现 / 目录下的文件都很小啊,根本不可能占到 400G

消失的空间

翻阅了很多文档,最后基本可以确认,硬盘空间消失是因为删除的文件被其他程序引用,导致空间无法回收,所以解决的方法也很简单,找到引用文件的相关进程,然后停掉进程让空间回收即可,查找引用已删除文件的方法如下:

1
2
# 按已删除文件大小逆向排序
lsof -s|grep deleted|sort -nr -k7|less

得到如下结果

1
2
3
4
vim       36597              yiyiyi    4u      REG              252,1 363990667264   19398909 /data/zai-model/.xxx.txt.swp (deleted)
java 5598 wangwangwang 481r REG 252,1 769386947 5928804 /home/wangwangwang/assembly.jar (deleted)
java 29212 wangwangwang 5r REG 252,1 569575444 9964501 /home/wangwangwang/assembly.jar (deleted)
java 22940 wangwangwang 5r REG 252,1 569575440 9964633 /home/wangwangwang/assembly.jar (deleted)

把 pid 为 36597 的进程删除,再次用df查看磁盘空间。

目测就恢复正常了。

df 与 du 大小不一致的错误

https://iii.run/archives/334c29f04537.html

作者

mmmwhy

发布于

2020-06-29

更新于

2022-10-08

许可协议

评论