df 与 du 大小不一致的错误
in Linux with 0 comment

df 与 du 大小不一致的错误

?> with 0 comment

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

磁盘大小

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

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

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

消失的空间

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

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

得到如下结果

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查看磁盘空间。

目测就恢复正常了。

Responses

From now on, bravely dream and run toward that dream.
陕ICP备17001447号·苏公网安备 32059002001895号