服务器磁盘又满了?df、du、journalctl 三板斧快速定位

举报
yd_255726501 发表于 2026/11/03 11:43:42 2026/11/03
【摘要】 半夜收到监控告警“磁盘使用率 92%”,别急着扩容,先花五分钟定位到底是谁吃掉了空间。下面三条命令,基本能覆盖九成场景。 一、先看大盘:df -hdf -h 看每个挂载点的使用率。重点看 Use% 和 Mounted on 两列,先确认是哪块盘满了。很多新手一上来就 du /,在根目录满扫半天,效率很低。先 df 定盘,再 du 定目录,顺序别反。 二、逐层下钻:du 排序锁定目录后,用 d...

半夜收到监控告警“磁盘使用率 92%”,别急着扩容,先花五分钟定位到底是谁吃掉了空间。下面三条命令,基本能覆盖九成场景。

一、先看大盘:df -h

df -h 看每个挂载点的使用率。重点看 Use% 和 Mounted on 两列,先确认是哪块盘满了。很多新手一上来就 du /,在根目录满扫半天,效率很低。先 df 定盘,再 du 定目录,顺序别反。

二、逐层下钻:du 排序

锁定目录后,用 du 配合排序看子目录大小,一层层往下钻:

du -sh /var/* | sort -rh | head -10

几秒钟就能揪出最大的几个目录。常见的“凶手”:/var/log 下的旧日志、/var/lib/docker 的悬空镜像和容器日志、/tmp 堆积的临时文件、某个应用的 core dump。

三、日志专项:journalctl

systemd 的日志默认存在 /var/log/journal,长期不清理会膨胀到几个 G。先看占用:

journalctl --disk-usage

再按服务看谁在刷屏:

journalctl -p err -b --no-pager | head -30

清理时别直接删文件,用 journalctl --vacuum-size=200M 或 --vacuum-time=7d 让系统自己回收,安全又干净。

四、两个真实踩坑

  1. Docker 容器日志:某个容器的 json-file 日志几个月没轮转,单文件 18G。治标:truncate -s 0 容器日志文件;治本:在 daemon.json 里配 log-opts(max-size、max-file),让日志自动轮转。
  2. 被删掉但没释放的文件:du 和 df 对不上时,用 lsof | grep deleted 看看——进程还 holding 着已删除文件的句柄,空间不会释放。重启对应进程即可。

五、小结

df 定盘 → du 定目录 → journalctl 查日志,三步走完,九成磁盘问题都有答案。最后一条铁律:删文件前先确认归属,生产环境不确定的文件先 mv 到别处观察一天,别直接 rm -rf。磁盘问题不可怕,可怕的是慌起来乱删。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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