首页/系统/信创系统运维速查/inode 耗尽(有空间写不进)
常见问题65 条

inode 耗尽(有空间写不进)

磁盘显示还有空间却写入报 No space left:完 df -i 确认 inode,再定位海量小文件目录,按业务归属清理或调整落盘策略。

信创系统运维速查系统更新于 2026-10-13

有空间却写不进去

文件系统同时受两种资源约束:数据块与索引节点。数据块对应能存多少字节,索引节点对应能建多少个文件。磁盘使用率显示还有余量,但索引节点被海量小文件耗尽时,任何创建新文件的操作都会失败,报空间不足,很容易被误判为磁盘故障。

海量小文件从哪来

常见来源是邮件队列、会话文件、缓存碎片、监控打点的临时文件,以及因程序缺陷不断重试写入而堆积的小文件。定位时按目录逐层统计文件数量,找到数量异常的那一层,再结合服务的业务特征判断是正常积累还是程序缺陷。

基本信息

查看命令带索引节点参数的磁盘用量统计
定位方式按目录统计文件数量,逐层缩小范围
处理原则先确认目录归属业务,再清理或调整策略
长期方案合并小文件、独立挂载点、修改落盘策略

典型使用场景

  • 应用报空间不足但磁盘使用率并不高
  • 监控打点或缓存目录在小文件高峰后耗尽索引节点
  • 邮件服务队列异常堆积,影响其他服务写入
  • 迁移前评估目标盘的文件数量承载能力
  • 巡检后发现索引节点使用率长期高位

确认与定位

确认与定位
df -i                                      # 各挂载点的索引节点用量
find /var -xdev -type f 2>/dev/null | wc -l   # 候选目录的文件数量
du -s --inodes /var/* 2>/dev/null | sort -n | tail -10   # 按目录排序找大头
ls /var/spool/ 2>/dev/null                   # 常见的队列与小文件集中区
# 大树统计较慢,按目录逐层缩小范围

处理

处理
# 确认目录归属业务后再清理,示例:
find /var/spool/postfix -type f -mtime +7 | head    # 先看清单再决定
find /var/tmp -type f -mtime +7 | head
# 长期方案:
# 1) 把高频小文件目录独立挂载,避免影响系统盘
# 2) 调整应用落盘策略,合并小文件或提高单文件粒度
# 3) 把索引节点使用率纳入监控告警

判断与方向

现象可能原因方向
写入报空间不足但空间有余索引节点耗尽统计索引节点用量确认
统计文件数量耗时很长目录内文件数量极大逐层缩小统计范围
清理后很快再次耗尽应用持续生成小文件修程序或调整落盘策略
只影响某个目录该目录所在挂载点独立针对性清理并规划独立盘
多个目录同时告警系统盘共用考虑拆分挂载点
删除文件前确认目录归属与用途;数据库或应用数据目录内文件异常增多时,应先查清程序行为,而不是直接批量删除,否则可能破坏业务数据。

易错点

  • 磁盘还有空间就排除了磁盘问题,漏掉索引节点这一维度,排查方向完全跑偏
  • 在海量小文件目录里直接执行递归删除,耗时极长且影响 IO,应该先看清单再分批处理
  • 清理后不做根因处理,应用继续生成小文件,几天后又回到耗尽状态
  • 把索引节点使用率排除在监控之外,问题往往是业务报错时才被发现

数据来源与参考

  • man 1 df
  • man 1 find
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