6.2. 配置 Ceph 块设备镜像概述


rbd-mirror 守护进程可以在单个 Ceph 存储集群上运行,实现单向镜像功能,也可以在两个 Ceph 存储集群上运行,以实现参与镜像关系的双向镜像。

rbd-mirror 守护进程负责通过从远程主镜像拉取更改,将镜像从一个 Ceph 存储集群同步到另一个 Ceph 存储集群,并将这些更改写入本地的非主镜像。

要使 RBD 镜像工作(可使用单向复制或双向复制),进行几个假设:

  • 两个存储集群中都存在一个名称相同的池。
  • 对于基于日志的镜像功能,池包含要镜像的启用了日志的镜像。
重要

在单向或双向复制中,rbd-mirror 的每个实例必须能够同时连接其他 Ceph 存储集群。另外,两个数据中心站点之间网络必须具有足够的带宽才能处理镜像。

镜像以每个池为基础配置,带有镜像对等存储集群。Ceph 支持两种镜像模式,具体取决于池中镜像的类型。

池模式
启用了日志记录功能的池中的所有镜像都会被镜像(mirror)。
镜像模式
只有池中的特定镜像子集才会被镜像(mirror)。您必须为每个镜像单独启用镜像功能。

镜像是否可以修改取决于其状态:

  • 您可以修改处于主状态的镜像。
  • 您无法修改处于非主要状态的镜像。

镜像在镜像上启用镜像时自动提升为主要镜像。升级可能发生:

  • 通过在池模式中启用镜像且仅适用于基于日志的镜像来隐式执行。
  • 通过启用特定镜像的镜像来显式启用。

可以降级主镜像并提升非主镜像。

6.2.1. 单向复制(One-way Replication)

单向镜像意味着一个存储集群中的主要镜像或镜像池会被复制到次要存储集群。单向镜像还支持复制到多个次要存储集群。

在辅助存储群集上,镜像是非主要复制;即 Ceph 客户端无法写入镜像。当数据从主存储集群镜像到次要存储集群时,rbd-mirror 仅在次要存储集群上运行。

为了进行单向镜像工作,应进行几项假设:

  • 您有两个 Red Hat Storage Ceph 存储集群,您想要将镜像从主存储集群复制到辅助存储集群。
  • 辅助存储集群包含 rbd-mirror 守护进程,可在其中一个集群节点上运行。rbd-mirror 守护进程连接到主存储集群,将镜像同步到次要存储集群。

图 6.1. 单向镜像

单向镜像

6.2.2. 双向复制(Two-way Replication)

双向复制在主集群中添加一个 rbd-mirror 守护进程,使得镜像可以在集群上降级并提升到次要集群中。然后可以对次要群集上的镜像进行更改,然后按照相反方向(从次要到主要)进行复制。两个集群都必须运行 rbd-mirror,才能在任一集群上提升和降级镜像。目前,仅在两个站点间支持双向复制。

要进行双向镜像工作,请进行几项假设:

  • 您有两个存储集群,希望在它们之间以任一方向复制镜像。
  • 两个存储集群都运行 rbd-mirror 守护进程。cluster1 上主的镜像由远程集群上的 rbd-mirror 守护进程同步,远程集群上的镜像与主集群同步。

图 6.2. 双向镜像

双向镜像

6.2.3. 使用命令行界面配置单向镜像

使用单向复制时,您可以镜像到多个次要存储集群。

本节中的示例通过将主镜像作为 site-a 引用主存储集群和您要复制镜像的辅助存储集群作为 site-b 来区分两个存储集群。这些示例中使用的池名称称为 data

先决条件

  • 至少两个正在运行的 Red Hat Ceph Storage 集群。
  • 对每个存储集群的 Ceph 客户端节点的根级别访问权限。
  • 具有管理员级别功能的 CephX 用户。

