inode耗尽是小文件炸弹,表现为磁盘有空间却报“no space left on device”;需分四步排查:df -i确认瓶颈、du --inodes定位高危目录、find/inotifywait锁定实时源头、建立df -i监控与logrotate等预防机制。

Inode耗尽就是典型的小文件炸弹——磁盘空间还有余量,但系统突然拒绝创建任何新文件,报错“No space left on device”。识别它不靠猜,而靠分层监测:先确认是否真为Inode瓶颈,再定位异常目录,最后锁定生成源头。
第一步:用df -i快速确认Inode瓶颈
执行df -i,重点看IUse%列:
- 某挂载点IUse% ≥ 90%,且对应df -h显示仍有空间 → 高概率是小文件炸弹前兆
- 出现100%但df -h未满 → 基本确认Inode已耗尽,服务可能已开始异常(如Web上传失败、日志写入中断)
- 注意对比根分区(/)和独立挂载点(如/var、/home、/data),问题常集中在非根分区
第二步:用du --inodes精准定位“文件大户”目录
在可疑挂载点下运行:du --inodes -S /path | sort -nr | head -10,它会按Inode占用量倒序列出Top 10目录。常见高危路径包括:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- /var/log/ 下未轮转的旧日志(如nginx/access.log.*、journal/归档)
- /var/lib/php/sessions 或 /tmp 中堆积的临时会话文件
- /var/spool/postfix/maildrop 等邮件队列残留
- /var/lib/docker/overlay2 中未清理的容器层(尤其频繁启停的CI/CD容器)
第三步:结合find与实时监控锁定“炸弹源头”
仅看静态快照不够,需判断是否仍在持续生成:
- 对疑似目录执行:find /path -maxdepth 1 -type f -mmin -5 | wc -l,检查最近5分钟是否有新增文件
- 用inotifywait -m -e create,delete_self /path观察实时增删节奏(需安装inotify-tools)
- 排查定时任务:crontab -l 和 ls /etc/cron.*/,关注高频写入脚本(如每分钟采集指标、每小时解压缓存)
- 检查应用配置:Nginx的proxy_temp_path、Redis的dir和dbfilename、Java应用的-Djava.io.tmpdir等路径是否指向Inode紧张的分区
第四步:建立常态化监控防线
小文件炸弹重在预防,不是等爆了再救火:
- 将df -i | awk '$5 ~ /%/ {sub(/%/,"",$5); if($5 > 85) print $1}'加入Zabbix或Prometheus告警规则,阈值设为85%
- 对高风险目录(如/var/log/nginx)强制启用logrotate,并配置maxage 7和compress
- 新建文件系统时预估小文件规模:用mkfs.ext4 -i 4096 /dev/sdb1提升Inode密度(默认16KB/个,改为4KB/个可增4倍Inode)
- 为上传服务、缓存等高频小文件场景,单独挂载ext4分区并使用-T largefile或-T news参数优化inode分配策略










