5.5. Creating a Mirrored LVM Logical Volume in a Cluster
mirror. However, in order to create a mirrored LVM volume in a cluster:
- The cluster and cluster mirror infrastructure must be running
- The cluster must be quorate
- The locking type in the
lvm.conffile must be set correctly to enable cluster locking and the
use_lvmetadsetting should be 0. Note, however, that in Red Hat Enterprise Linux 7 the
ocf:heartbeat:clvmPacemaker resource agent itself, as part of the start procedure, performs these tasks.
- Install the cluster software and LVM packages, start the cluster software, and create the cluster. You must configure fencing for the cluster. The document High Availability Add-On Administration provides a sample procedure for creating a cluster and configuring fencing for the nodes in the cluster. The document High Availability Add-On Reference provides more detailed information about the components of cluster configuration.
- In order to create a mirrored logical volume that is shared by all of the nodes in a cluster, the locking type must be set correctly in the
lvm.conffile in every node of the cluster. By default, the locking type is set to local. To change this, execute the following command in each node of the cluster to enable clustered locking:
- Set up a
dlmresource for the cluster. You create the resource as a cloned resource so that it will run on every node in the cluster.
pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
clvmdas a cluster resource. Just as for the
dlmresource, you create the resource as a cloned resource so that it will run on every node in the cluster. Note that you must set the
with_cmirrord=trueparameter to enable the
cmirrorddaemon on all of the nodes that
pcs resource create clvmd ocf:heartbeat:clvm with_cmirrord=true op monitor interval=30s on-fail=fence clone interleave=true ordered=trueIf you have already configured a
clvmdresource but did not specify the
with_cmirrord=trueparameter, you can update the resource to include the parameter with the following command.
pcs resource update clvmd with_cmirrord=true
- Set up
dlmdependency and start up order.
clvmdmust start after
dlmand must run on the same node as
pcs constraint order start dlm-clone then clvmd-clone#
pcs constraint colocation add clvmd-clone with dlm-clone
- Create the mirror. The first step is creating the physical volumes. The following commands create three physical volumes. Two of the physical volumes will be used for the legs of the mirror, and the third physical volume will contain the mirror log.
pvcreate /dev/sdb1Physical volume "/dev/sdb1" successfully created #
pvcreate /dev/sdc1Physical volume "/dev/sdc1" successfully created #
pvcreate /dev/sdd1Physical volume "/dev/sdd1" successfully created
- Create the volume group. This example creates a volume group
vg001that consists of the three physical volumes that were created in the previous step.
vgcreate vg001 /dev/sdb1 /dev/sdc1 /dev/sdd1Clustered volume group "vg001" successfully createdNote that the output of the
vgcreatecommand indicates that the volume group is clustered. You can verify that a volume group is clustered with the
vgscommand, which will show the volume group's attributes. If a volume group is clustered, it will show a c attribute.
vgs vg001VG #PV #LV #SN Attr VSize VFree vg001 3 0 0 wz--nc 68.97G 68.97G
- Create the mirrored logical volume. This example creates the logical volume
mirrorlvfrom the volume group
vg001. This volume has one mirror leg. This example specifies which extents of the physical volume will be used for the logical volume.
lvcreate --type mirror -l 1000 -m 1 vg001 -n mirrorlv /dev/sdb1:1-1000 /dev/sdc1:1-1000 /dev/sdd1:0Logical volume "mirrorlv" createdYou can use the
lvscommand to display the progress of the mirror creation. The following example shows that the mirror is 47% synced, then 91% synced, then 100% synced when the mirror is complete.
lvs vg001/mirrorlvLV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 47.00 #
lvs vg001/mirrorlvLV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 91.00 #
lvs vg001/mirrorlvLV VG Attr LSize Origin Snap% Move Log Copy% Convert mirrorlv vg001 mwi-a- 3.91G vg001_mlog 100.00The completion of the mirror is noted in the system log:
May 10 14:52:52 doc-07 : Monitoring mirror device vg001-mirrorlv for events May 10 14:55:00 doc-07 lvm: vg001-mirrorlv is now in-sync
- You can use the
lvscommand with the
-o +devicesoptions to display the configuration of the mirror, including which devices make up the mirror legs. You can see that the logical volume in this example is composed of two linear images and one log.
lvs -a -o +devicesLV 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)You can use the
seg_pe_rangesoption of the
lvsto display the data layout. You can use this option to verify that your layout is properly redundant. The output of this command displays PE ranges in the same format that the
lvresizecommands take as input.
lvs -a -o +seg_pe_ranges --segmentsPE Ranges mirrorlv_mimage_0:0-999 mirrorlv_mimage_1:0-999 /dev/sdb1:1-1000 /dev/sdc1:1-1000 /dev/sdd1:0-0