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