2.12. 在池之间移动镜像


您可以在同一集群内的不同池之间移动 RADOS 块设备 (RBD) 镜像。

在此过程中,源镜像会复制到具有所有快照历史记录的目标镜像,也可选择性地复制到源镜像的父镜像中,以帮助保留稀疏性。源镜像是只读的,目标镜像是可写的。目标镜像在迁移过程中链接到源镜像。

您可以在使用新目标镜像时安全地在后台运行此过程。但是,在准备步骤前停止使用目标镜像的所有客户端,以确保更新使用该镜像的客户端以指向新的目标镜像。

重要

krbd 内核模块目前不支持实时迁移。

先决条件

  • 停止所有使用该源镜像的客户端。
  • 客户端节点的根级别访问权限。

流程

  1. 通过创建跨链接源和目标镜像的新目标镜像准备迁移:

    语法

    rbd migration prepare SOURCE_IMAGE TARGET_IMAGE

    替换:

    • SOURCE_IMAGE,带有要移动的镜像的名称。使用 POOL/IMAGE_NAME 格式。
    • TARGET_IMAGE,带有新镜像的名称。使用 POOL/IMAGE_NAME 格式。

    示例

    [root@rbd-client ~]# rbd migration prepare pool1/image1 pool2/image2

  2. 验证新目标镜像的状态,这应该为 prepared

    语法

    rbd status TARGET_IMAGE

    示例

    [root@rbd-client ~]# rbd status pool2/image2
    Watchers: none
    Migration:
                source: pool1/image1 (5e2cba2f62e)
                destination: pool2/image2 (5e2ed95ed806)
                state: prepared

  3. (可选)使用新目标镜像名称重新启动客户端。
  4. 将源镜像复制到目标镜像:

    语法

    rbd migration execute TARGET_IMAGE

    示例

    [root@rbd-client ~]# rbd migration execute pool2/image2

  5. 确保迁移已完成:

    示例

    [root@rbd-client ~]# rbd status pool2/image2
    Watchers:
        watcher=1.2.3.4:0/3695551461 client.123 cookie=123
    Migration:
                source: pool1/image1 (5e2cba2f62e)
                destination: pool2/image2 (5e2ed95ed806)
                state: executed

  6. 通过删除源镜像和目标镜像之间的跨链接来提交迁移,这也会移除源镜像:

    语法

    rbd migration commit TARGET_IMAGE

    示例

    [root@rbd-client ~]# rbd migration commit pool2/image2

    如果源镜像是一个或多个克隆的父镜像,请在确保克隆镜像不在使用后使用 --force 选项:

    示例

    [root@rbd-client ~]# rbd migration commit pool2/image2 --force

  7. 如果您在准备步骤后没有重新启动客户端,请使用新目标镜像名称重启客户端。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.