磁盘还有空间却无法写入:inode 耗尽排查

识别 inode 用尽、定位小文件热点,并设计兼顾恢复速度与长期治理的处理方案。

文章目录 · 4 节

df -h 显示磁盘仍有余量,但创建文件时报 No space left on device,很可能是 inode 已耗尽。缓存、会话文件和失控日志目录尤其容易制造海量小文件。

确认文件系统状态

df -hT
df -i
mount | column -t

IUse% 接近 100% 即可确认方向。注意容器 overlay、独立挂载点和宿主机根分区可能是不同文件系统,必须检查真正报错的路径。

定位小文件热点

du --inodes -x -d 2 /var | sort -n | tail -30
find /var/lib/app -xdev -type f -printf '%h\n' | sort | uniq -c | sort -nr | head

生产环境不要直接从 / 执行无限深度 find。先按挂载点和一级目录缩小范围,并关注命令本身带来的 I/O 压力。

恢复与治理

  • 按保留策略批量清理过期缓存,不盲删未知文件
  • 删除前确认进程是否仍依赖路径和目录结构
  • 将小文件聚合到对象存储、数据库或归档文件
  • 新建文件系统时根据文件尺寸模型规划 inode 密度

收尾清单

清理后同时验证 df -i、应用写入和监控恢复。为 inode 使用率设置告警,并让定时清理任务输出删除数量、失败数和执行耗时。