磁盘满了先别急着删文件:用 df 和 du 把空间占用讲清楚

举报
yd_294877891 发表于 2026/10/28 09:09:08 2026/10/28
【摘要】 磁盘满了先别急着删文件:先用 df 确认哪个挂载点满了,再用 du 一层层定位占用最大的目录,区分能删、能清、不能动的文件,最后再清理或扩容。

磁盘满了,第一反应常常是赶紧删文件。但删错文件比磁盘满更麻烦:日志、备份、数据库文件一旦删错,服务可能直接起不来。更稳的做法是先把空间占用讲清楚:哪个挂载点满了,是谁占的,再决定删什么、留什么。

第一步:用 df 看哪个挂载点满了

df 看的是文件系统整体使用情况,也就是挂载点层面。

df -h
df -h /var

重点看 Use% 和 Mounted on。根分区满了和数据盘满了,处理思路完全不同。/var 满了多半是日志,/tmp 满了多半是临时文件,数据盘满了要先看业务数据和备份。

还有一个容易被忽略的指标是 inode:

df -i

如果磁盘空间还剩不少,但 inode 用满了,小文件太多也会导致无法写入新文件。这时删大文件没有用,要找小文件多的目录。

第二步:用 du 从大到小往下钻

确定挂载点后,用 du 看目录占用,再一层层往下钻,不要一上来就全盘扫描。

du -sh /var/*
du -sh /var/log/* | sort -rh | head -20
du -h --max-depth=1 / | sort -rh | head -20

du -sh 是看某个目录总和,–max-depth=1 是只看一层,避免输出淹没重点。排到前面的目录,再对它重复一次,直到定位到具体文件或日志目录。

第三步:区分能删、能清、不能动三类

能删的:明确的临时文件、已过期的旧备份、自己生成的测试数据,确认无用后再删。

能清但不能直接删的:正在被进程写着的日志文件。直接 rm 正在写入的日志,空间往往不会立刻释放,因为进程还持有文件句柄。更稳的是先确认服务是否可以重启,或者用截断方式处理,并先备份关键日志。

不能动的:数据库数据文件、正在运行的应用目录、系统关键目录,以及不确定归属的文件。拿不准就先不动,先查归属和最近修改时间。

一个可复用的排查顺序

  1. df -h:确认哪个挂载点满了。
  2. df -i:排除 inode 满了的情况。
  3. du -sh 加 sort:从大目录一层层往下钻。
  4. ls -lh 和最近修改时间:确认大文件是谁、什么时候产生的。
  5. 先清理临时和过期文件,再处理日志,最后才考虑扩容或迁移数据。

常见误区

只看 df 就删文件:df 只能告诉你满了,不能告诉你谁占的。

一上来就 du 全盘:根目录全量扫描又慢又容易被系统目录干扰。

删了文件空间没回来:先检查是不是被删除但仍被进程占用的文件,或者是不是另一个挂载点的问题。

把清理当成一劳永逸:日志和备份会继续增长,清理完要顺手看一下日志轮转和备份保留策略,否则几天后还会再满一次。

先讲清楚占用,再动手清理,磁盘满就从一次事故变成一次可复现的排查流程。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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