Linux 磁盘空间排查实战:5 个命令快速定位“磁盘满了”
【摘要】 从 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清理停止的容器、无用镜像和构建缓存(执行前确认无需保留的资源);
-
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)