Making LVM Mirror on Linux using Red Hat CLuster Suite - CLVM (Cluster LVM) - on RHEL 5

Posted by kairo on Wed 06 May 2009

1. The scenario

On my box I've two disks from two differents Storage Disk.

Using multipath I've this disks
/dev/dm-15 from Storage Disk A (in use)
/dev/dm-28 from Storage Disk B (not in use yet.)

I've the Volume Group with name vg_gfs00 on /dev/dm-15
I've the Logical Volume with name lv00 on the Volume Group VG_GFS

Looking my outputs pvs, vgs and lvs

PVS output
# pvs PV         VG          Fmt  Attr PSize   PFree /dev/dm-15 vg_gfs00    lvm2 a-   278,98G 39,95G /dev/sda3  rootvg      lvm2 a-   131,47G 86,19G

VGS output
# vgs VG          #PV #LV #SN Attr   VSize   VFree rootvg        1  11   0 wz--n- 131,47G 86,19G vg_gfs00all   8   7   0 wz--n- 278,98G 39,95G

LVS output
# lvs LV          VG          Attr   LSize homelv      rootvg      -wi-ao 512,00M optlv       rootvg      -wi-ao   1,00G rootlv      rootvg      -wi-ao   1,00G tmplv       rootvg      -wi-ao   2,00G usrlv       rootvg      -wi-ao   4,00G varloglv    rootvg      -wi-ao   8,00G varlv       rootvg      -wi-ao   4,00G lv00        vg_gfs00    -wi-ao 239,03G

2. Objective

Implement a mirror on filesystems for high availbility if my Storage Disk A or B crashs.

3. Implementing

a. Make a PV on new disk (/dev/dm-28)

# pvcreate /dev/dm-28

b. Add new volume on the vg_gfs00

# vgextend vg_gfs00 /dev/dm-28

c. Make a mirror on Logical Volume

# lvconvert -m1 vg_gfs00/lv00 /dev/dm-28 vg_gfs00/lv00: Converted: 17,1% vg_gfs00/lv00: Converted: 34,1% vg_gfs00/lv00: Converted: 51,0% vg_gfs00/lv00: Converted: 68,4% vg_gfs00/lv00: Converted: 85,5% vg_gfs00/lv00: Converted: 100,0%

Note: If your LV are in more PVs you can specify all PVs
Sample:

# lvs -a -o +devices | grep lv00 lv00          vg_gfs00 -wi-ao  10,00G     /dev/dm-15(0) lv00          vg_gfs00 -wi-ao  10,00G     /dev/dm-16(123490)

In this case dm-15 and dm-16 are on my Storage Disk A, I need two disks on the Storage Disk B, sample dm-28 and dm-29.
For convert I use this
# lvconvert -m1 vg_gfs00/lv00 /dev/dm-28 /dev/dm-29

d. Checking Mirror with lvs -a -o +devices

# lvs -a -o +devices | grep vl00 lv00            vg_gfs00 mwi-ao  10,00G       lv00_mlog 100,00         lv00_mimage_0(0),lv00_mimage_1(0) [lv00_mimage_0] vg_gfs00 iwi-ao  10,00G                                /dev/dm-15(10242) [lv00_mimage_1] vg_gfs00 iwi-ao  10,00G                                /dev/dm-28(14086)

Looking details:

lv00 is a lv00_mlog and have a 100% of sync to lv00_mimage_0 and lv00_image1.
The lv00_mimage_0 is stored on /dev/dm-15
The lv00_mimage_1 is stored on /dev/dm-28

Looking with a simple lvs

# lvs LV          VG          Attr   LSize  Origin Snap%  Move Log              Copy%  Convert homelv      rootvg      -wi-ao 512,00M optlv       rootvg      -wi-ao   1,00G rootlv      rootvg      -wi-ao   1,00G tmplv       rootvg      -wi-ao   2,00G usrlv       rootvg      -wi-ao   4,00G varloglv    rootvg      -wi-ao   8,00G varlv       rootvg      -wi-ao   4,00G lv00        vg_gfs00    -wi-ao 239,03G              lv00_mlog 100,00

If the lv00_mlog is not 100% you have a problem with one of disks.

4. Documentation:

* http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Cluster_Logical_Volume_Manager/
- 2.3.3. Mirrored Logical Volumes
- 4.4.1.3. Creating Mirrored Volumes
- 6.3. Recovering from LVM Mirror Failure


Comments !