inode 用尽,df -h 还显示有空间
站点图片上传失败,磁盘 df -h 还剩 40%。df -i 才看见 inode 100%。小文件把编号用光了,空间还在。
从哪来的
验证码和编辑器临时目录按天扔文件,没有人回收。几年下来,几百万个几 KB 的文件。目录本身 ls 都费劲。
df -i
find /tmp/upload -type f | wc -l
ls -U /tmp/upload | head
ls -U 不排序,目录巨大时比默认 ls 友善一点。删文件用 find,不要把数百万文件一次扩到 shell。
find /tmp/upload -type f -mtime +7 -delete
以后
- 临时文件按天分子目录,到期删整目录。
- 上传成功立刻挪走,失败的用 cron 清。
- 监控同时看空间和 inode,只看百分比会漏。
这事不玄。就是小文件多了,编号先于容量用完。