df 与 du 入门:分清磁盘总量和哪个目录把空间吃光了

举报
yd_225736217 发表于 2026/11/08 18:01:14 2026/11/08
【摘要】 云服务器磁盘告警时,很多人会先删几个自己记得的日志,结果空间几乎没有变化。更稳妥的顺序是先看整盘还剩多少,再找出具体是哪个目录在增长。df 回答“文件系统整体用了多少”,du 回答“某个目录及其内容占用多少”。两者看的不是同一层信息,混用就容易误判。下面用常见用法说明如何把它们配合起来,不把某一次输出当成你机器上的实测结果。一、先用 df 看文件系统,而不是某个文件夹df 读取的是已挂载文件...

云服务器磁盘告警时,很多人会先删几个自己记得的日志,结果空间几乎没有变化。更稳妥的顺序是先看整盘还剩多少,再找出具体是哪个目录在增长。df 回答“文件系统整体用了多少”,du 回答“某个目录及其内容占用多少”。两者看的不是同一层信息,混用就容易误判。下面用常见用法说明如何把它们配合起来,不把某一次输出当成你机器上的实测结果。

一、先用 df 看文件系统,而不是某个文件夹

df 读取的是已挂载文件系统的用量。最常用的写法是加上 -h,让容量以 G、M 这些人类可读的单位显示。

df -h

输出里每一行通常对应一个挂载点。需要重点看的是根分区 /,以及单独挂出来的数据盘,例如 /data 或 /var。Use% 表示该文件系统已用比例,Avail 表示大约还能写入多少。

如果只关心根分区,可以明确指定路径:

df -h /

这样能避免被临时文件系统、容器 overlay 或光驱占位行干扰。需要注意:df 报告的是整个文件系统,不是你当前所在的那个子目录。某个目录显示“很大”,并不等于它可以单独扩容;它仍然占用所属分区的空间。

二、再用 du 找出目录里谁在增长

确认整盘紧张之后,下一步才是定位目录。du 会统计指定路径下各文件和子目录的占用,并汇总。常见写法是对根目录下一层做排序,先找出最大的几个目录。

sudo du -h -d 1 /var | sort -h

-d 1 表示只展开一层,避免第一次就把整棵目录树打满屏幕。sort -h 按人类可读的容量排序,最大的目录会出现在末尾。若某一层仍然很大,再对它重复同样的命令,一层层往下收。

如果只想看当前目录合计,使用 -s:

du -sh /var/log

这会给出该路径的总占用,适合在已经缩小范围后做确认。du 统计的是它实际访问到的文件;权限不足时,部分目录会被跳过,总和可能偏小,所以对系统目录加上合适的权限再看一次更稳妥。

三、两者对不上时,先找未释放的文件

有时 du 把目录加起来明显小于 df 显示的已用空间,这并不一定是命令坏了。一个常见原因是:进程还开着已经删除的文件。文件从目录中消失后,磁盘块要等进程关闭句柄才会真正释放。此时 df 仍把这块空间算作已用,du 却已经统计不到它。

遇到这种情况,不要急着继续删别的目录。可以先确认是否有服务刚刚轮转或清空过日志,再考虑重启对应进程或检查仍打开的已删文件。另一个差异来自不同文件系统的预留空间、快照和挂载方式:df 以文件系统记账为准,du 以走访到的文件为准。

四、养成可重复的检查顺序

磁盘告警时,建议固定按“先 df、再分层 du、最后才删除”的顺序处理。删除前先确认文件角色:正在写入的日志、数据库目录和容器数据,都可能看起来很大,却不能直接当垃圾清掉。对日志,优先用轮转和压缩,而不是手工删当前文件。

把每次看到的挂载点、目录和命令记下来,下次对比时才知道是突然增长还是长期累积。df 和 du 能帮你定位空间去向,但它们不会告诉你哪些数据可以安全删除;这个判断仍然要回到业务本身。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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