Linux 磁盘告急别慌:从 98% 到 62% 的一次磁盘清理实战

举报
yd_229284667 发表于 2026/11/10 06:24:27 2026/11/10
【摘要】 周二凌晨,监控短信把我吵醒:生产机根分区使用率 98%,只剩不到 2GB。应用还没挂,但日志写不进去、定时任务开始报错,留给我的时间并不多。这次清理没有动任何业务数据,半小时后使用率回到 62%,过程记录如下。 一、先看整体,再找大户上来不要急着删。先用 df -h 确认是哪个分区满了,再用 du 定位:df -hdu -sh /* 2>/dev/null | sort -rh | head...

周二凌晨,监控短信把我吵醒:生产机根分区使用率 98%,只剩不到 2GB。应用还没挂,但日志写不进去、定时任务开始报错,留给我的时间并不多。这次清理没有动任何业务数据,半小时后使用率回到 62%,过程记录如下。

一、先看整体,再找大户

上来不要急着删。先用 df -h 确认是哪个分区满了,再用 du 定位:

df -h
du -sh /* 2>/dev/null | sort -rh | head
du -sh /var/log/* 2>/dev/null | sort -rh | head

那台机器上,/var 占了大头,其中 /var/log 和 /var/lib/docker 是两个大户。定位清楚再动手,是清理的第一原则。

二、日志是最安全的突破口

应用日志、系统日志往往可以安全瘦身,但要注意方法。正在被进程写入的日志不能直接 rm,删了文件句柄还在,空间不会释放,正确做法是截断:

echo > /var/log/app/app.log
journalctl --vacuum-size=500M
find /var/log -name "*.log.*" -mtime +30 -delete

同时检查 logrotate 是否在跑。很多机器的日志之所以失控,就是轮转配置缺失,或者应用自己写日志不走轮转。把日志按天切分、保留 14 天,基本能避免重蹈覆辙。

三、软件包缓存和旧内核

这一块收益常常被低估。apt 或 yum 的缓存、下载过的安装包、旧内核都可以清理:

apt-get autoclean && apt-get autoremove
yum clean all
dnf remove --oldinstallonly --setopt installonly_limit=2 kernel

注意不要删正在运行的内核,先用 uname -r 确认当前版本,只删更早的版本。一次清理出几个 GB 很常见。

四、Docker 和临时文件

装了 Docker 的机器要单独看。悬空镜像、无用的容器和卷会越积越多:

docker system df
docker system prune -a --volumes

prune 带 --volumes 会删未使用的卷,执行前务必确认没有重要数据。/tmp 下超过 7 天的文件、崩溃产生的 core 文件也可以定期清理,但不要用 rm -rf /tmp/* 一刀切,先列出来确认。

五、治本比清理更重要

清理完只是回到安全线,真正要做的是三件事:第一,给磁盘使用率设两级告警,80% 提醒、90% 电话;第二,把日志轮转和定期清理写进 cron,每周跑一次;第三,容量规划留有余量,业务增长快的目录单独挂盘,扩容时不用停机。

这次清理的经验很简单:磁盘满了先定位、再清理、最后治本。删之前多问一句“删了会不会影响业务”,比任何清理命令都重要。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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