云服务器磁盘空间突然满了?从 df、du 到日志清理的排查顺序
【摘要】 线上服务突然写文件失败,日志里出现 No space left on device,或者某个分区使用率飙到 100%,这类问题比看起来更常见。别急着重启或扩容,先按下面顺序把“哪个分区满了、是谁占的、能不能安全清”说清楚。命令在 EulerOS、CentOS 7+/8、Ubuntu 20.04+ 上通用。 一、先确认是哪个文件系统满了df -hTdf -i看 Use% 接近 100% 的挂载...
线上服务突然写文件失败,日志里出现 No space left on device,或者某个分区使用率飙到 100%,这类问题比看起来更常见。别急着重启或扩容,先按下面顺序把“哪个分区满了、是谁占的、能不能安全清”说清楚。命令在 EulerOS、CentOS 7+/8、Ubuntu 20.04+ 上通用。
一、先确认是哪个文件系统满了
df -hT
df -i
看 Use% 接近 100% 的挂载点,同时看 inode(IUse%)。有时容量还有,但 inode 耗尽,也会报空间不足。注意区分根分区 /、数据盘(如 /data、/var)、以及临时挂载。
记录:满的挂载点、文件系统类型、总容量、已用、可用。后面清理要对准这个挂载点,别清错盘。
二、定位是谁在占空间
在对应挂载点下按目录体积分层下钻:
# 以根分区为例;若满的是 /var,就从 /var 开始
sudo du -xhd1 / | sort -h
sudo du -xhd1 /var | sort -h
sudo du -xhd1 /var/log | sort -h
-x 不跨文件系统,避免把别的盘算进来。找到最大的几个目录后继续往下:
sudo du -xhd1 /var/log/journal | sort -h
sudo du -ahx /var/log | sort -h | tail -n 30
常见占位:
/var/log:应用日志、journal、rotated 未删的.gz/var/lib/docker:镜像、未清理的容器层、volume/tmp、/var/tmp:临时文件、打包残留- 用户家目录下的大文件、core dump
三、区分“能删”和“不能乱删”
能相对安全处理的:
- 已 rotate 且确认不需要的旧日志(先看保留策略)
- 明确的临时文件、安装包缓存(如
yum/dnf缓存、apt缓存) - 已停止且确认无用的 Docker 悬空镜像/容器(先
docker system df)
需要谨慎或先备份的:
- 业务数据目录、数据库数据文件
- 正在写入的当前日志(直接
rm活动日志可能导致进程仍占着已删除 inode,空间不释放) - 证书、密钥、配置目录
对仍被进程打开的已删大文件,用:
sudo lsof +L1 | grep deleted
确认后重启对应进程或截断(仅在明确是日志、且业务允许时):
# 示例:确认是某日志后,截断而不是删除 inode
sudo truncate -s 0 /path/to/big.log
四、常见清理动作(按场景选用,不要一条龙全跑)
系统日志(journal)过大时,可限制保留:
journalctl --disk-usage
sudo journalctl --vacuum-size=500M
# 或按时间
sudo journalctl --vacuum-time=7d
包管理缓存:
# CentOS/Euler/RHEL
sudo dnf clean all # 或 yum clean all
# Ubuntu/Debian
sudo apt-get clean
Docker 占用(仅在确认无用镜像/容器后):
docker system df
docker system prune
# 更激进的 prune -a 会删未使用镜像,生产环境先确认
清理后再测:
df -hT
df -i
确认目标挂载点 Use% 已下降,业务写文件恢复正常。
五、防止再次塞满
- 给关键分区和
/var/log做容量告警(例如 80%、90%)。 - 应用日志加 rotate,并设保留天数/个数。
- 数据盘与系统盘分离;大文件、数据库、容器数据放到独立盘。
- 定期看
du与docker system df,别等写失败才发现。 - 扩容是最后手段:先清清楚楚再决定是否加盘。
按「先 df 定位分区 → du 找目录 → 区分可否删除 → 针对性清理 → 复查与告警」走一遍,多数“磁盘突然满了”都能在扩容前解决,也避免误删业务数据。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)