Linux 服务器磁盘空间排查:5 个命令快速定位"谁吃掉了空间"

举报
yd_237993460 发表于 2026/10/26 10:49:11 2026/10/26
【摘要】 刚上手云服务器时,最常见的报错之一就是 No space left on device。系统盘只有 40GB 的 ECS,跑几天 Docker 和日志就可能满了。下面是我自己常用的排查顺序。 一、先看整体:df -h执行 df -h,看 Use% 那一列,找到快满的挂载点。如果空间充足却仍报错,再用 df -i 看 inode,小文件太多也会导致写不进去。 二、逐层定位:du在根目录执行 d...

刚上手云服务器时,最常见的报错之一就是 No space left on device。系统盘只有 40GB 的 ECS,跑几天 Docker 和日志就可能满了。下面是我自己常用的排查顺序。

一、先看整体:df -h

执行 df -h,看 Use% 那一列,找到快满的挂载点。如果空间充足却仍报错,再用 df -i 看 inode,小文件太多也会导致写不进去。

二、逐层定位:du

在根目录执行 du -h --max-depth=1 / 2>/dev/null | sort -rh | head,找到最大的目录,再进去重复这个命令,一般三四层就能找到元凶。常见的是 /var/log、/var/lib/docker 和用户目录下的缓存。

三、找大文件:find

用 find / -type f -size +500M 2>/dev/null 直接列出大于 500MB 的文件,很多时候是忘记删的备份包或镜像。

四、已删除但未释放:lsof

删掉大日志后 df 没变化?用 lsof | grep deleted 看看,文件仍被进程占用时空间不会释放,重启对应服务即可。以后清日志建议用 truncate -s 0 文件名,而不是 rm。

五、Docker 专项:docker system df

先用 docker system df 看镜像、容器、卷各占多少,再用 docker system prune 清理未使用的资源。带 -a 会删掉所有未使用的镜像,生产环境慎用。

预防小技巧

  1. 给 journald 设上限:在 /etc/systemd/journald.conf 里设 SystemMaxUse=500M。
  2. 给 Docker 容器日志设轮转:max-size 和 max-file。
  3. 在云监控里给磁盘使用率配一个 80% 告警,比服务挂掉后再排查轻松得多。

记住这个顺序:df 看整体,du 找目录,find 找文件,lsof 查占用,Docker 单独清。五分钟内基本都能解决。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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