inode-exhausted

inode 耗尽的定位与修复

现象

df -h 显示还有空间,但创建文件报 No space left on device;df -i 显示 inode 使用率 100%。常见于大量小文件的目录。

快速定位

df -i
du --inodes -x --max-depth=1 / 2>/dev/null | sort -n | tail
find /var -xdev -type f 2>/dev/null | wc -l
find /var/spool -xdev -type f 2>/dev/null | wc -l
find / -xdev -type d -links 2 2>/dev/null | head

常见高 inode 目录:

du --inodes -x --max-depth=2 /var 2>/dev/null | sort -n | tail -20

常见根因

  1. 缓存、session、邮件队列、临时文件产生海量小文件。
  2. 日志按请求/按日期切分过细,或轮转后未清理。
  3. node_modules、构建缓存、容器层里的小文件。
  4. 应用把每个请求写成独立文件。
  5. ext4 创建时 inode 数量按比例分配,后期无法在线增加。

修复

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. df -h 显示还有空间,但创建文件报 No space left on device,应优先看什么?
  2. 如何找出 inode 占用最多的目录?
  3. ext4 的 inode 用完后能在线扩容吗?
答案
  1. 看 df -i 的 inode 使用率。页面指出这通常就是 inode 耗尽,而不是块空间不足。
  2. 用 du --inodes -x --max-depth=1 / 排序。配合 find 统计 /var/spool 等目录的小文件数量。
  3. 通常需要重建文件系统,不能简单在线增加。应提前规划 inode 比例或改用 xfs。