Monday, April 7, 2014

Working with VxVM mirroring

How to make RAID 1 in simple steps. 

In Lab i have:


1- RHEL 6 system
2- two 2GB disks
   i - disk_4 -> i'll refer this disk as p_disk
  ii - disk_5 -> i'll refer this disk as s_disk

Note: disk_4 and disk_5 are names reported by OS in vxdisk -e list

"Making Mirror"
1- Create a disk group "mdg" with disk_4 as p_disk
vxdg init mdg p_disk=disk_4

check vxprint output for new DG

vxprint -g mdg 
Output is as follow:
TY NAME         ASSOC        KSTATE   LENGTH   PLOFFS   STATE    TUTIL0  PUTIL0
dg mdg          mdg          -        -        -        -        -       -

dm p_disk       disk_4       -        4099840  -        -        -       -


2- Now add second disk in "mdg" as s_disk
vxdg -g mdg adddisk s_disk=disk_5

Verify disk addition in vxprint output:
[root@lab1 ~]# vxprint -g mdg
TY NAME         ASSOC        KSTATE   LENGTH   PLOFFS   STATE    TUTIL0  PUTIL0
dg mdg          mdg          -        -        -        -        -       -

dm p_disk       disk_4       -        4099840  -        -        -       -
dm s_disk       disk_5       -        4099840  -        -        -       -


3- Create a volume in DG "mdg" on disk s_disk named "mvol"
vxassist -g mdg make mvol 4099840 s_disk

Verify volume creation from vxprint output
[root@lab1 ~]# vxprint -g mdg
TY NAME         ASSOC        KSTATE   LENGTH   PLOFFS   STATE    TUTIL0  PUTIL0
dg mdg          mdg          -        -        -        -        -       -

dm p_disk       disk_4       -        4099840  -        -        -       -
dm s_disk       disk_5       -        4099840  -        -        -       -

v  mvol         fsgen        ENABLED  4099840  -        ACTIVE   -       -
pl mvol-01      mvol         ENABLED  4099840  -        ACTIVE   -       -
sd s_disk-01    mvol-01      ENABLED  4099840  0        -        -       -


4- Add mirror to "mvol" on disk p_disk
vxassist -g mdg -b mirror mvol p_disk

Verify status using vxprint as follow:
[root@lab1 ~]# vxprint -g mdg
TY NAME         ASSOC        KSTATE   LENGTH   PLOFFS   STATE    TUTIL0  PUTIL0
dg mdg          mdg          -        -        -        -        -       -

dm p_disk       disk_4       -        4099840  -        -        -       -
dm s_disk       disk_5       -        4099840  -        -        -       -

v  mvol         fsgen        ENABLED  4099840  -        ACTIVE   ATT1    -
pl mvol-01      mvol         ENABLED  4099840  -        ACTIVE   -       -
sd s_disk-01    mvol-01      ENABLED  4099840  0        -        -       -
pl mvol-02      mvol         ENABLED  4099840  -        TEMPRMSD ATT     -
sd p_disk-01    mvol-02      ENABLED  4099840  0        -        -       -



NOTE: "TEMPRMSD" status of mvol-02 states that mirror is in process of sync.

verify sync process from vxtask list
[root@lab1 ~]# vxtask list
TASKID  PTID TYPE/STATE    PCT   PROGRESS
   191     -     ATCOPY/R 23.33% 0/4099840/956416 PLXATT mvol mvol-02 mdg auto-throttled


vxprint output after sync is complete:
[root@lab1 ~]# vxprint -g mdg
TY NAME         ASSOC        KSTATE   LENGTH   PLOFFS   STATE    TUTIL0  PUTIL0
dg mdg          mdg          -        -        -        -        -       -

dm p_disk       disk_4       -        4099840  -        -        -       -
dm s_disk       disk_5       -        4099840  -        -        -       -

v  mvol         fsgen        ENABLED  4099840  -        ACTIVE   -       -
pl mvol-01      mvol         ENABLED  4099840  -        ACTIVE   -       -
sd s_disk-01    mvol-01      ENABLED  4099840  0        -        -       -
pl mvol-02      mvol         ENABLED  4099840  -        ACTIVE   -       -
sd p_disk-01    mvol-02      ENABLED  4099840  0        -        -       -



Removing Mirror

Decide which disk is to remain active - Let's say i want p_disk to remain in DG and remove s_disk (remember we created volume originally on s_disk and then add p_disk for mirror - so logically p_disk is a secondary copy which will be primary after removal of s_disk from DG)

1- Remove mirror copy on disk s_disk
vxassist -g mdg remove mirror mvol '!s_disk'

NOTE: '!s_disk'  --  single quotes have been used since any command starting with ! on linux sometimes refers to some shell keyword and consequently failing of the command.

Verify results from vxprint:
[root@lab1 ~]# vxprint -g mdg
TY NAME         ASSOC        KSTATE   LENGTH   PLOFFS   STATE    TUTIL0  PUTIL0
dg mdg          mdg          -        -        -        -        -       -

dm p_disk       disk_4       -        4099840  -        -        -       -
dm s_disk       disk_5       -        4099840  -        -        -       -

v  mvol         fsgen        ENABLED  4099840  -        ACTIVE   -       -
pl mvol-02      mvol         ENABLED  4099840  -        ACTIVE   -       -
sd p_disk-01    mvol-02      ENABLED  4099840  0        -        -       -


Note: "mvol" is left with just one copy on plex mvol-02 while mvol-01 is removed. although mirror is removed but disk s_disk is still part of DG "mdg".

2- Let's remove s_disk from DG as well.
vxdg -g mdg rmdisk s_disk

Verify results from vxprint:

[root@lab1 ~]# vxprint -g mdg
TY NAME         ASSOC        KSTATE   LENGTH   PLOFFS   STATE    TUTIL0  PUTIL0
dg mdg          mdg          -        -        -        -        -       -

dm p_disk       disk_4       -        4099840  -        -        -       -

v  mvol         fsgen        ENABLED  4099840  -        ACTIVE   -       -
pl mvol-02      mvol         ENABLED  4099840  -        ACTIVE   -       -
sd p_disk-01    mvol-02      ENABLED  4099840  0        -        -       -



Good Luck with VERITAS mirroring.