服务器目录爆满、inode耗尽运维解决
当服务器出现目录爆满或inode耗尽时,会导致系统无法写入新数据、服务异常甚至崩溃。以下是详细的排查和解决方法:一、目录空间爆满(磁盘使用率100%)
1. 定位大文件/目录
[*]查看磁盘使用情况:
df -h# 查看各分区使用率
[*]定位具体目录:
du -h --max-depth=1 /# 从根目录开始,逐级查找大目录
# 或使用更高效的工具(如ncdu)
ncdu /
2. 清理无用文件
[*]日志文件:
检查 /var/log/ 下的日志(如 messages, nginx/access.log),清理或轮转:
# 清理旧日志(示例)
rm -f /var/log/old_log_*.log
# 或使用logrotate配置自动轮转
[*]临时文件:
清理 /tmp/、缓存目录(如 /var/cache/)或应用生成的临时文件。
[*]核心转储文件:
删除 /var/core/ 或应用目录下的 core.* 文件。
3. 扩展存储(可选)
[*]如果清理后空间仍不足,考虑:
[*]扩容磁盘或分区。
[*]挂载新磁盘到特定目录(如 /data)。
二、inode耗尽(No space left on device)
1. 检查inode使用情况
df -i# 查看各分区inode使用率
[*]若某分区inode使用率100%,需清理小文件。
2. 定位inode占用高的目录
# 遍历目录统计文件数量(示例)
for i in /*; do echo $i; find $i | wc -l; done
# 或使用find命令快速定位
find /path/to/dir -xdev -type f | cut -d "/" -f 2- | sort | uniq -c | sort -nr
3. 清理小文件
[*]应用临时文件:
检查应用是否生成大量小文件(如缓存、会话文件),清理后重启服务。
[*]邮件/队列文件:
清理 /var/spool/ 下的邮件或任务队列。
[*]容器/虚拟化文件:
若使用Docker/KVM,清理无用镜像、容器或虚拟磁盘。
4. 预防措施
[*]调整文件存储策略:
避免在单个目录存放过多文件,可按日期/哈希分目录存储。
[*]监控inode使用:
通过 df -i 或Prometheus等工具监控,设置告警。
三、通用优化建议
[*]日志管理:
[*]配置 logrotate 定期压缩、轮转日志。
[*]禁用不必要的调试日志。
[*]自动化清理:
[*]编写脚本定期清理临时文件(如通过 cron 执行)。
[*]文件系统选择:
[*]若业务产生大量小文件,考虑使用XFS(比ext4支持更多inode)。
[*]监控告警:
[*]使用Zabbix、Prometheus等监控磁盘和inode使用率,触发告警及时处理。
四、紧急恢复
[*]快速释放inode:
删除大量小文件(如 find /path -type f -name "*.tmp" -delete)。
[*]挂载新分区:
若当前分区无法扩展,可挂载新磁盘到高负载目录(如 /var/lib/docker)。
总结步骤
[*]诊断:通过 df -h 和 df -i 确认是空间还是inode问题。
[*]定位:使用 du 或 find 找到占用资源的大文件/目录。
[*]清理:优先删除无用文件(日志、临时文件、缓存)。
[*]预防:优化存储策略、配置监控和自动化清理。
通过以上步骤,可快速恢复服务器正常运行并避免问题复发。
页:
[1]