5.5. 在集群中创建镜像 LVM 逻辑卷
在集群中创建镜像 LVM 逻辑卷需要与在具有片段类型为
mirror 的单个节点上创建镜像 LVM 逻辑卷的命令和流程相同。但是,要在集群中创建镜像 LVM 卷:
- 集群和集群镜像基础架构必须正在运行
- 集群必须是 quorate
lvm.conf文件中的锁定类型必须正确设置以启用集群锁定,use_lvmetad设置应该是 0。但请注意,在 Red Hat Enterprise Linux 7 中,ocf:heartbeat:clvmPacemaker 资源代理本身,作为启动过程的一部分执行这些任务。
在 Red Hat Enterprise Linux 7 中,集群通过 Pacemaker 进行管理。集群式 LVM 逻辑卷只在与 Pacemaker 集群一起使用才被支持,且必须配置为集群资源。
以下流程在集群中创建镜像 LVM 卷。
- 安装集群软件和 LVM 软件包,启动集群软件并创建集群。您必须为集群配置隔离。文档 High Availability Add-On 管理 提供了创建集群并为集群中节点配置隔离的示例步骤。文档 High Availability Add-On 参考 提供有关集群配置组件的更多详情。
- 要创建由集群中所有节点共享的镜像逻辑卷,必须在集群的每个节点中的
lvm.conf文件中正确设置锁定类型。默认情况下,锁定类型被设置为 local。要更改它,在集群的每个节点中执行以下命令以启用群集式锁定:# /sbin/lvmconf --enable-cluster - 为集群设置
dlm资源。作为克隆的资源创建资源,以便在集群中的每个节点上运行。# pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true - 将
clvmd配置为集群资源。与dlm资源一样,您可以将资源创建为克隆的资源,以便它将在集群的每个节点上运行。请注意,您必须设置with_cmirrord=true参数,以便在clvmd运行的所有节点上启用 cmirrord 守护进程。# pcs resource create clvmd ocf:heartbeat:clvm with_cmirrord=true op monitor interval=30s on-fail=fence clone interleave=true ordered=true如果您已经配置了clvmd资源,但没有指定with_cmirrord=true参数,您可以使用以下命令更新资源使其包含参数。# pcs resource update clvmd with_cmirrord=true - 设置
clvmd和dlm依赖项并启动顺序。clvmd必须在dlm后启动,且必须在与dlm相同的节点上运行。# pcs constraint order start dlm-clone then clvmd-clone # pcs constraint colocation add clvmd-clone with dlm-clone - 创建镜像。第一步是创建物理卷。以下命令创建三个物理卷。两个物理卷将用于镜像分支,第三个物理卷将包含镜像日志。
# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created # pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created # pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created - 创建卷组。这个示例创建了一个卷组
vg001,它由上一步中创建的三个物理卷组成。# vgcreate vg001 /dev/sdb1 /dev/sdc1 /dev/sdd1 Clustered volume group "vg001" successfully created请注意,vgcreate命令的输出表示卷组是集群的。您可以使用 vgs 命令验证卷组是否已集群,该命令将显示卷组的属性。如果卷组已群集,它将显示 c 属性。# vgs vg001 VG #PV #LV #SN Attr VSize VFree vg001 3 0 0 wz--nc 68.97G 68.97G - 创建镜像的逻辑卷。这个示例从卷组
vg001创建逻辑卷mirrorlv。这个卷有一个镜像分支。这个示例指定将哪个物理卷扩展用于逻辑卷。# lvcreate --type mirror -l 1000 -m 1 vg001 -n mirrorlv /dev/sdb1:1-1000 /dev/sdc1:1-1000 /dev/sdd1:0 Logical volume "mirrorlv" created您可以使用 lvs 命令显示创建镜像的进度。以下示例显示,镜像为 47% 同步,然后同步 91%,然后在镜像完成时 100% 同步。# lvs vg001/mirrorlv LV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 47.00 # lvs vg001/mirrorlv LV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 91.00 # lvs vg001/mirrorlv LV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 100.00在系统日志中记录了镜像完成:May 10 14:52:52 doc-07 [19402]: Monitoring mirror device vg001-mirrorlv for events May 10 14:55:00 doc-07 lvm[19402]: vg001-mirrorlv is now in-sync - 您可以使用带有 -o +devices 选项的 lvs 命令显示镜像的配置,包括构成镜像 leg 的设备。您可以看到此示例中的逻辑卷由两个线性镜像和一个日志组成。
# lvs -a -o +devices LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices mirrorlv vg001 mwi-a- 3.91G mirrorlv_mlog 100.00 mirrorlv_mimage_0(0),mirrorlv_mimage_1(0) [mirrorlv_mimage_0] vg001 iwi-ao 3.91G /dev/sdb1(1) [mirrorlv_mimage_1] vg001 iwi-ao 3.91G /dev/sdc1(1) [mirrorlv_mlog] vg001 lwi-ao 4.00M /dev/sdd1(0)您可以使用 lvs 的seg_pe_ranges选项来显示数据布局。您可以使用这个选项验证您的布局是否正确冗余。此命令的输出以与 lvcreate 和 lvresize 命令采用的格式显示 PE 范围。# lvs -a -o +seg_pe_ranges --segments PE Ranges mirrorlv_mimage_0:0-999 mirrorlv_mimage_1:0-999 /dev/sdb1:1-1000 /dev/sdc1:1-1000 /dev/sdd1:0-0
注意
有关从 LVM 镜像卷的一个分支失败时恢复的详情,请参考 第 6.2 节 “从 LVM 镜像故障中恢复”。