上一篇 下一篇 分享链接 返回 返回顶部

Linux系统inode占满排查与清理实操指南

发布人: 发布时间:15小时前 阅读量:4

inode占满现象与影响

当Linux文件系统的inode耗尽时,即使磁盘仍有剩余空间,也无法创建新文件、目录或软链接,系统会提示“No space left on device”(实际是inode不足)。常见表现为:无法写入日志、无法安装软件包、部分服务启动失败。

第一步:检查inode使用情况

使用df -i命令查看各分区的inode总数、已用inode数量及使用百分比:

df -i | grep -v tmpfs

重点关注Use%接近100%的分区。若发现某分区inode使用率过高,进入下一步排查。

第二步:定位占用inode的目录

从根目录开始,逐层统计目录下的文件数量(包括子目录中的文件),快速锁定“小文件密集区”:

  1. 统计根目录下各一级目录的文件数(-sort选项按大小排序):
    for i in /*; do echo "$i: $(find $i -xdev -type f | wc -l)"; done | sort -t: -k2 -rn | head -20
  2. 根据结果进入数量最多的目录,重复上述命令,直到找到具体的“重灾区”子目录。

更简便的方法使用ncdu工具(需先安装):ncdu /,可以直观查看目录容量和文件数量。但注意ncdu默认统计的是磁盘容量,不是inode数。建议使用find /path -xdev -type f | wc -l结合目录遍历自行判断。

第三步:清理占用inode的文件

3.1 删除无用的临时文件

常见目录:/tmp/var/tmp/var/spool下打印任务缓存、/var/log下的轮转日志(特别是大量小日志)。

  • 清空超过7天的临时文件:find /tmp -type f -atime +7 -delete
  • 清理历史日志:find /var/log -name "*.log.*" -mtime +30 -delete

3.2 删除小文件后释放inode

若目录中存在大量0字节空文件或极小文件,可使用find批量删除:

find /path -type f -size 0 -delete # 删除空文件
find /path -type f -size -1k -delete # 删除小于1KB的文件(谨慎使用)

3.3 移除空目录

空目录也占用inode(每个目录至少占用一个inode)。删除空目录:find /path -type d -empty -delete

注意:执行删除前建议先测试,如用-exec echo {}代替-delete,确认无误后再执行。

第四步:预防inode耗尽

  • 合理规划分区:/var/tmp等可能产生大量小文件的分区分配足够多的inode(格式化时指定-i 2048可增加inode数量,但会减少可用数据空间)。
  • 设置日志轮转策略:使用logrotate限制日志文件数量和保留时间,避免日志目录堆积。
  • 监控报警:利用Zabbix、Prometheus等工具监控df -i的使用率,设置报警阈值(如大于80%)。

总结

inode占满虽不常见,但一旦发生会导致服务异常。通过df -i快速定位问题分区,配合find命令逐层排查小文件目录,清理无用文件即可恢复。建议定期检查关键分区的inode使用率,做好自动化监控。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com