流程

  1. 在两个站点上登录到 cephadm shell:

    示例

    [root@site-a ~]# cephadm shell
    [root@site-b ~]# cephadm shell

  2. site-b 上,调度在二级集群中部署 mirror 守护进程:

    语法

    ceph orch apply rbd-mirror --placement=NODENAME

    示例

    [ceph: root@site-b /]# ceph orch apply rbd-mirror --placement=host04

    注意

    nodename 是要在二级集群中配置镜像的主机。

  3. site-a 上的镜像上启用日志功能。

    1. 对于新镜像,使用 --image-feature 选项:

      语法

      rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE FEATURE

      示例

      [ceph: root@site-a /]# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling

      注意

      如果已经启用了 exclusive-lock,则使用 journaling 作为唯一参数,否则会返回以下错误:

      one or more requested features are already enabled
      (22) Invalid argument
    2. 对于现有镜像,请使用 rbd feature enable 命令:

      语法

      rbd feature enable POOL_NAME/IMAGE_NAME FEATURE, FEATURE

      示例

      [ceph: root@site-a /]# rbd feature enable data/image1 exclusive-lock, journaling

    3. 要默认在所有新镜像中启用日志,请使用 ceph config set 命令设置配置参数:

      示例

      [ceph: root@site-a /]# ceph config set global rbd_default_features 125
      [ceph: root@site-a /]# ceph config show mon.host01 rbd_default_features

  4. 在两个存储集群中选择 mirroring 模式(池模式或镜像模式)。

    1. 启用 池模式

      语法

      rbd mirror pool enable POOL_NAME MODE

      示例

      [ceph: root@site-a /]# rbd mirror pool enable data pool
      [ceph: root@site-b /]# rbd mirror pool enable data pool

      这个示例启用对名为 data 的完整池进行镜像。

    2. 启用 镜像模式

      语法

      rbd mirror pool enable POOL_NAME MODE

      示例

      [ceph: root@site-a /]# rbd mirror pool enable data image
      [ceph: root@site-b /]# rbd mirror pool enable data image

      这个示例在名为 data 的池上启用镜像模式镜像。

      注意

      要在池中为特定镜像启用镜像功能,请参阅 Red Hat Ceph Storage Block Device Guide 中的 Enabling image mirroring 部分以了解更多详细信息。

    3. 验证两个站点都已成功启用了镜像:

      语法

      rbd mirror pool info POOL_NAME

      示例

      [ceph: root@site-a /]# rbd mirror pool info data
      Mode: pool
      Site Name: c13d8065-b33d-4cb5-b35f-127a02768e7f
      
      Peer Sites: none
      
      [ceph: root@site-b /]# rbd mirror pool info data
      Mode: pool
      Site Name: a4c667e2-b635-47ad-b462-6faeeee78df7
      
      Peer Sites: none

  5. 在 Ceph 客户端节点上,引导存储集群对等点。

    1. 创建 Ceph 用户帐户,并将存储集群对等注册到池:

      语法

      rbd mirror pool peer bootstrap create --site-name PRIMARY_LOCAL_SITE_NAME POOL_NAME > PATH_TO_BOOTSTRAP_TOKEN

      示例

      [ceph: root@rbd-client-site-a /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a

      注意

      这个示例 bootstrap 命令创建 client.rbd-mirror.site-aclient.rbd-mirror-peer Ceph 用户。

    2. 将 bootstrap 令牌文件复制到 site-b 存储集群。
    3. site-b 存储集群中导入 bootstrap 令牌:

      语法

      rbd mirror pool peer bootstrap import --site-name SECONDARY_LOCAL_SITE_NAME --direction rx-only POOL_NAME PATH_TO_BOOTSTRAP_TOKEN

      示例

      [ceph: root@rbd-client-site-b /]# rbd mirror pool peer bootstrap import --site-name site-b --direction rx-only data /root/bootstrap_token_site-a

      注意

      对于单向 RBD 镜像功能,您必须使用 --direction rx-only 参数,因为在引导对等时双向镜像是默认设置。

验证步骤

  1. 要验证镜像状态,请从主站点和次要站点的 Ceph monitor 节点运行以下命令:

    语法

    rbd mirror image status POOL_NAME/IMAGE_NAME

    示例

    [ceph: root@mon-site-a /]# rbd mirror image status data/image1
    image1:
      global_id:   c13d8065-b33d-4cb5-b35f-127a02768e7f
      state:       up+stopped
      description: remote image is non-primary
      service:     host03.yuoosv on host03
      last_update: 2021-10-06 09:13:58

    在这里,up 表示 rbd-mirror 守护进程正在运行,stopped 意味着此镜像不是从另一个存储集群复制的目标。这是因为镜像是这个存储集群的主要部分。

    示例

    [ceph: root@mon-site-b /]# rbd mirror image status data/image1
    image1:
      global_id:   c13d8065-b33d-4cb5-b35f-127a02768e7f

6.2.4. 使用命令行界面配置双向镜像

使用双向复制时,您只能在两个存储集群之间镜像。

本节中的示例通过将主镜像作为 site-a 引用主存储集群和您将要复制镜像的辅助存储集群作为 site-b 来区分两个存储集群。这些示例中使用的池名称称为 data

先决条件

  • 至少两个正在运行的 Red Hat Ceph Storage 集群。
  • 对每个存储集群的 Ceph 客户端节点的根级别访问权限。
  • 具有管理员级别功能的 CephX 用户。

流程

  1. 在两个站点上登录到 cephadm shell:

    示例

    [root@site-a ~]# cephadm shell
    [root@site-b ~]# cephadm shell

  2. site-a 主集群中运行以下命令:

    示例

    [ceph: root@site-a /]# ceph orch apply rbd-mirror --placement=host01

    注意

    nodename 是您要配置镜像的主机。

  3. site-b 上,调度在二级集群中部署 mirror 守护进程:

    语法

    ceph orch apply rbd-mirror --placement=NODENAME

    示例

    [ceph: root@site-b /]# ceph orch apply rbd-mirror --placement=host04

    注意

    nodename 是要在二级集群中配置镜像的主机。

  4. site-a 上的镜像上启用日志功能。

    1. 对于新镜像,使用 --image-feature 选项:

      语法

      rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE FEATURE

      示例

      [ceph: root@site-a /]# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling

      注意

      如果已经启用了 exclusive-lock,则使用 journaling 作为唯一参数,否则会返回以下错误:

      one or more requested features are already enabled
      (22) Invalid argument
    2. 对于现有镜像,请使用 rbd feature enable 命令:

      语法

      rbd feature enable POOL_NAME/IMAGE_NAME FEATURE, FEATURE

      示例

      [ceph: root@site-a /]# rbd feature enable data/image1 exclusive-lock, journaling

    3. 要默认在所有新镜像中启用日志,请使用 ceph config set 命令设置配置参数:

      示例

      [ceph: root@site-a /]# ceph config set global rbd_default_features 125
      [ceph: root@site-a /]# ceph config show mon.host01 rbd_default_features

  5. 在两个存储集群中选择 mirroring 模式(池模式或镜像模式)。

    1. 启用 池模式

      语法

      rbd mirror pool enable POOL_NAME MODE

      示例

      [ceph: root@site-a /]# rbd mirror pool enable data pool
      [ceph: root@site-b /]# rbd mirror pool enable data pool

      这个示例启用对名为 data 的完整池进行镜像。

    2. 启用 镜像模式

      语法

      rbd mirror pool enable POOL_NAME MODE

      示例

      [ceph: root@site-a /]# rbd mirror pool enable data image
      [ceph: root@site-b /]# rbd mirror pool enable data image

      这个示例在名为 data 的池上启用镜像模式镜像。

      注意

      要在池中为特定镜像启用镜像功能,请参阅 Red Hat Ceph Storage Block Device Guide 中的 Enabling image mirroring 部分以了解更多详细信息。

    3. 验证两个站点都已成功启用了镜像:

      语法

      rbd mirror pool info POOL_NAME

      示例

      [ceph: root@site-a /]# rbd mirror pool info data
      Mode: pool
      Site Name: c13d8065-b33d-4cb5-b35f-127a02768e7f
      
      Peer Sites: none
      
      [ceph: root@site-b /]# rbd mirror pool info data
      Mode: pool
      Site Name: a4c667e2-b635-47ad-b462-6faeeee78df7
      
      Peer Sites: none

  6. 在 Ceph 客户端节点上,引导存储集群对等点。

    1. 创建 Ceph 用户帐户,并将存储集群对等注册到池:

      语法

      rbd mirror pool peer bootstrap create --site-name PRIMARY_LOCAL_SITE_NAME POOL_NAME > PATH_TO_BOOTSTRAP_TOKEN

      示例

      [ceph: root@rbd-client-site-a /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a

      注意

      这个示例 bootstrap 命令创建 client.rbd-mirror.site-aclient.rbd-mirror-peer Ceph 用户。

    2. 将 bootstrap 令牌文件复制到 site-b 存储集群。
    3. site-b 存储集群中导入 bootstrap 令牌:

      语法

      rbd mirror pool peer bootstrap import --site-name SECONDARY_LOCAL_SITE_NAME --direction rx-tx POOL_NAME PATH_TO_BOOTSTRAP_TOKEN

      示例

      [ceph: root@rbd-client-site-b /]# rbd mirror pool peer bootstrap import --site-name site-b --direction rx-tx data /root/bootstrap_token_site-a

      注意

      --direction 参数是可选的,因为在 bootstrapping peers 时双向镜像是默认设置。

验证步骤

  1. 要验证镜像状态,请从主站点和次要站点的 Ceph monitor 节点运行以下命令:

    语法

    rbd mirror image status POOL_NAME/IMAGE_NAME

    示例

    [ceph: root@mon-site-a /]# rbd mirror image status data/image1
    image1:
      global_id:   a4c667e2-b635-47ad-b462-6faeeee78df7
      state:       up+stopped
      description: local image is primary
      service:     host03.glsdbv on host03.ceph.redhat.com
      last_update: 2021-09-16 10:55:58
      peer_sites:
        name: a
        state: up+stopped
        description: replaying, {"bytes_per_second":0.0,"entries_behind_primary":0,"entries_per_second":0.0,"non_primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1},"primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1}}
        last_update: 2021-09-16 10:55:50

    在这里,up 表示 rbd-mirror 守护进程正在运行,stopped 意味着此镜像不是从另一个存储集群复制的目标。这是因为镜像是这个存储集群的主要部分。

    示例

    [ceph: root@mon-site-b /]# rbd mirror image status data/image1
    image1:
      global_id:   a4c667e2-b635-47ad-b462-6faeeee78df7
      state:       up+replaying
      description: replaying, {"bytes_per_second":0.0,"entries_behind_primary":0,"entries_per_second":0.0,"non_primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1},"primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1}}
      service:     host05.dtisty on host05
      last_update: 2021-09-16 10:57:20
      peer_sites:
        name: b
        state: up+stopped
        description: local image is primary
        last_update: 2021-09-16 10:57:28

    如果镜像处于 up+replaying 状态,则镜像可以正常工作。在这里,up 表示 rbd-mirror 守护进程正在运行,replaying 表示此镜像是从另一个存储集群复制的目标。

    注意

    根据站点之间的连接,镜像可能需要很长时间才能同步镜像。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部