第 6 章 镜像 Ceph 块设备
作为存储管理员,您可以通过镜像 Red Hat Ceph Storage 集群之间的数据镜像,为 Ceph 块设备添加另一层冗余。了解和使用 Ceph 块设备镜像功能可帮助您防止数据丢失,如站点故障。镜像 Ceph 块设备有两种配置,单向镜像或双向镜像,您可以在池和单个镜像上配置镜像功能。
先决条件
- 至少运行两个健康的 Red Hat Ceph Storage 集群。
- 两个存储集群之间的网络连接。
- 为每个 Red Hat Ceph Storage 集群访问 Ceph 客户端节点。
- 具有管理员级别功能的 CephX 用户。
6.1. Ceph 块设备镜像
RADOS 块设备 (RBD) 镜像是在两个或多个 Ceph 存储集群之间异步复制 Ceph 块设备镜像的过程。通过在不同的地理位置查找 Ceph 存储集群,RBD 镜像功能可帮助您从站点灾难中恢复。基于日志的 Ceph 块设备镜像可确保镜像所有更改的时间点一致性副本,包括读取和写入、块设备调整大小、快照、克隆和扁平化。
RBD 镜像使用专用锁定和日志记录功能,按照镜像发生的顺序记录对镜像的所有修改。这样可确保镜像的崩溃一致性镜像可用。
支持镜像块设备镜像的主要和次要池的 CRUSH 层次结构必须具有相同的容量和性能特性,并且必须具有足够的带宽才能确保镜像无延迟。例如,如果您的主存储集群中有 X MB/s 平均写入吞吐量,则网络必须支持连接至次要站点的 N * X 吞吐量,以及 Y% 用于镜像 N 镜像的安全因子。
rbd-mirror
守护进程负责通过从远程主镜像拉取更改,将镜像从一个 Ceph 存储集群同步到另一个 Ceph 存储集群,并将这些更改写入本地的非主镜像。rbd-mirror
守护进程可以在单个 Ceph 存储集群上运行,实现单向镜像功能,也可以在两个 Ceph 存储集群上运行,以实现参与镜像关系的双向镜像。
要使 RBD 镜像工作(可使用单向复制或双向复制),进行几个假设:
- 两个存储集群中都存在一个名称相同的池。
- 池包含您要镜像的启用了日志的镜像。
在单向或双向复制中,rbd-mirror
的每个实例必须能够同时连接其他 Ceph 存储集群。此外,两个数据中心站点之间网络必须具有足够的带宽才能处理镜像。
单向复制(One-way Replication)
单向镜像意味着一个存储集群中的主要镜像或镜像池会被复制到次要存储集群。单向镜像还支持复制到多个次要存储集群。
在辅助存储群集上,镜像是非主要复制;即 Ceph 客户端无法写入镜像。当数据从主存储集群镜像到次要存储集群时,rbd-mirror
只在次要存储集群上运行。
为了进行单向镜像工作,应进行几项假设:
- 您有两个 Ceph 存储集群,希望将镜像从主存储集群复制到辅助存储集群。
-
辅助存储集群附加有运行
rbd-mirror
守护进程的 Ceph 客户端节点。rbd-mirror
守护进程将连接到主存储集群,将镜像同步到次要存储集群。
图 6.1. 单向镜像
双向复制(Two-way Replication)
双向复制在主集群中添加一个 rbd-mirror
守护进程,使得镜像可以在集群上降级并提升到次要集群中。然后可以对次要群集上的镜像进行更改,然后按照相反方向(从次要到主要)进行复制。两个集群都必须运行 rbd-mirror
,才能在任一集群上提升和降级镜像。目前,仅在两个站点间支持双向复制。
要进行双向镜像工作,请进行几项假设:
- 您有两个存储集群,希望在它们之间以任一方向复制镜像。
-
两个存储集群都附加了一个客户端节点,它们运行
rbd-mirror
守护进程。次要存储集群上运行的rbd-mirror
守护进程将连接到主存储集群,将镜像同步到次要存储集群,而主存储集群上运行的rbd-mirror
守护进程将连接到次要存储集群,将镜像同步到主要位置。
图 6.2. 双向镜像
镜像模式
镜像以每个池为基础配置,带有镜像对等存储集群。Ceph 支持两种镜像模式,具体取决于池中镜像的类型。
- 池模式
- 启用了日志记录功能的池中的所有镜像都会被镜像(mirror)。
- 镜像模式
- 只有池中的特定镜像子集才会被镜像(mirror)。您必须为每个镜像单独启用镜像功能。
镜像状态
镜像是否可以修改取决于其状态:
- 可以修改处于主要状态的镜像。
- 处于非主要状态的镜像无法修改。
镜像在镜像上首次启用镜像时自动提升为主版本。升级可能发生:
- 通过在池模式中启用镜像来隐式执行镜像。
- 通过启用特定镜像的镜像来显式启用。
可以降级主镜像并提升非主镜像。
其它资源
6.1.1. 基于日志和基于快照的镜像概述
RADOS 块设备(RBD)镜像可以通过两种模式在两个 Red Hat Ceph Storage 集群间进行异步镜像:
基于日志的镜像
此模式使用 RBD 日志镜像功能来确保两个 Red Hat Ceph Storage 集群之间的特定时间点和崩溃时的复制一致性。在对 RBD 镜像进行每次写入前,不会修改实际镜像,直到首次记录到关联的日志。远程集群从这个日志中读取,并将更新重新显示到其镜像的本地副本。由于对 RBD 镜像的每个写入会导致对 Ceph 集群进行两次写入,因此使用 RBD 日志镜像功能时写入延迟几乎会加倍。
基于快照的镜像
此模式使用定期调度或手动创建 RBD 镜像镜像快照,在两个 Red Hat Ceph Storage 集群间复制一致的 RBD 镜像。远程集群决定两个镜像快照之间的任何数据或元数据更新,并将 deltas 复制到其镜像的本地副本。RBD fast-diff
镜像功能可快速确定更新的数据块,而无需扫描完整的 RBD 镜像。在故障转移方案期间使用前,需要同步两个快照之间的完整增量。在故障转移时,任何部分应用的 deltas 都会被回滚。