Linux 磁盘空间排查:从 df 到定位大文件的完整流程

举报
yd_274862470 发表于 2026/11/03 20:34:40 2026/11/03
【摘要】 服务器最常见的半夜告警之一,就是磁盘空间不足。很多人第一反应是直接删文件,或者立刻扩容。更稳妥的顺序是:先确认哪块盘满了,再逐层定位,最后决定清理、轮转还是扩容。第一步:用 df 看整体。先执行 df -hT,重点看 Use% 和挂载点。根分区满了和数据盘满了,处理方式完全不同;tmpfs 这类内存文件系统一般不用当作磁盘问题处理。看到某个挂载点使用率接近 100%,就把它作为后续排查的起点...

服务器最常见的半夜告警之一,就是磁盘空间不足。很多人第一反应是直接删文件,或者立刻扩容。更稳妥的顺序是:先确认哪块盘满了,再逐层定位,最后决定清理、轮转还是扩容。


第一步:用 df 看整体。先执行 df -hT,重点看 Use% 和挂载点。根分区满了和数据盘满了,处理方式完全不同;tmpfs 这类内存文件系统一般不用当作磁盘问题处理。看到某个挂载点使用率接近 100%,就把它作为后续排查的起点。


第二步:用 du 逐层下钻。进入可疑的挂载点,执行 du -sh /* 2>/dev/null | sort -h,从最大的目录开始,再进入下一层重复这个动作,直到锁定具体目录。逐层下钻比一上来就全盘扫描更快,也更不容易被无关目录干扰。注意 du 统计的是目录大小,而 df 看的是文件系统层面,两者偶尔会不一致。


第三步:处理 df 与 du 不一致的情况。最常见的原因是文件已经被删除,但仍被某个进程占用,空间因此没有真正释放。这时可以用 lsof | grep deleted 确认,办法通常是重启相关服务,或者让进程重新打开日志文件,而不是继续删文件。


第四步:用 find 直接找大文件。如果怀疑是某个大文件导致的,可以执行 find /var -type f -size +500M -exec ls -lh {} \;,把大文件列出来再逐个判断。日志目录 /var/log、数据库备份目录、应用上传目录,都是常见的重灾区。找到之后先确认文件是否还在用、是否可以归档,能归档的先归档,不要上来就删除。


第五步:清理日志要讲方法。系统日志可以用 journalctl --disk-usage 查看占用,再用 journalctl --vacuum-size=500M 做限制;应用日志建议配置 logrotate,按大小或时间轮转并保留一定份数。只删日志不做轮转,下一次磁盘告警很快又会回来。容器环境还要留意镜像和容器层占用,先用 docker system df 看分布,再谨慎清理。


第六步:别忘了 inode 也会满。磁盘空间除了字节数,还有 inode 数量这一维。如果 df -h 显示还有空间,但写入时仍然报错,就要执行 df -i 看 inode 使用率。大量小文件和未清理的临时文件,都可能把 inode 耗尽。这时要找文件数量最多的目录,而不是单个最大的文件。


最后给一份收尾清单:先定位挂载点,再逐层下钻;删除前确认文件归属和是否在用;日志问题优先做轮转和保留策略;设置 80% 左右的告警阈值,留出处理时间;扩容放在最后,作为确认需求确实增长之后的手段,而不是第一反应。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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