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

常见坑

  1. 只看 df -h,漏掉 df -i,误判为空间不足。
  2. 海量空文件、session 残留是主要来源。
  3. 删文件后进程句柄未释放,inode 不回落,需重启相关进程。
  4. find 全盘统计很慢,逐级缩小。
  5. 清理脚本误删业务 session 导致登录失效。
  6. 格式化时 inode 数量固定,无法事后扩容。
  7. 日志切割不当产生大量碎片文件。

总结

df -i 查 inode,df -h 看块空间,空间足却写不进就是 inode 满。find 逐层统计定位小文件目录,重点查 session/缓存/临时目录。清理后若 inode 不回落,检查是否有进程持有已删句柄。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-11-15 07:11 
'); })();