1. 问题背景与现象分析
最近在维护一台阿里云ECS服务器时,遇到了一个相当棘手的问题。这台服务器原本已经按照标准运维流程,将Docker的数据目录从默认的/var/lib/docker迁移到了挂载在/data盘的新位置。理论上,系统盘的空间压力应该得到显著缓解,但实际情况却让人大跌眼镜。
通过df -h命令查看,系统盘使用率依然高达85%以上,随时可能触发告警。更奇怪的是,使用du命令检查/var/lib目录时,发现这里仍然占用了数十GB的空间。这显然与预期不符,因为Docker的数据目录已经迁移到/data/docker,理论上/var/lib/docker应该只是一个指向新位置的软链接,实际占用空间应该很小。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 深入排查过程
2.1 初步检查
首先确认Docker数据目录迁移确实已经完成:
bash复制ls -l /var/lib/docker
# 输出显示这是一个指向/data/docker的软链接
du -sh /data/docker
# 输出:2.4G
看起来Docker的数据确实已经迁移成功,那问题出在哪里?
2.2 全面扫描系统盘
为了找出隐藏的空间占用者,我执行了全盘扫描命令:
bash复制du -xh / | grep -E "[0-9]G" | sort -hr | head -n 10
输出结果揭示了真相:
code复制32G /
24G /var/lib/containerd
24G /var/lib
14G /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots
10G /var/lib/containerd/io.containerd.content.v1.content/blobs
...
2.3 问题根源分析
现代Docker(v20.10+)默认使用containerd作为底层容器运行时。Docker守护进程主要负责管理容器生命周期,而实际的镜像存储(blobs)和容器文件系统(snapshots)则由containerd管理。关键点在于:
- Docker的数据目录迁移只影响了/var/lib/docker
- con
