Enabling and Disabling I/O paths with Veritas

Veritas Volume Manager (VxVM) comes with DMP (Dynamic MultiPathing) support. DMP allows VxVM to load-balance IOs across multiple controllers, offline paths when failures are detected, and dynamically disable paths when performing maintenance on a specific controller or path (e.g., ugprading a SAN switch or hot swapping an HBA). The process of manually disabling a path is easily accomplished by invoking VxVM’s vxdmpadm(1m) utility with the “disable” keyword, and the controller to disable:

$ vxdmpadm disable ctlr=c2

Once the controller is disabled you can monitor the number of IOs per path with vxdmpadm(1m)’s iostat utility:

$ vxdmpadm iostat show dmpnodename=c2t20d1s2 interval=5

                       cpu usage = 636us    per cpu memory = 32768b
                         OPERATIONS             KBYTES            AVG TIME(ms)
PATHNAME              READS     WRITES      READS     WRITES     READS   WRITES
c2t20d1s2              1800          0     230400          0  0.016102 0.000000
c3t21d1s2              1799          0     230272          0  0.016858 0.000000
                       cpu usage = 663us    per cpu memory = 32768b
                         OPERATIONS             KBYTES            AVG TIME(ms)
PATHNAME              READS     WRITES      READS     WRITES     READS   WRITES
c2t20d1s2               337          0      43136          0  0.014257 0.000000
c3t21d1s2              3007          0     384896          0  0.018631 0.000000
                       cpu usage = 657us    per cpu memory = 32768b
                         OPERATIONS             KBYTES            AVG TIME(ms)
PATHNAME              READS     WRITES      READS     WRITES     READS   WRITES
c2t20d1s2                 0          0          0          0  0.000000 0.000000
c3t21d1s2              3357          0     429696          0  0.018183 0.000000

Once maintenance is performed, the controller can be brought back online with vxdmpadm(1m)’s “enable” option, and the controller to enable:

$ vxdmpadm enable ctlr=c2

Once the controller is back up and operational, VxVM will start sending IOs through the controller:

                       cpu usage = 904us    per cpu memory = 32768b
                         OPERATIONS             KBYTES            AVG TIME(ms)
PATHNAME              READS     WRITES      READS     WRITES     READS   WRITES
c2t20d1s2                 0          0          0          0  0.000000 0.000000
c3t21d1s2              4064          0     520192          0  0.014160 0.000000
                       cpu usage = 719us    per cpu memory = 32768b
                         OPERATIONS             KBYTES            AVG TIME(ms)
PATHNAME              READS     WRITES      READS     WRITES     READS   WRITES
c2t20d1s2              1454          0     186112          0  0.013288 0.000000
c3t21d1s2              2720          1     348160          8  0.013732 0.250000
                       cpu usage = 697us    per cpu memory = 32768b
                         OPERATIONS             KBYTES            AVG TIME(ms)
PATHNAME              READS     WRITES      READS     WRITES     READS   WRITES
c2t20d1s2              2110          0     270080          0  0.013485 0.000000
c3t21d1s2              2112          0     270336          0  0.013361 0.000000

VxVM is awesome, and makes managing tons of storage a breeze!

Leave a Comment