Linux 磁盘空间告警:从 df 到 du 的排查顺序
【摘要】 磁盘空间告警最常见也最容易走弯路:看到根分区 100% 就直接删日志,结果删错文件、服务反而起不来。按下面这个顺序排查,先定位,再清理,最后防复发。 第一步:先看整体,用 df 确认是哪个分区满了df -h重点看 Use% 和 Mounted on:是根分区 / 满,还是 /var、/data 等数据分区满。不同分区满,处理方式完全不同,先别急着删。 第二步:用 du 定位大目录,一层一层往...
磁盘空间告警最常见也最容易走弯路:看到根分区 100% 就直接删日志,结果删错文件、服务反而起不来。按下面这个顺序排查,先定位,再清理,最后防复发。
第一步:先看整体,用 df 确认是哪个分区满了
df -h
重点看 Use% 和 Mounted on:是根分区 / 满,还是 /var、/data 等数据分区满。不同分区满,处理方式完全不同,先别急着删。
第二步:用 du 定位大目录,一层一层往下钻
du -sh /* 2>/dev/null | sort -rh | head -20
du -sh /var/log/* 2>/dev/null | sort -rh | head -20
先看顶层,再进可疑目录逐层钻。注意 du 看到的是目录实际占用,和 df 有时对不上,这就是下一步要查的。
第三步:df 与 du 对不上?查已删除但未释放的文件
lsof | grep deleted
日志文件被删了,但进程还拿着句柄,空间就不会释放。这时删文件没用,要重启对应服务或让进程重新打开日志,例如对日志做轮转后 reload 服务。
第四步:按类型清理,不要一刀切
- 日志:优先用 logrotate 轮转压缩,而不是直接 rm -rf /var/log;
- 缓存与临时文件:确认无用后再清,注意不要动正在运行的服务依赖的临时文件;
- 旧备份与安装包:按保留策略删除,删前确认备份是否已异地留存;
- Docker 环境:先看 docker system df,清理无用镜像与悬空卷之前先确认没有容器依赖它们。
第五步:清理后复核,并把告警阈值做在前面
df -h
df -i
除了空间,还要看 inode(df -i):小文件太多时空间没满、inode 先满,同样会写不进文件。日常做法是:日志轮转、磁盘使用率 80% 预警、定期清理任务三件套一起上,告警来了才处理就晚了。
总结:df 定分区、du 定目录、lsof 查未释放、按类型清理、最后复核并设预警。这个顺序不变,磁盘告警就不会越清越乱。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)