6.5. Creating a Mirrored LVM Logical Volume in a Cluster
Creating a mirrored LVM logical volume in a cluster requires the same commands and procedures as creating a mirrored LVM logical volume on a single node. 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, and the locking type in the
lvm.conf
file must be set correctly to enable cluster locking, either directly or by means of the lvmconf
command as described in Section 4.1, “Creating LVM Volumes in a Cluster”.
The following procedure creates a mirrored LVM volume in a cluster. First the procedure checks to see whether the cluster services are installed and running, then the procedure creates the mirrored volume.
- 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.conf
file 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:/usr/sbin/lvmconf --enable-cluster
# /usr/sbin/lvmconf --enable-cluster
Copy to Clipboard Copied! - To create a clustered logical volume, the cluster infrastructure must be up and running on every node in the cluster. The following example verifies that the
clvmd
daemon is running on the node from which it was issued:ps auxw | grep clvmd
# ps auxw | grep clvmd root 17642 0.0 0.1 32164 1072 ? Ssl Apr06 0:00 clvmd -T20 -t 90
Copy to Clipboard Copied! The following command shows the local view of the cluster status:cman_tool services
# cman_tool services Service Name GID LID State Code ... DLM Lock Space: "clvmd" 7 3 run - [1 2 3] ...
Copy to Clipboard Copied! - Ensure that the
cmirror
andcmirror-kmod
packages are installed. Thecmirror-kmod
package that must be installed depends on the kernel that is running. For example, if the running kernel iskernel-largesmp
, it is necessary to havecmirror-kmod-largesmp
for the corresponding kernel version. - Start the
cmirror
service.service cmirror start
# service cmirror start Loading clustered mirror log: [ OK ]
Copy to Clipboard Copied! - 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/xvdb1 pvcreate /dev/xvdb2 pvcreate /dev/xvdc1
# pvcreate /dev/xvdb1 Physical volume "/dev/xvdb1" successfully created # pvcreate /dev/xvdb2 Physical volume "/dev/xvdb2" successfully created # pvcreate /dev/xvdc1 Physical volume "/dev/xvdc1" successfully created
Copy to Clipboard Copied! - Create the volume group. This example creates a volume group
vg001
that consists of the three physical volumes that were created in the previous step.vgcreate vg001 /dev/xvdb1 /dev/xvdb2 /dev/xvdc1
# vgcreate vg001 /dev/xvdb1 /dev/xvdb2 /dev/xvdc1 Clustered volume group "vg001" successfully created
Copy to Clipboard Copied! Note that the output of thevgcreate
command indicates that the volume group is clustered. You can verify that a volume group is clustered with thevgs
command, which will show the volume group's attributes. If a volume group is clustered, it will show a c attribute.vgs vg001
# vgs vg001 VG #PV #LV #SN Attr VSize VFree vg001 3 0 0 wz--nc 68.97G 68.97G
Copy to Clipboard Copied! - Create the mirrored logical volume. This example creates the logical volume
mirrorlv
from the volume groupvg001
. This volume has one mirror leg. This example specifies which extents of the physical volume will be used for the logical volume.lvcreate -l 1000 -m1 vg001 -n mirrorlv /dev/xvdb1:1-1000 /dev/xvdb2:1-1000 /dev/xvdc1:0
# lvcreate -l 1000 -m1 vg001 -n mirrorlv /dev/xvdb1:1-1000 /dev/xvdb2:1-1000 /dev/xvdc1:0 Logical volume "mirrorlv" created
Copy to Clipboard Copied! You can use thelvs
command 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/mirrorlv lvs vg001/mirrorlv lvs vg001/mirrorlv
# 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
Copy to Clipboard Copied! The completion of the mirror is noted in the system log: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
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
Copy to Clipboard Copied! - You can use the
lvs
with the-o +devices
options 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 +devices
# 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/xvdb1(1) [mirrorlv_mimage_1] vg001 iwi-ao 3.91G /dev/xvdb2(1) [mirrorlv_mlog] vg001 lwi-ao 4.00M /dev/xvdc1(0)
Copy to Clipboard Copied! For Red Hat Enterprise Linux 5.2 and later, you can use theseg_pe_ranges
option of thelvs
to 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 thelvcreate
andlvresize
commands take as input.lvs -a -o +seg_pe_ranges --segments
# lvs -a -o +seg_pe_ranges --segments PE Ranges mirrorlv_mimage_0:0-999 mirrorlv_mimage_1:0-999 /dev/xvdb1:1-1000 /dev/xvdb2:1-1000 /dev/xvdc1:0-0
Copy to Clipboard Copied! When you create the mirrored volume, you create theclustered_log
dlm space, which will contain the dlm locks for all mirrors.cman_tool services
# cman_tool services Service Name GID LID State Code Fence Domain: "default" 4 2 run - [1 2 3] DLM Lock Space: "clvmd" 12 7 run - [1 2 3] DLM Lock Space: "clustered_log" 14 9 run - [1 2 3] User: "usrm::manager" 10 4 run - [1 2 3]
Copy to Clipboard Copied!
Note
For information on recovering from the failure of one of the legs of an LVM mirrored volume, see Section 7.3, “Recovering from LVM Mirror Failure”.