Linux 磁盘空间排查的五个实用方法

举报
yd_211758112 发表于 2026/11/03 11:35:46 2026/11/03
【摘要】 Linux 运维中磁盘空间不足时,按 df -h 整体排查、du -sh 排序定位大目录、find -size 找大文件、lsof +L1 查已删除仍被占用的文件、journalctl --vacuum 清理日志,五个实用方法快速回收空间。

在 Linux 运维中,磁盘空间不足是最常见的告警之一。遇到 / 或数据盘使用率达到 90%+ 时,不要盲目 rm,按以下五个方法依次排查,可以高效定位并回收空间。


一、用 df -h 查看各挂载点整体使用率

df -h 列出所有文件系统的已用/可用空间和使用率。先看哪个挂载点逼近 100%,再决定往哪查。df -i 可以补充查看 inode 是否耗尽(小文件多时即使容量有剩余也会报错 No space left)。


二、用 du -sh 排序找出占空间的目录

进入可疑挂载点后,用 du -sh /* 看各一级目录的大小,然后逐层深入。配合排序可以更快定位大户:du -sh /var/* | sort -rh | head -20。对大目录也可以限定深度:du -ah /path --max-depth=2 | sort -rh | head -30。


三、用 find -size 查找大文件

有时候空间被少量大文件吃掉。用 find 按大小过滤:find /var -type f -size +500M -exec ls -lh {} + 2>/dev/null | sort -k5 -rh。可以配合 -mtime 排除近期才生成的文件,缩小范围。


四、lsof +L1 查已删除仍被占用的文件

用 df 看到空间满了,但 du 加总却对不上,多半是有文件被 rm 删除后,仍有进程持有打开句柄,空间未能释放。执行 lsof +L1 列出硬链接数为 0 的文件,查看持有进程。杀掉对应进程或重启服务后,空间才会真正回收;对日志类文件也可以先 truncate 而不是直接删除。


五、日志轮转与 journalctl --vacuum 清理

日志是磁盘吃大户。确认 /etc/logrotate.conf 及各应用的 logrotate 配置生效(定期轮转、compress、保留份数)。对 systemd _journal_ 日志,用 journalctl --vacuum-time=7d 只保留最近 7 天,或用 journalctl --vacuum-size=500M 限制总大小。/var/log 下也可以清理过期的 .gz 归档。


小结:先 df -h 定位挂载点,再用 du -sh 排序缩小目录范围,用 find -size 抓大文件,用 lsof +L1 回收"删而未放"的幽灵占用,最后用日志轮转和 journalctl --vacuum 做长效治理,基本可以覆盖绝大多数磁盘空间告警。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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