问题场景
生产环境磁盘使用率突破阈值,需要快速定位空间占用源并制定清理策略。
诊断链路
1. 全局视图:df定位分区
bash
df -h # 人类可读格式
df -i # 检查inode耗尽情况
2. 目录级排查:du统计占用
bash
# 一级目录占用排序
du -sh /* 2>/dev/null | sort -hr | head -10
# 深度遍历(谨慎使用)
du -h --max-depth=2 /var | sort -hr | head -20
3. 文件级定位:find精准打击
bash
# 查找大文件(>100MB)
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
# 查找最近7天修改的大文件
find /var/log -type f -mtime -7 -size +50M
常见陷阱
陷阱1:已删除文件未释放空间
bash
lsof | grep deleted
# 需要重启占用进程或kill -HUP
陷阱2:隐藏的Docker占用
bash
docker system df # 查看Docker空间占用
docker system prune -a --volumes # 清理悬空资源
陷阱3:inode耗尽但空间充足
bash
df -i # 检查inode使用率
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
预防措施
- 配置logrotate自动轮转日志
- 设置磁盘使用率告警(建议80%阈值)
- 定期清理临时文件和旧备份
- 监控Docker镜像和容器数量