1. 问题背景
在运行 Kubernetes + Docker 的 Linux 服务器中,/var/lib 目录下的 containerd 和 docker 目录容易因容器镜像、日志、存储卷堆积导致磁盘空间爆满。本教程以 Ubuntu 系统为例,完整演示从问题定位到清理优化的全流程。
2. 第一步:定位磁盘占用
2.1 查看整体磁盘使用率
df -h
重点关注使用率超过 80% 的分区,通常 / 根分区或 /var 分区会出现告警。

2.2 使用 ncdu 逐层定位大目录
安装 ncdu(如未安装)
apt update && apt install ncdu -y
进入 /var 目录分析
ncdu /var
进入 /var/lib 目录,定位核心占用:
3. 第二步:针对性清理 containerd(Kubernetes 场景)
3.1 问题现象
/var/lib/containerd 占用高达 100GiB+,多为未清理的镜像层、快照层。
3.2 清理操作
查看 containerd 镜像列表
crictl images
清理所有未被使用的镜像
crictl rmi --prune


4. 第四步:验证清理成果
4.1 再次使用 ncdu 确认空间释放
ncdu /var/lib
清理后,/var/lib/containerd 和 /var/lib/docker 的占用应显著下降。
4.2 查看整体磁盘使用率
df -h
确认分区使用率已降至正常水平(低于 80%)。
5. 常见问题排查
| 问题 | 原因 | 解决方法 |
|---|
docker image prune 无法释放空间 | 无悬空镜像,或空间被 containerd 占用 | 使用 crictl 清理 containerd 镜像 |
| containerd 清理后空间未释放 | 快照层 / 容器日志未清理 | 检查 /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs 目录 |
| 清理后磁盘使用率仍高 | 其他目录(如 /var/log、/root)存在大文件 | 使用 ncdu 逐层排查其他目录 |
6. 总结
通过 ncdu 定位大目录 → 针对性清理 containerd/Docker 资源 → 配置自动清理策略,可有效解决服务器磁盘爆满问题。建议定期(每周)执行磁盘健康检查,提前发现空间占用异常。