云服务器磁盘空间告急:一套快速定位与清理的实用流程

举报
yd_275727902 发表于 2026/10/27 10:42:42 2026/10/27
【摘要】 在云服务器上跑业务,磁盘被悄悄写满是很常见的故障:服务写不进日志、数据库报错、容器节点触发 DiskPressure。下面是我平时处理这类问题的一套流程,按顺序做基本都能快速解决。一、确认是哪个分区满了先执行 df -h,看各挂载点的使用率。还要顺手执行 df -i 看 inode:有时容量没满,但大量小文件(如会话文件、缓存)把 inode 耗尽了,一样会报 No space left o...

在云服务器上跑业务,磁盘被悄悄写满是很常见的故障:服务写不进日志、数据库报错、容器节点触发 DiskPressure。下面是我平时处理这类问题的一套流程,按顺序做基本都能快速解决。

一、确认是哪个分区满了

先执行 df -h,看各挂载点的使用率。还要顺手执行 df -i 看 inode:有时容量没满,但大量小文件(如会话文件、缓存)把 inode 耗尽了,一样会报 No space left on device。

二、定位大目录和大文件

从满的分区根目录开始,用 du -xh --max-depth=1 / | sort -rh | head 逐层往下找,-x 可以避免跨分区统计。也可以直接找大文件:find / -xdev -type f -size +500M -exec ls -lh {} \; 。常见的元凶有 /var/log 下没有轮转的日志、应用自己的日志目录、容器镜像和停止的容器、忘记删除的备份文件。

三、留意“已删除但未释放”的文件

如果 du 统计出来的用量明显小于 df,很可能是文件已经被删,但还被进程占着句柄。用 lsof +L1 或 lsof | grep deleted 找到对应进程,重启该服务后空间才会真正释放。清理正在写的日志时,用 > 文件名 清空内容比 rm 更安全。

四、安全地清理

日志:用 journalctl --vacuum-size=500M 压缩 systemd 日志,并检查 logrotate 配置是否生效。

容器:Docker 环境用 docker system prune 清理停止的容器和悬空镜像,containerd 环境用 crictl rmi --prune。

包缓存:yum clean all 或 apt-get clean。

删除任何业务数据前,先确认用途,必要时先备份到 OBS。

五、从根上避免再次写满

1. 给所有应用日志配置轮转和保留天数。

2. 把数据、日志和容器存储放在独立的数据盘上,系统盘只放系统。

3. 在云监控服务 CES 里给磁盘使用率设置告警(比如 80%),提前发现问题。

4. 业务确实需要更多空间时,可以在线扩容云硬盘 EVS,再用 growpart 和 resize2fs(或 xfs_growfs)扩展文件系统。

按“看分区 → 找大文件 → 查未释放句柄 → 安全清理 → 加告警防复发”这个顺序做,磁盘告急的问题一般十几分钟就能处理完。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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