Linux 磁盘空间排查:du 与 df 实战

举报
yd_248904582 发表于 2026/11/08 06:06:20 2026/11/08
【摘要】 服务器上最常见的告警之一,就是“磁盘空间不足”。网站打不开了、数据库写不进去了、备份任务失败了,查来查去,往往都是磁盘满了。本文用一次真实的排查过程,讲清楚 df 与 du 这两个命令怎么配合使用,帮你快速定位“空间被谁吃了”。 一、先分清:df 看整体,du 看细节df 看的是文件系统的整体使用情况:哪块盘、总共多大、用了多少、还剩多少。du 看的是目录和文件实际占了多少空间。排查的正确顺...

服务器上最常见的告警之一,就是“磁盘空间不足”。网站打不开了、数据库写不进去了、备份任务失败了,查来查去,往往都是磁盘满了。本文用一次真实的排查过程,讲清楚 df 与 du 这两个命令怎么配合使用,帮你快速定位“空间被谁吃了”。

一、先分清:df 看整体,du 看细节

df 看的是文件系统的整体使用情况:哪块盘、总共多大、用了多少、还剩多少。du 看的是目录和文件实际占了多少空间。排查的正确顺序是:先用 df 找到满了的那块盘,再用 du 在这块盘里一层层往下找。

二、df:先看哪块盘满了

df -h
df -i

df -h 以人类可读的方式显示每块盘的使用率,重点看“Use%”这一列,超过 85% 就要警惕了。很多人只看空间,却忽略了 df -i:inode 用完了也会报“磁盘满”,哪怕空间还剩很多。小文件特别多的时候,比如海量的会话文件、缓存碎片,就容易出现这种情况。

三、du:找出占空间的大户

确定是根分区满了,就从根目录开始往下挖:

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

du -sh /* 先看一级目录各自的大小,找出最大的那一个,再对它继续深入,比如 /var 大,就查 /var 下面的子目录,一层一层缩小范围。sort -rh 把结果按大小倒序排列,head -n 10 只看前十名,排查效率高很多。注意 du 统计的是目录下所有文件的实际占用,遇到大目录会比较慢,耐心等它跑完。

四、常见的“空间元凶”清单

根据经验,磁盘空间大多被以下几类东西吃掉:

第一是日志。应用日志、Nginx 访问日志、系统日志如果没有做轮转,会一直增长,几个月就能吃掉几十 GB。

第二是缓存和临时文件。包管理器的缓存、应用的临时文件、上传失败的残留文件,时间久了都很可观。

第三是旧备份。备份脚本每天跑一次,却从来不清理旧备份,磁盘迟早会被备份文件塞满。

第四是容器和镜像。Docker 镜像、停止的容器、悬空的卷,长期不清理会占用大量空间。

第五是“已删除但仍被占用”的文件,这是最容易被忽略的一种,下面单独讲。

五、已删除的文件还在占空间

在 Linux 里,删除一个正在被进程使用的文件,文件名消失了,但磁盘空间并不会释放,直到进程退出或者文件被关闭。排查时可以用:

lsof | grep deleted
du -sh /proc/*/fd 2>/dev/null | sort -rh | head

如果发现某个日志文件已经被删除却还占着几个 GB,正确做法是重启相关服务,或者让服务重新打开日志文件,而不是反复 rm,那样是删不掉空间的。

六、安全清理与预防

找到元凶之后再动手清理,不要上来就删系统目录。常见的清理命令有:

journalctl --vacuum-size=200M
apt clean
find /tmp -type f -mtime +7 -delete

journalctl --vacuum-size 用于压缩系统日志,apt clean 清理包缓存,清理 /tmp 时一定要加上时间条件,只删 7 天前的文件。更重要的是建立预防机制:给日志配置 logrotate 做轮转,给备份脚本加上保留天数,对磁盘使用率设置告警,超过 80% 就通知,超过 90% 就处理。

结语

磁盘空间排查并不难,记住口诀就行:df 定盘,du 定位,sort 排序,lsof 查已删文件。先定位再清理,清理之后再上监控和轮转,下次告警来的时候,你就不用再手忙脚乱了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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