Linux磁盘inode使用率打满问题处理方案

发布于:2025-09-05 ⋅ 阅读:(12) ⋅ 点赞:(0)

针对磁盘inode使用率打满的问题,可通过以下步骤解决:


一、确认问题

  1. 检查inode使用率
    执行命令:
    df -i
    
    若输出中Use%列显示100%,即确认inode耗尽。

二、清理高占用文件/目录

  1. 定位高inode占用的目录

    for i in /*; do echo $i; find $i 2>/dev/null | wc -l; done
    

    输出结果按文件数排序,文件数最高的目录即为占用源(如 /var, /tmp, /usr)。

  2. 逐层深入定位
    进入高占用目录(以/var为例),重复上述命令:

    cd /var
    for i in *; do echo $i; find $i 2>/dev/null | wc -l; done
    

    逐步定位到具体子目录(如/var/spool/postfix、日志目录/var/log或临时文件目录/tmp)。

  3. 清理策略

    • 临时文件:清理 /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数量(终极方案)

若清理后仍不足,需重新格式化磁盘(注意:此操作会删除磁盘所有数据!):

  1. 备份数据
    将磁盘数据完整备份至其他存储设备。
  2. 卸载磁盘分区
    umount /dev/sdxN   # 替换为实际分区(如 /dev/vdb1)
    
  3. 重新格式化并指定inode数
    mkfs.ext4 -N 2000000 /dev/sdxN  # 设置200万inode(按需调整)
    
  4. 恢复数据
    将备份数据迁移回新分区。

四、预防措施

  • 监控报警:定期运行 df -i,纳入系统监控工具(如Zabbix、Prometheus)。
  • 日志轮替:配置 logrotate 压缩/删除旧日志(如设置保留7天)。
  • 避免小文件堆积:对易产生小文件的场景(如邮件、缓存)使用独立分区并分配充足inode。
  • 定期维护:通过 find 清理碎片文件(如废弃session文件、临时缓存)。

注意

  • 清理系统文件前务必确认文件用途,避免误删核心数据。
  • 扩展inode需预留足够冗余(建议预留20%以上),避免频繁操作格式化。

网站公告

今日签到

点亮在社区的每一天
去签到