5.5. 在集群中创建镜像 LVM 逻辑卷
在集群中创建镜像 LVM 逻辑卷需要与在具有片段类型为
mirror
的单个节点上创建镜像 LVM 逻辑卷的命令和流程相同。但是,要在集群中创建镜像 LVM 卷:
- 集群和集群镜像基础架构必须正在运行
- 集群必须是 quorate
lvm.conf
文件中的锁定类型必须正确设置以启用集群锁定,use_lvmetad
设置应该是 0。但请注意,在 Red Hat Enterprise Linux 7 中,ocf:heartbeat:clvm
Pacemaker 资源代理本身,作为启动过程的一部分执行这些任务。
在 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 镜像故障中恢复”。