Solaris MultiPathing options

This is a simple post to check if any of the Solaris Multipathing Software (MPxIO/STMS), Veritas Dynamic Multi-Pathing (VxDMP) or EMC PowerPath Data Protection Software is installed and active on a given Solaris system.

MPxIO/STMS

Enabling MPxIO

Check the MPxIO/STMS configuration file to see if Solaris multipathing is enabled.

Solaris 10 is the easier, because the mpxio capability is built-in. You just need to turn it on! To enable it, edit the file /kernel/drv/fp.conf file. At the end it should say:

mpxio-disable="yes";

Just change yes to no and it will be enabled:

mpxio-disable="no";

For Solaris 9 and earlier the steps are the same as for Solaris 10, it's just that the files are different. Edit /kernel/drv/scsi_vhci.conf and change the line that says:

mpxio-disable="yes";

Just change yes to no and it will be enabled:

mpxio-disable="no";

For Solaris 9 you may also need to download and install the SAN Foundation Kit (Go to Sun's download site and then look for "StorEdge SAN 4.#".)

Note: This file can be manually edited without performing a reboot, so this may not be a reliable method to check MPxIO is active.

If you make changes to the configuration file, then you will need to perform a reconfiguration boot to allow Solaris to create the multipathed devices.

Disable individual ports

Enabling MPxIO enables it everywhere. This includes the internal devices if they are fibre-attached. To disable any port, use the same configuration file and add a line similar to the following:

Solaris 10

name="fp" parent="/pci@8,600000/SUNW,qlc@2" port=0 mpxio-disable="yes";

Solaris 9

name="qlc" parent="/pci@8,600000" unit-address="2" mpxio-disable="yes";
Checking devices

Before multipathing, you should see two copies of each disk in format. Afterwards, you'll just see the one copy.

With MPxIO enabled, any disk controlled with MPxIO will have a pseudo device under /dev/rdsk with the format c#t#d#s#. Where the t# is a 32 character hex string:

# ll /dev/rdsk | awk '{print$9}'
[...]
   c6t600C0FF000000000086AB238B2AF0600d0s0
   c6t600C0FF000000000086AB238B2AF0600d0s1
   c6t600C0FF000000000086AB238B2AF0600d0s2
   c6t600C0FF000000000086AB238B2AF0600d0s3
   c6t600C0FF000000000086AB238B2AF0600d0s4
   c6t600C0FF000000000086AB238B2AF0600d0s5
   c6t600C0FF000000000086AB238B2AF0600d0s6
   c6t600C0FF000000000086AB238B2AF0600d0s7
[...]

Non-MPxIO real disk (SAN disk)

# ll /dev/rdsk/c2t5006048449AFAC72d0s0
   lrwxrwxrwx   1 root     root          79 Jun 14  2007 /dev/rdsk/c2t5006048449AFAC72d0s0 -> \
      ../../devices/pci@8,600000/fibre-channel@1/fp@0,0/ssd@w5006048449afac72,0:a,raw

MPxIO pseudo disk

# ll /dev/rdsk/c4t6006048000028775185753594D303030d0s0
   lrwxrwxrwx   1 root     root          67 Jun 14  2007 /dev/rdsk/c4t6006048000028775185753594D303030d0s0 -> \
      ../../devices/scsi_vhci/ssd@g6006048000028775185753594d303030:a,raw

VxDMP

To check if VxDMP is installed and enabled we have to check if the VxDMP module is loaded in the kernel or not)

# modinfo | grep vxdmp
22 102f680e 1b23c 223 1 vxdmp (VxVM 3.5s_p2.8 DMP Driver)

If MPxIO is enabled, VxDMP may be present and active but it will only see one path (the MPxIO pseudo device), and therefore is not particularly interesting:

To show which devices VxDMP is enabled for, run:

vxdmpadm listctlr all

For example:

# vxdmpadm listctlr all
   CTLR-NAME       ENCLR-TYPE      STATE      ENCLR-NAME
   =====================================================
   c1              EMC_CLARiiON    ENABLED    EMC0 
   c2              EMC_CLARiiON    ENABLED    EMC0 
   c3              SENA            ENABLED    SENA0
   c4              EMC             ENABLED    EMC1
   c5              EMC             ENABLED    EMC1

