Posts Tagged ‘Cluster LVM’

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