Sunday, 21 October 2018

A beginners guide to Veritas Dynamic Multipathing (VxDMP) By Devan

A beginners guide to Veritas Dynamic Multipathing (VxDMP)

Veritas Dynamic Multi-Pathing (DMP) provides the multi-pathing capability to the native devices on the system. DMP creates DMP metadevices (DMP nodes) to represent all the device e paths to the same physical LUN.
VxDMP veritas dynamic multipathing

How DMP works

– VxVM uses the DMP metanodes (DMP nodes) to access disk devices connected to the system. For each disk, DMP maps one node to the set of paths that are connected to the disk. The raw and block devices are created in directories /dev/vx/rdmp and /dev/vx/dmp respectively.

Setting the naming scheme

Depending on the naming scheme you have in VxVM, device names for disks are assigned. There are 2 naming schemes available :
1. OS native
2. Enclosure Based
To check the naming scheme use :
# vxddladm get namingscheme
NAMING_SCHEME       PERSISTENCE    LOWERCASE      USE_AVID
============================================================
OS Native           No             Yes            Yes
To change the naming scheme through command line
# vxddladm set namingscheme=ebn
# vxddladm get namingscheme
NAMING_SCHEME       PERSISTENCE    LOWERCASE      USE_AVID
============================================================
Enclosure Based     Yes            Yes            Yes

How to check if DMP is enabled

1. The easiest way to check whether DMP is enabled or not, is to check the vxdisk path command :
# vxdisk path
SUBPATH    DANAME    DMNAME  GROUP  STATE
c1t0d0s2   c1t0d0s2  mydg01  mydg   ENABLED
c4t0d0s2   c1t0d0s2  mydg01  mydg   ENABLED
c1t1d0s2   c1t1d0s2  mydg02  mydg   ENABLED
c4t1d0s2   c1t1d0s2  mydg02  mydg   ENABLED
As you can see, there are 2 paths for each of the 2 disks mydg01 and mydg02.
2. Another way is to check multipathing at a single disk :
# vxdisk list c2t0d0s2

Device  c2t0d0
devicetag  c2t0d0
type  sliced
hostid  system01
.
.
.
Multipathing information:
numpaths: 2
c2t0d0s2  state=enabled   type=primary
c1t0d0s2  state=disabled  type=secondary
The numpath parameter shows that there are 2 paths to the disk.
3. Alternatively we can also use the below command to check the multipathing :
# vxdmpadm getsubpaths dmpnodename=devicename
# vxdmpadm getsubpaths dmpnodename=c2t66d0s2

NAME       STATE[A]    PATH-TYPE[M] CTLR-NAME ENCLR-TYPE ENCLR-NAME ATTRS
=======================================================================
c2t66d0s2  ENABLED(A)  PRIMARY      c2        ACME       enc0        -
c1t66d0s2  ENABLED     PRIMARY      c1        ACME       enc0        -

Getting DMP node information

To list all the DMP nodes under all enclosures :
# vxdmpadm list dmpnode all
To list all the DMP nodes under a specific enclosure enc0 :
# vxdmpadm getdmpnode enclosure=enc0

NAME     STATE   ENCLR-TYPE PATHS ENBL DSBL ENCLR-NAME
=========================================================
c2t1d0s2 ENABLED T300        2     2    0     enc0
c2t1d1s2 ENABLED T300        2     2    0     enc0
c2t1d2s2 ENABLED T300        2     2    0     enc0
c2t1d3s2 ENABLED T300        2     2    0     enc0
To get information about a particula DMP node :
# vxdmpadm getdmpnode nodename=c0t5006016041E03B33d0s2

NAME              STATE    ENCLR-TYPE PATHS ENBL DSBL  ENCLR-NAME
====================================================================
emc_clariion0_16 ENABLED EMC_CLARiiON  6     6    0    emc_clariion0

Displaying information about paths

To display all the subpaths known to DMP :
# vxdmpadm getsubpaths

NAME      STATE[A]    PATH-TYPE[M] DMPNODENAME ENCLR-NAME CTLR ATTRS
=======================================================================
c1t65d0s2 ENABLED(A)   -           Disk_1       Disk      c1    -
c1t66d0s2 ENABLED(A)   -           Disk_2       Disk      c1    -
c2t65d0s2 ENABLED(A)   -           Disk_1       Disk      c2    -
c2t66d0s2 ENABLED(A)   -           Disk_2       Disk      c2    -
To get the information on all the subpaths connected to the same HBA card controller :
# vxdmpadm getsubpaths ctlr=c2

NAME     STATE[-]   PATH-TYPE[-] CTLR-NAME ENCLR-TYPE ENCLR-NAME ATTRS
======================================================================
c2t1d0s2 ENABLED(A) PRIMARY      c2t1d0s2  ACME       enc0        -
c2t2d0s2 ENABLED(A) PRIMARY      c2t2d0s2  ACME       enc0        -
c2t3d0s2 DISABLED   SECONDARY    c2t3d0s2  ACME       enc0        -
c2t4d0s2 ENABLED    SECONDARY    c2t4d0s2  ACME       enc0        -
Similarly, to get information on subpaths connected to the same enclosure and portid :
# vxdmpadm getsubpaths enclosure=enc0 portid=1A

