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 使用率设置告警,并让定时清理任务输出删除数量、失败数和执行耗时。