df 显示磁盘用了 100%,du 一算却远不到,是不是见鬼了?其实就那几种原因。

1. 已删除但还被进程占用的文件
最常见。日志被删了,写日志的进程没重启,空间没释放。lsof | grep deleted 找出来,重启对应进程或清空对应 fd。

2. inode 耗尽
df -i 看一眼。小文件太多(比如失控的 session 文件、邮件队列),block 还剩很多但 inode 用完了,照样写不进去。

3. 挂载点被"盖住"
umount 之后往挂载目录里写过文件,重新 mount 后那部分空间"消失"了。umount 后检查挂载点目录是否为空。

4. 日志轮转没配好
logrotate 配了但 postrotate 没 reload 服务,旧日志句柄一直占着。先治标(清句柄),再治本(修 logrotate 配置)。

5. 还有保留块
ext4 默认给 root 留 5% 保留块,tune2fs -m 1 可以调小,数据盘上这 5% 纯属浪费。

排查顺序建议:df -h → df -i → lsof deleted → 检查挂载点。你还遇到过哪些"灵异"磁盘问题?