NAME      STATE[A]   PATH-TYPE[M] DMPNODENAME ENCLR-NAME     CTLR ATTRS
=======================================================================
c1t65d0s2 ENABLED(A) PRIMARY      c1t65d0s2   enc0           c1    -
c1t66d0s2 ENABLED(A) PRIMARY      c1t66d0s2   enc0           c1    -
To list all the subpaths through an array port through the WWN:
# vxdmpadm getsubpaths pwwn=20:00:00:E0:8B:06:5F:19

NAME      STATE[A]   PATH-TYPE[M] DMPNODENAME  ENCLR-NAME     CTLR ATTRS
=======================================================================
c1t65d0s2 ENABLED(A) PRIMARY      c1t65d0s2    HDS9500-ALUA0  c1    -
c1t66d0s2 ENABLED(A) PRIMARY      c1t66d0s2    HDS9500-ALUA0  c1    -

Displaying information about controllers

To diplay all the HBA controllers available on the system :
# vxdmpadm listctlr all

CTLR-NAME    ENCLR-TYPE     STATE      ENCLR-NAME
===================================================
c1           OTHER         ENABLED     other0
c2           X1            ENABLED     jbod0
c3           ACME          ENABLED     enc0
c4           ACME          ENABLED     enc0
To list controllers under a specific enclosure :
# vxdmpadm listctlr enclosure=enc0

CTLR-NAME     ENCLR-TYPE     STATE          ENCLR-NAME
======================================================
c2            ACME          ENABLED         enc0
c3            ACME          ENABLED         enc0

Displaying information about enclosures

To list information about all enclosures in the system :
# vxdmpadm listenclosure all

ENCLR_NAME  ENCLR_TYPE  ENCLR_SNO             STATUS       ARRAY_TYPE  LUN_COUNT
================================================================================
Disk        Disk        DISKS                 CONNECTED    Disk         6
SENA0       SENA        508002000001d660      CONNECTED    A/A          57
enc0        T3          60020f20000001a90000  CONNECTED    A/P          30
To display information about specific enclosure :
# vxdmpadm listenclosure enc0

ENCLR_NAME ENCLR_TYPE ENCLR_SNO             STATUS     ARRAY_TYPE  LUN_COUNT
=============================================================================
enc0       T3         60020f20000001a90000  CONNECTED    A/P           30

Displaying I/O statistics

vxdmp iostat command can be used to gather and display I/O statistics on a specific path, DMP node or enclosure. To start gathering the statistics :
# vxdmpadm iostat start
To display I/O statistics on all paths and a cumulative r/w operations :
# vxdmpadm iostat show all
            cpu usage = 7952us    per cpu memory = 8192b
             OPERATIONS        KBYTES            AVG TIME(ms)
PATHNAME     READS WRITES      READS  WRITES     READS  WRITES
c0t0d0       1088    0         557056  0         0.00   0.00
c2t118d0     87      0         44544   0         0.00 0.00
c3t118d0     0       0         0       0         0.00 0.00
c2t122d0     87      0         44544   0         0.00 0.00
To display I/O statistics on specific pathname, DMP nodename and enclosure name :
# vxdmpadm iostat show pathname=c3t115d0s2
             cpu usage = 8132us per cpu memory = 4096b
              OPERATIONS        BYTES            AVG TIME(ms)
PATHNAME      READS WRITES     READS WRITES      READS WRITES
c3t115d0s2      0    0          0      0         0.00  0.00
# vxdmpadm iostat show dmpnodename=c0t0d0s2
             cpu usage = 8501us per cpu memory = 4096b
             OPERATIONS            BYTES           AVG TIME(ms)
PATHNAME     READS WRITES       READS  WRITES      READS  WRITES
c0t0d0s2     1088   0           557056  0          0.00    0.00
# vxdmpadm iostat show enclosure=Disk
              cpu usage = 8626us per cpu memory = 4096b
         OPERATIONS BYTES AVG TIME(ms)
PATHNAME      READS WRITES     READS WRITES      READS WRITES
c0t0d0s2      1088    0        57056  0          0.00  0.00
To specify interval and samples for iostat command :
# vxdmpadm iostat show dmpnodename=emc_clariion0_342 interval=1 count=2
To reset the I/O statistics counters to zero :
# vxdmpadm iostat reset
To disable the gathering of I/O statistics :
# vxdmpadm iostat stop

I/O policies

You can set I/O policies to distribute the load across multiple paths the storage array. The I/O policies are recorded in the file /etc/vx/dmppolicy.infoDo not edit this file manually. The I/O policies that can be configured are :
adaptive
balanced
minimumq
priority
round-robin
singleactive
To set the required policy on an array :
# vxdmpadm setattr enclosure enc1 iopolicy=[policy]
To display a set policy on the enclosure :
# vxdmpadm getattr enclosure Disk iopolicy

ENCLR_NAME       DEFAULT        CURRENT
---------------------------------------
Disk             MinimumQ       Balanced

No comments:

Post a Comment