Skip to content

containerd & docker 数据迁移

最近遇到一件比较棘手的事,有一台Centos服务器,/home 目录挂载在1T的的分区上,/ 根目录挂载在只有50GB的分区上, 由于安装软件都使用yum,导致根目录只剩下了8G了,罪魁祸首就是最近安装的kubernetes和docker, 吃了整整32G!!!!于是决定将它们的数据迁移到 /home目录

containerd 数据迁移

  1. 停止服务
sh
systemctl stop containerd
  1. 迁移数据
sh
rsync -avx /var/lib/containerd/ /home/forest/var/lib/containerd/

因为containerd下的子目录比较多,项目如果很大,那么迁移时间会很长,慢慢等待吧...

  • -a:表示归档模式,将保留文件的所有属性,包括权限、所有权、时间戳等。
  • -v:表示详细模式,显示文件传输的详细信息。
  • -x:表示不跨文件系统边界,避免跨越不同的文件系统边界,只在同一文件系统内进行迁移。

同时确定 containerd 目录权限一致

sh
ls -ald /home/forest/var/lib/containerd/ # 711

ls -ald /var/lib/containerd/ # 711
  1. 原目录备份
sh
mv /var/lib/containerd /var/lib/containerd-bk
  1. 修改配置文件data目录, 指向到迁移目录 root = "/var/lib/containerd" => root = "/home/forest/var/lib/containerd"
sh
vi /etc/containerd/config.toml
  1. 启动服务
sh
systemctl start containerd

大功告成!!! 原目录可以放一段时间后再删除,防止意外.

docker 数据迁移

docker的数据目录迁移和containerd基本一致, 首先查看 /etc/docker/daemon.json 是否存在,如果不存在创建一个,默认数据目录是 /var/lib/docker

  1. 停止服务
sh
systemctl stop docker
  1. 迁移数据
sh
rsync -avx /var/lib/docker/ /home/forest/var/lib/docker/

同时确定 docker 目录权限一致

sh
ls -ald /home/forest/var/lib/docker/ # 711

ls -ald /var/lib/docker/ # 711
  1. 把原目录备份
sh
mv /var/lib/docker /var/lib/docker-bk
  1. 修改配置文件data目录, 指向到迁移目录 "data-root": "/var/lib/docker" => "data-root": "/home/forest/var/lib/docker"
sh
vi /etc/docker/daemon.json

如果目录不存在直接创建,并且写进去

json
{
  "data-root": "/home/forest/var/lib/docker"
}
  1. 启动服务
sh
systemctl start docker

大功告成!!! 以后再也不怕硬盘不够用了!!!!

Reference