Linux 磁盘空间告急:从 df 到 ncdu 的排查与清理实战

举报
yd_61455462 发表于 2026/11/10 10:39:29 2026/11/10
【摘要】 磁盘满了服务就跟着倒。本文按 df 看总量、du 找大目录、ncdu 交互定位、journalctl 与日志轮转清空间的顺序,给出一套十分钟内恢复的排查流程。

磁盘空间告急是最常见的半夜报警:服务写不进日志、数据库拒绝写入、上传直接失败。慌着删文件之前,先定位——很多时候罪魁祸首只有一个大目录,找对它十分钟就能恢复。

第一步:df 看总量,确认是哪块盘

先跑 df -h,看哪个挂载点用了 100%。根分区满和数据盘满是两回事:根分区满先查 /var/log 和 /tmp,数据盘满先查业务目录。顺手跑 df -i 看一眼 inode:文件数耗尽时磁盘明明还有空间,照样写不进去,这种情况删大文件没用,得清掉成千上万的小文件。

第二步:du 逐层下钻,找到大目录

从根目录开始,du -h --max-depth=1 / | sort -rh | head,看哪一项最大,再进那一级继续下钻。两次下钻基本就能锁定目录。注意 du 看到的是实际占用,删了文件但进程还占着句柄时,空间不会释放——lsof | grep deleted 能找出这些"已删未放"的文件,重启对应进程才是正解。

第三步:ncdu 交互定位,快得多

经常排查的话装一个 ncdu:ncdu / 一打开就是按大小排好的目录树,方向键进出、d 直接删。比 du 一层层敲命令快得多,适合不熟悉目录结构的机器。删之前先确认目录归属,系统目录和数据库数据目录不要手滑。

第四步:日志是头号嫌疑犯

大多数磁盘爆满都是日志。journalctl --disk-usage 看 systemd 日志占了多少,journalctl --vacuum-size=500M 能立刻回收。应用日志看 logrotate 配没配好:没配的服务日志会无限长,配好轮转加压缩,保留 7 天基本够用。Docker 环境别忘了 docker system df,悬空镜像和没清的日志经常悄悄吃掉几十 GB。

第五步:治本——告警与配额

清完空间顺手做两件事:磁盘用量到 80% 就告警,别等到 100% 才处理;给日志目录和上传目录做定期清理脚本,放到 cron 里每周跑一次。磁盘满不是技术问题,是没人提前看一眼的问题。

总结一下顺序:df 定盘、du 下钻、ncdu 定位、日志先清、告警兜底。按这个流程走,磁盘告急从半夜抢修变成十分钟的常规操作。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。