磁盘满了先别扩容:df -i 查 inode、du 找大文件的组合排查法

举报
yd_239575663 发表于 2026/10/29 10:59:39 2026/10/29
【摘要】 磁盘满分空间满和 inode 满两种情况,先用 df -hT 与 df -i 对照,再用 du -x 逐层定位,确认大户和正在写的文件后再清理,避免误删和扩容浪费。

磁盘告警一来,很多人第一反应是扩容。其实扩容之前先花五分钟定位,往往能省下一笔费用,也能避免把真正的问题藏起来。磁盘满有两种完全不同的满法:空间满和 inode 满,表现都是写不进文件,但处理方法不一样。

第一步:先看两个 df

先同时跑 df -hT 和 df -i。df -hT 看每个挂载点的空间使用率和文件系统类型,df -i 看 inode 使用率。如果空间还有余量但 IUse% 到了 100%,那就是小文件太多,扩容空间没有用,要清理的是文件数量。反过来,空间 100% 但 inode 还有余量,才是真正的大文件问题。

第二步:用 du 逐层定位

不要一上来就全盘 find。先从根目录按一级目录汇总:
du -h --max-depth=1 / 2>/dev/null | sort -rh | head -20

找到最大的目录后,再对它做下一层,直到定位到具体的目录。定位时加 -x 很重要,du -x 可以不跨文件系统,避免把挂载的其他盘也算进来,误判根分区的占用。

第三步:先认清楚大户再动手

常见的几类大户要分开处理。日志目录要先看轮转配置,而不是直接删正在写的文件;备份目录要先核对保留策略和最近一次成功备份;临时目录要先确认没有正在运行的任务在用;应用的缓存目录要先确认清掉后是否可以重建。删之前,先用 ls -lh 和文件时间确认这确实是旧文件。

第四步:删除正在写的文件要小心

对正在被进程写的文件,直接 rm 往往不会立即释放空间,因为文件句柄还在进程手里,空间要等进程退出才释放。更稳妥的做法是先确认进程和文件关系,可以用 lsof 看到被删除但仍占用的文件,再决定是重启服务,还是先用截断方式清空。生产环境上,任何删除动作都应该先列出待删清单,宁可先压缩归档再删除,也不要批量删。

一个可复用的收尾清单

清理后重新跑 df -h 和 df -i,确认两个指标都回到安全区间;检查应用是否恢复写文件;把这次的大户写进巡检清单,比如日志轮转周期、备份保留天数、临时文件清理周期。下次再告警,先看指标、再定位目录、最后才决定是清理还是扩容,这样的顺序最省钱,也最不容易误删。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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