ECS磁盘使用率告警先别急着扩容:四步定位占用,再决定清理还是扩容

举报
yd_293948692 发表于 2026/10/28 09:39:20 2026/10/28
【摘要】 ECS磁盘告警不要先扩容:先用df、df -i和du四步定位占用,区分可清理、可归档和必须保留的数据,再决定清理还是扩容,扩容后还需扩展分区和文件系统。

一、问题:磁盘告警来了,先不要点扩容

凌晨收到云监控告警:某台 Linux 弹性云服务器(ECS)的根分区使用率已经超过 90%,应用开始写日志失败,个别服务重启后无法正常启动。很多人的第一反应是直接扩容云硬盘:贵一点,但最省事。实际上,这个顺序常常是错的。

如果占用来自可以安全清理的日志、缓存或临时文件,扩容只是把问题推迟到下一次告警;如果占用来自业务数据持续增长,清理只能换来几天喘息,最终还是要扩容。正确的做法是先定位,再决策:先花十分钟确认“是谁把磁盘吃满了”,再决定清理还是扩容,以及扩容多少。

二、前提:动手前先确认这三件事

第一,确认操作系统和权限。本文以 Linux ECS 为例,需要能够登录服务器并使用 sudo 或 root 权限执行查看命令;没有权限时,先向管理员申请,不要绕过权限管理。

第二,确认数据是否可以动。清理前要分清三类数据:系统和业务运行必需的数据不能删;可以重建的缓存、临时文件可以删;日志要先确认保留期限和合规要求,重要日志先归档再清理。

第三,生产环境先做备份或快照。扩容、清理、重启服务都属于变更操作,重要数据先备份,变更后要能回滚。本文不涉及任何付费开通操作,只讲定位和判断方法;是否扩容、扩容多大,由你结合业务增长和成本再决定。

三、分步操作:四步定位磁盘占用

第一步:看整体,先确认是哪块盘满了

先看所有挂载点的使用率,确认告警说的是根分区、数据分区还是某个挂载目录:

df -h

重点看 Use% 和 Mounted on 两列。根分区满和数据盘满的处理路径完全不同:根分区满会影响系统服务和日志写入,数据盘满通常只影响该盘上的业务。只看总量还不够,还要看第二步。

第二步:看 inode,排除“空间还有、文件建不出来”的情况

有一种容易误判的情况:df 显示空间还有剩余,但应用仍然写不进文件,原因是 inode(文件索引节点)用完了。大量小文件会先耗尽 inode,而不是耗尽空间。

df -i

如果 IUse% 接近 100%,问题往往是某个目录下堆积了海量小文件,例如缓存、会话文件或未清理的临时文件。这时扩容磁盘容量并不能解决问题,需要清理小文件或调整存放策略。

第三步:自上而下找大目录,不要一开始就翻全盘

定位大目录要从根目录逐层下钻,而不是直接对整个文件系统做全量扫描。先看根目录下各一级目录的大小,再进入最大的目录继续下钻:

du -sh /* | sort -rh | head -20

找到可疑目录后,再对该目录做同样的操作,例如先看 /var,再看 /var/log,最后看具体是哪个日志文件或应用目录在增长。逐层下钻的好处是快、干扰小,也不会因为扫描海量小文件而长时间卡住。

第四步:区分“能清、能压、必须留”三类占用

定位到目录后,先做分类,再动手:

  • 能清理:过期日志、可以重建的缓存、下载后已用完的临时包、明确无用的临时文件。
  • 能压缩或归档:需要保留但不常访问的历史日志,可以先压缩归档到对象存储或备份位置,再从磁盘上清理。
  • 必须保留:业务数据、数据库文件、正在运行的服务依赖文件。这一类不要直接删除,先看增长趋势,再决定扩容。

还有一种特殊情况:文件已经删除,但空间没有释放。这通常是因为某个进程还持有已删除文件的句柄,文件在磁盘上仍被占用。可以用以下命令查看:

lsof | grep deleted

如果确认是日志进程持有已删除文件,重启相关服务或让应用重新打开日志文件后,空间才会真正释放。不要只删文件不处理进程,否则 df 的数值不会下降,容易误以为清理无效。

四、验证:清理或扩容后必须复查的三项

第一,重新执行 df -h 和 df -i,确认使用率和 inode 使用率都回落到安全范围,而不是只看其中一项。

第二,确认应用可以正常写文件、写日志,服务状态正常。只看磁盘数值回落是不够的,还要看业务是否恢复。

第三,观察一段时间。清理后如果使用率在几小时内又快速回升,说明增长源没有根除,需要回到第三步重新定位,而不是反复清理。

五、常见坑:这六个错误最容易返工

  1. 只看 df,不看 inode:空间明明还有,应用却写不进文件。
  2. 删除日志文件后不处理持有进程:空间没有释放,还以为磁盘坏了。
  3. 直接删除数据库文件或业务数据:空间是腾出来了,业务也丢了。
  4. 扩容云硬盘后不扩展分区和文件系统:控制台容量变大了,服务器里 df 却没有变化。
  5. 没有先备份就清理生产日志:事后需要排查问题时,已经没有日志可用。
  6. 只清理一次、不设告警和轮转:下一次告警只是时间问题。

关于第四点,华为云帮助中心在云硬盘扩容相关文档中明确说明:扩容云硬盘后,还需要扩展分区和文件系统,新增容量才能被使用。具体操作应以华为云帮助中心当前文档为准,不同文件系统和分区方式的命令并不相同,操作前请先确认分区类型和文件系统类型。

六、小结清单:下次告警时按这个顺序做

  • [ ] 执行 df -h,确认是哪块盘、哪个挂载点满了。
  • [ ] 执行 df -i,确认是不是 inode 先用完了。
  • [ ] 用 du 自上而下逐层定位最大目录,不要全盘盲扫。
  • [ ] 分类处理:能清的清,能归档的归档,必须留的不要删。
  • [ ] 检查已删除但仍被进程持有的文件,必要时重启相关服务。
  • [ ] 复查 df、inode 和应用写文件能力,确认业务恢复。
  • [ ] 如果是业务持续增长,再评估扩容容量,并记得扩容后扩展分区和文件系统。
  • [ ] 最后补上日志轮转、清理策略和告警阈值,避免同一问题反复出现。

参考来源:华为云帮助中心云硬盘扩容相关文档(扩容后需扩展分区和文件系统);Linux 常用命令 df、du、lsof 的常规用法。本文为原创经验总结,不涉及任何付费开通操作。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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