PowerPath

To check if PowerPath is installed and enabled we have to check if the kernel module is loaded:

modinfo | grep -i emcp

For example:

# modinfo | grep -i emcp
   47 78172000  6b3bd 238   1  emcp (PowerPath Driver 3.0.3)
   48 781de000   c3a8   -   1  emcpcg (PowerPath CG Ext 3.0.3)
   49 781ea000  1d30d   -   1  emcpmpc (PowerPath MPC Ext 3.0.3)
   50 7820a000  15ccd   -   1  emcpmp (PowerPath MP Ext 3.0.3)
   51 78222000   7bbc   -   1  emcppn (PowerPath PN Ext 3.0.3)
   52 78189c3d    690   -   1  emcpioc (PowerPath PIOC 3.0.3)

To verify that disks are under PowerPath control:

powermt display dev=all

For example:

# pwermt display dev=all
# powermt display dev=all
Pseudo name=emcpower37a
VNX ID=CKM00114901418 [Golf05]
Logical device ID=600601600BE02A00046526A7567FE211 [GOLF05-nlcd04_apps]
state=alive; policy=CLAROpt; queued-IOs=0
Owner: default=SP B, current=SP B       Array failover mode: 4
==============================================================================
--------------- Host ---------------   - Stor -  -- I/O Path --   -- Stats ---
###  HW Path               I/O Paths    Interf.  Mode     State   Q-IOs Errors
==============================================================================
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t5006016F3EA044D4d0s0 SP B7    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t500601673EA044D4d0s0 SP A7    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t5006016E3EA044D4d0s0 SP B6    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t500601663EA044D4d0s0 SP A6    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t5006016D3EA044D4d0s0 SP B5    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t500601653EA044D4d0s0 SP A5    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t5006016C3EA044D4d0s0 SP B4    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t500601643EA044D4d0s0 SP A4    active   alive      0      0


Pseudo name=emcpower38a
VNX ID=CKM00114901418 [Golf05]
Logical device ID=600601600BE02A008E15833B5D7FE211 [GOLF05-chr]
state=alive; policy=CLAROpt; queued-IOs=11
Owner: default=SP B, current=SP B       Array failover mode: 4
==============================================================================
--------------- Host ---------------   - Stor -  -- I/O Path --   -- Stats ---
###  HW Path               I/O Paths    Interf.  Mode     State   Q-IOs Errors
==============================================================================
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t5006016D3EA044D4d1s0 SP B5    active   alive      2      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t5006016C3EA044D4d1s0 SP B4    active   alive      2      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t500601643EA044D4d1s0 SP A4    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t500601653EA044D4d1s0 SP A5    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t5006016E3EA044D4d1s0 SP B6    active   alive      4      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t5006016F3EA044D4d1s0 SP B7    active   alive      3      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t500601663EA044D4d1s0 SP A6    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t500601673EA044D4d1s0 SP A7    active   alive      0      0


Pseudo name=emcpower39a
VNX ID=CKM00114901418 [Golf05]
Logical device ID=600601600BE02A002296F5E1ED7FE211 [GOLF05-golf05_tmp]
state=alive; policy=CLAROpt; queued-IOs=0
Owner: default=SP B, current=SP B       Array failover mode: 4
==============================================================================
--------------- Host ---------------   - Stor -  -- I/O Path --   -- Stats ---
###  HW Path               I/O Paths    Interf.  Mode     State   Q-IOs Errors
==============================================================================
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t5006016C3EA044D4d2s0 SP B4    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t5006016D3EA044D4d2s0 SP B5    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t500601653EA044D4d2s0 SP A5    active   alive      0      0
3074 pci@9,600000/SUNW,qlc@2/fp@0,0 c4t500601643EA044D4d2s0 SP A4    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t5006016E3EA044D4d2s0 SP B6    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t5006016F3EA044D4d2s0 SP B7    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t500601663EA044D4d2s0 SP A6    active   alive      0      0
3072 pci@9,600000/SUNW,qlc@1/fp@0,0 c2t500601673EA044D4d2s0 SP A7    active   alive      0      0