Linux磁盘inode耗尽导致无法写文件排查 Linux
前言
df 显示空间还很多,却报 No space left on device,多半是 inode 用完了。每个文件占用一个 inode,海量小文件会把 inode 耗尽而数据块还剩很多。本文讲解查 inode、定位小文件目录、清理和预防。
操作步骤
1. 查看 inode 使用情况
df -i
看 IUse% 是否到 100%。
2. 对比磁盘块空间
df -h
块空间充足但 inode 满即本问题。
3. 统计目录文件数量找元凶
find /var -type f | wc -l
4. 逐层定位小文件最多的目录
for d in /*; do echo -n "$d: "; find "$d" -type f 2>/dev/null | wc -l; done | sort -rn | head
5. 常见高发位置
session 目录、缓存、邮件队列、临时文件、日志碎片。
6. 清理无用小文件后复查
df -i
常见坑
- 只看 df -h,漏掉 df -i,误判为空间不足。
- 海量空文件、session 残留是主要来源。
- 删文件后进程句柄未释放,inode 不回落,需重启相关进程。
- find 全盘统计很慢,逐级缩小。
- 清理脚本误删业务 session 导致登录失效。
- 格式化时 inode 数量固定,无法事后扩容。
- 日志切割不当产生大量碎片文件。
总结
df -i 查 inode,df -h 看块空间,空间足却写不进就是 inode 满。find 逐层统计定位小文件目录,重点查 session/缓存/临时目录。清理后若 inode 不回落,检查是否有进程持有已删句柄。
遇到问题加QQ23979811 协助处理