Ubuntu系统下如何迁移containerd数据目录至其他位置
迁移containerd根目录至新位置的操作方法
1. 停止containerd服务
先暂停containerd运行,避免迁移过程中数据被修改:
sudo systemctl stop containerd
执行以下命令确认服务已停止:
sudo systemctl status containerd
2. 完整复制现有数据到新位置
假设新存储路径为/mnt/new-containerd(请根据实际可用分区修改),用rsync保证文件权限、属性完全一致:
sudo rsync -avz /var/lib/containerd/ /mnt/new-containerd/
复制完成后可对比新旧目录大小,确认数据完整:
du -sh /var/lib/containerd/ /mnt/new-containerd/
3. 修改containerd配置文件
编辑containerd的核心配置文件(若文件不存在,先执行containerd config default > /etc/containerd/config.toml生成默认配置):
sudo vi /etc/containerd/config.toml
找到root配置项,将其值替换为新路径:
# 顶级root配置(对应containerd核心存储路径) root = "/mnt/new-containerd" # 若存在CRI插件的独立root配置,也同步修改 [plugins."io.containerd.grpc.v1.cri".containerd] root = "/mnt/new-containerd"
4. (可选)调整systemd服务配置
部分系统中,containerd的systemd服务文件会通过环境变量指定根目录,检查并修改:
- 打开服务文件:
sudo vi /lib/systemd/system/containerd.service
- 找到类似如下的环境变量行,替换为新路径:
Environment="CONTAINERD_ROOT_DIR=/mnt/new-containerd"
- 重新加载systemd配置:
sudo systemctl daemon-reload
5. 重启服务并验证
启动containerd服务:
sudo systemctl start containerd
- 确认服务运行正常:
sudo systemctl status containerd - 验证容器功能:执行
crictl ps查看现有容器状态,或启动测试容器:
crictl run --image busybox:latest test-container
- 确认containerd已使用新目录:查看进程参数,应包含
--root /mnt/new-containerd:
ps aux | grep containerd
6. 清理旧数据(验证无误后执行)
待所有服务、容器运行正常后,删除旧的containerd目录以释放/var分区空间:
sudo rm -rf /var/lib/containerd/
内容的提问来源于stack exchange,提问作者parstoo rambarzini
相关产品推荐
相关产品推荐

