Linux 磁盘空间排查实战:5 个命令快速定位“磁盘满了”

举报
yd_99838092 发表于 2026/11/08 17:32:35 2026/11/08
【摘要】 从 df、du 到 lsof,介绍排查 Linux 磁盘占用高的常用命令组合与注意事项,帮助你在服务器告警时快速定位大文件和被删除但仍被占用的文件。

为什么“磁盘满了”不好查

服务器告警磁盘使用率 100%,但登上去 du -sh 一圈,发现目录加起来远没有那么大——这通常是因为有文件被删除后仍被进程占用,或者日志文件正在被持续写入。排查要有顺序。

第一步:看整体使用率

df -h

先确认是哪个挂载点满了(/、/data、/var 等),避免在错误的磁盘上找文件。

第二步:定位大目录

du -h --max-depth=1 / 2>/dev/null | sort -h | tail -20

从根目录逐层向下,找到占用最大的目录后再进入下一层。2>/dev/null 用于忽略权限不足的报错。

第三步:找大文件

find / -type f -size +500M 2>/dev/null

按大小过滤比逐个目录看更快,也可以加 -mtime -1 只看最近一天修改的文件。

第四步:检查被删除但仍被占用的文件

这是最容易被忽略的情况:

lsof +L1

+L1 表示 link count 小于 1(已被删除但仍打开)的文件。如果日志被 rm 了但进程还在写,磁盘空间不会释放,通常需要重启对应进程或让它重新打开日志文件。

第五步:处理日志与容器

  • 系统日志:journalctl --vacuum-size=500M 按大小清理;
    • Docker:docker system df 查看占用,docker system prune 清理停止的容器、无用镜像和构建缓存(执行前确认无需保留的资源);

      • 应用日志:优先用 logrotate 轮转,而不是直接删除正在写入的文件。

      • 几个注意事项

      1. 不要直接 rm 正在写入的日志,可能造成空间不释放;可用 truncate -s 0 file 或配置轮转。
        1. 清理前确认文件归属和业务影响,尤其是数据库目录和容器卷。
          1. 生产环境操作前先备份关键配置,避免误删。

            1. 空间反复占满应从日志级别、保留策略和监控告警上根治。

            2. 小结

          2. 排查顺序:df 看挂载点 → du 找目录 → find 找大文件 → lsof 查已删除占用 → 针对性清理日志/容器。按这个顺序,大多数“磁盘满了”问题都能在几分钟内定位到根因。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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