Linux 服务器磁盘空间排查:5 个命令快速定位"谁吃掉了空间"
【摘要】 刚上手云服务器时,最常见的报错之一就是 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 会删掉所有未使用的镜像,生产环境慎用。
预防小技巧
- 给 journald 设上限:在 /etc/systemd/journald.conf 里设 SystemMaxUse=500M。
- 给 Docker 容器日志设轮转:max-size 和 max-file。
- 在云监控里给磁盘使用率配一个 80% 告警,比服务挂掉后再排查轻松得多。
记住这个顺序:df 看整体,du 找目录,find 找文件,lsof 查占用,Docker 单独清。五分钟内基本都能解决。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)