2.12. 在池之间移动镜像
您可以在同一集群内的不同池之间移动 RADOS 块设备 (RBD) 镜像。
在此过程中,源镜像会复制到具有所有快照历史记录的目标镜像,也可选择性地复制到源镜像的父镜像中,以帮助保留稀疏性。源镜像是只读的,目标镜像是可写的。目标镜像在迁移过程中链接到源镜像。
您可以在使用新目标镜像时安全地在后台运行此过程。但是,在准备步骤前停止使用目标镜像的所有客户端,以确保更新使用该镜像的客户端以指向新的目标镜像。
krbd
内核模块目前不支持实时迁移。
先决条件
- 停止所有使用该源镜像的客户端。
- 客户端节点的根级别访问权限。
流程
通过创建跨链接源和目标镜像的新目标镜像准备迁移:
语法
rbd migration prepare SOURCE_IMAGE TARGET_IMAGE
rbd migration prepare SOURCE_IMAGE TARGET_IMAGE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
- SOURCE_IMAGE,带有要移动的镜像的名称。使用 POOL/IMAGE_NAME 格式。
- TARGET_IMAGE,带有新镜像的名称。使用 POOL/IMAGE_NAME 格式。
示例
rbd migration prepare pool1/image1 pool2/image2
[root@rbd-client ~]# rbd migration prepare pool1/image1 pool2/image2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证新目标镜像的状态,这应该为
prepared
:语法
rbd status TARGET_IMAGE
rbd status TARGET_IMAGE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - (可选)使用新目标镜像名称重新启动客户端。
将源镜像复制到目标镜像:
语法
rbd migration execute TARGET_IMAGE
rbd migration execute TARGET_IMAGE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
rbd migration execute pool2/image2
[root@rbd-client ~]# rbd migration execute pool2/image2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保迁移已完成:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过删除源镜像和目标镜像之间的跨链接来提交迁移,这也会移除源镜像:
语法
rbd migration commit TARGET_IMAGE
rbd migration commit TARGET_IMAGE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
rbd migration commit pool2/image2
[root@rbd-client ~]# rbd migration commit pool2/image2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果源镜像是一个或多个克隆的父镜像,请在确保克隆镜像不在使用后使用
--force
选项:示例
rbd migration commit pool2/image2 --force
[root@rbd-client ~]# rbd migration commit pool2/image2 --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您在准备步骤后没有重新启动客户端,请使用新目标镜像名称重启客户端。