第 4 章 块设备镜像
RADOS 块设备(RBD)镜像是在两个或多个 Ceph 集群间异步复制 Ceph 块设备镜像的过程。镜像可确保镜像的所有更改的时间点一致副本,包括读取和写入、块设备调整大小、快照、克隆和扁平化。
镜像使用强制专用锁定和 RBD 日志功能,按照镜像发生的顺序记录对镜像的所有修改。这样可确保镜像的崩溃一致性镜像可用。在将镜像镜像到对等集群前,您必须启用日志。详情请查看 第 4.1 节 “启用日志”。
由于它是存储在主池和次要池中与获取镜像的块设备关联的镜像,因此 主池和次要池的 CRUSH 层次结构应具有相同的存储容量和性能特征。另外,主站点和次站点之间的网络连接应该有足够的带宽,以确保镜像在没有太多延迟的情况下进行。
支持镜像块设备镜像的主要和次要池的 CRUSH 层次结构必须具有相同的容量和性能特性,并且必须具有足够的带宽才能确保镜像无延迟。例如,如果您对主集群中的镜像有 X MiB/s 平均写入吞吐量,则网络必须支持到二级站点的网络连接中的 N114 X 吞吐量,再加上 Y% 安全因素来镜像 N 镜像。
镜像主要用于从灾难中恢复。根据您使用的镜像类型,请参阅通过 单向镜像从灾难中恢复,或者通过双向镜像从灾难中恢复。https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/3/html-single/block_device_guide/#recovering-from-a-disaster-with-one-way-mirroring-block
rbd-mirror 守护进程
rbd-mirror 守护进程负责将镜像从一个 Ceph 集群同步到另一个集群。
根据复制类型,rbd-mirror 在单个集群或参与镜像的所有集群中运行:
单向复制(One-way Replication)
-
当数据从主集群镜像到充当备份的二级集群时,
rbd-mirror仅在次要集群中运行。RBD 镜像可能有多个次要站点。
-
当数据从主集群镜像到充当备份的二级集群时,
双向复制(Two-way Replication)
-
双向复制在主集群中添加一个
rbd-mirror守护进程,使得镜像可以在集群上降级并提升到次要集群中。然后可以对次要群集上的镜像进行更改,然后按照相反方向(从次要到主要)进行复制。两个集群都必须运行rbd-mirror,才能在任一集群上提升和降级镜像。目前,仅在两个站点间支持双向复制。
-
双向复制在主集群中添加一个
rbd-mirror 软件包提供 rbd-mirror。
在双向复制中,rbd-mirror 的每个实例必须能够同时连接到其他 Ceph 集群。此外,两个数据中心站点之间网络必须具有足够的带宽才能处理镜像。
仅为每个 Ceph 集群运行单个 rbd-mirror 守护进程。
镜像模式
镜像基于对等集群内的每个池配置。Ceph 支持两种模式,具体取决于池中的镜像是什么:
镜像状态
镜像是否可以修改取决于其状态:
- 可以修改处于主要状态的镜像
- 处于非主要状态的镜像无法修改
镜像在镜像上首次启用镜像时自动提升为主版本。升级可能发生:
- 通过在池模式中启用镜像(请参阅 第 4.2 节 “池配置”)隐式
- 通过启用特定镜像的镜像(请参阅 第 4.3 节 “镜像配置”)明确启用
可以降级主镜像并提升非主镜像。详情请查看 第 4.3 节 “镜像配置”。
4.1. 启用日志 复制链接链接已复制到粘贴板!
您可以启用 RBD 日志功能:
- 创建镜像时
- 在已经存在的镜像上动态
日志取决于必须启用的 exclusive-lock 功能。请查看以下步骤。
要在创建镜像时启用日志,请使用 --image-feature 选项:
rbd create <image-name> --size <megabytes> --pool <pool-name> --image-feature <feature>
例如:
# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling
要在之前创建的镜像上启用日志,请使用 rbd feature enable 命令:
rbd feature enable <pool-name>/<image-name> <feature-name>
例如:
# rbd feature enable data/image1 exclusive-lock
# rbd feature enable data/image1 journaling
要默认在所有新镜像上启用日志,请在 Ceph 配置文件中添加以下设置:
rbd default features = 125