先用 df -i 确认 inode 耗尽(use% 接近 100%),再用 df -h 验证磁盘空间充足;最后用 find /var/log -type f -name "*.log" 查找大量小日志碎片文件。

用 find 找出小于 10MB 的日志碎片并集中处理,核心目标是释放 inode(而非磁盘空间),关键在于识别、归档或清理大量小文件——这类文件虽占空间少,但每个都消耗一个 inode,容易触发 “No space left on device” 报错(实际是 inodes 耗尽)。
先确认是否真为 inode 耗尽
运行以下命令检查:
-
df -i—— 查看各挂载点的 inode 使用率,重点关注Use%列。若某分区接近 100%,就是问题根源 -
df -h—— 对照看磁盘空间是否充足(通常此时Use%磁盘很低,但inode很高) -
find /var/log -type f -name "*.log" | head -20—— 快速观察日志目录下是否存在大量带时间戳或编号的零散小文件(如app.log.1、nginx-access.log-20260525.gz、debug_20260527_001234.log)
精准定位
-size -10M 表示“严格小于 10MB”,但需配合类型和路径限制,避免误伤系统文件:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 查
/var/log下所有普通日志文件(排除目录、软链):find /var/log -type f -name "*.log*" -size -10M - 扩展匹配常见压缩日志:
find /var/log -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" -o -name "*.xz" \) -size -10M - 加
-mtime +7只找 7 天前的小日志(更安全,保留近期调试用):find /var/log -type f -name "*.log*" -size -10M -mtime +7
集中处理:归档代替删除,兼顾审计与 inode 释放
直接 rm 风险高;推荐打包压缩后统一移走——单个 tar 包只占 1 个 inode,却可容纳成千上万个小文件:
- 将找到的小日志打包到
/tmp/archived-logs.tar.gz:find /var/log -type f -name "*.log*" -size -10M -mtime +7 -print0 | tar -czf /tmp/archived-logs.tar.gz --null -T - - 验证归档完整性:
tar -tzf /tmp/archived-logs.tar.gz | head -10 - 确认无误后批量删除源文件:
find /var/log -type f -name "*.log*" -size -10M -mtime +7 -delete
(注意:-delete是 find 内置动作,比-exec rm {} \;更高效安全)
长期防控:用 logrotate 规范日志生命周期
手动清理治标不治本。应检查并配置 /etc/logrotate.d/ 下对应服务的日志轮转规则,例如确保包含:
-
size 10M—— 单个日志达 10MB 即轮转,防止单文件过大 -
rotate 5—— 最多保留 5 个旧日志,超量自动删除 -
compress—— 自动 gzip 压缩,减少 inode 和空间占用 -
maxage 30—— 超过 30 天的日志强制清理(比rotate更彻底)
改完后执行 logrotate -d /etc/logrotate.conf 测试语法,再用 logrotate -f /etc/logrotate.conf 强制运行一次验证。










