云服务器磁盘空间突然满了?从 df、du 到日志清理的排查顺序

举报
yd_275727902 发表于 2026/11/09 17:20:49 2026/11/09
【摘要】 线上服务突然写文件失败,日志里出现 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% 已下降,业务写文件恢复正常。

五、防止再次塞满

  1. 给关键分区和 /var/log 做容量告警(例如 80%、90%)。
  2. 应用日志加 rotate,并设保留天数/个数。
  3. 数据盘与系统盘分离;大文件、数据库、容器数据放到独立盘。
  4. 定期看 du 与 docker system df,别等写失败才发现。
  5. 扩容是最后手段:先清清楚楚再决定是否加盘。

按「先 df 定位分区 → du 找目录 → 区分可否删除 → 针对性清理 → 复查与告警」走一遍,多数“磁盘突然满了”都能在扩容前解决,也避免误删业务数据。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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