针对磁盘inode使用率打满的问题,可通过以下步骤解决:
一、确认问题
- 检查inode使用率
执行命令:
若输出中df -iUse%列显示100%,即确认inode耗尽。
二、清理高占用文件/目录
-
定位高inode占用的目录
for i in /*; do echo $i; find $i 2>/dev/null | wc -l; done输出结果按文件数排序,文件数最高的目录即为占用源(如
/var,/tmp,/usr)。 -
逐层深入定位
进入高占用目录(以/var为例),重复上述命令:cd /var for i in *; do echo $i; find $i 2>/dev/null | wc -l; done逐步定位到具体子目录(如
/var/spool/postfix、日志目录/var/log或临时文件目录/tmp)。 -
清理策略
- 临时文件:清理
/tmp和/var/tmp目录:rm -rf /tmp/* /var/tmp/* - 日志文件:归档或删除旧日志(如 Nginx、Apache 日志):
truncate -s 0 /var/log/nginx/*.log # 清空日志(保留文件) find /var/log -type f -name "*.log" -mtime +30 -delete # 删除30天前日志 - 缓存文件:清理包管理器缓存(如apt、yum):
apt clean # Debian/Ubuntu yum clean all # CentOS/RHEL - 用户文件:检查用户目录(如
/home)是否有大量小文件(邮件、缓存等)。
- 临时文件:清理
三、扩展inode数量(终极方案)
若清理后仍不足,需重新格式化磁盘(注意:此操作会删除磁盘所有数据!):
- 备份数据
将磁盘数据完整备份至其他存储设备。 - 卸载磁盘分区
umount /dev/sdxN # 替换为实际分区(如 /dev/vdb1) - 重新格式化并指定inode数
mkfs.ext4 -N 2000000 /dev/sdxN # 设置200万inode(按需调整) - 恢复数据
将备份数据迁移回新分区。
四、预防措施
- 监控报警:定期运行
df -i,纳入系统监控工具(如Zabbix、Prometheus)。 - 日志轮替:配置
logrotate压缩/删除旧日志(如设置保留7天)。 - 避免小文件堆积:对易产生小文件的场景(如邮件、缓存)使用独立分区并分配充足inode。
- 定期维护:通过
find清理碎片文件(如废弃session文件、临时缓存)。
注意:
- 清理系统文件前务必确认文件用途,避免误删核心数据。
- 扩展inode需预留足够冗余(建议预留20%以上),避免频繁操作格式化。
1580

被折叠的 条评论
为什么被折叠?



