What is MPXIO?
Solaris Multiplexed I/O (MPxIO), known also as Sun StorageTek Traffic Manager (SSTM, earlier Sun StorEdge Traffic Manager), is multipath I/O software for Solaris OS. It enables a storage device to be accessed through multiple host controller interfaces from a single operating system instance. The MPxIO architecture helps protect against I/O outages due to I/O controller failures. Should one I/O controller fail, MPxIO automatically switches to an alternate controller.
This architecture also increases I/O performance by load balancing across multiple I/O channels.
It was integrated within the Solaris operating system beginning in February 2000 with Solaris 8 release.
The file to enable or disable mpxio has been moved in Solaris 10 from /kernel/drv/scsi_vhci.conf to the bottom of the file /kernel/drv/fp.conf and /kernel/drv/mpt.conf.
The easy way to enable/disable global MPXIO On Solaris:
# vi /kernel/drv/fp.conf
CHANGE TO ‘YES’ for Disable and ‘NO’ for Enable
Or, just simply run this command:
#stmsboot -D fp -e >>enable MPXIO
#stmsboot -D fp -d >>disable MPXIO
the, you will prompted to reboot the server.
But, actually Multipathing can be enabled or disabled on specific Fibre Channel Host Bus Adapter (HBA) controller ports. If you enable multipathing on a specific HBA port controller port, all supported devices connected to that controller port will be enabled for multipath operation.
The following procedure applies to both SPARC and x86 based machines:
Port Configuration Considerations
Before you start configuring the software by port, consider the following:
- FC global and per-port multipath settings are specified in the file /kernel/drv/fp.conf.
Per-port multipath settings have priority over the global setting. This means that if global multipathing is enabled by a specific port has been disabled for multipathing, the port will not be available in the multipathing configuration. Conversely, even if global multipathing has been disabled, specific ports may be enabled for multipathing if they are listed in the appropriate driver.conf(4) file.
- Load balancing is controlled by the global load-balance property in /kernel/drv/scsi_vhci.conf file and is not controlled on a per-port basis.
- If a device has more than one path to the host, all paths to the device must be configured with multipathing enabled or disabled.
- Configuring multipathing by port enables the multipathing software to coexist with other multipathing solutions like Symantec (VERITAS) Dynamic Multipathing (DMP), or EMC PowerPath. However, devices and paths should not be shared between the multipathing software and other multipathing solutions.
To Configure Multipathing by Port
Depending on how many ports you want the multipathing software to control, you can enable or disable multipathing globally or for specified ports.
- Log in as root (su - root).
- Determine the HBA controller ports that you want the multipathing software to control.
For example, to select the desired device, perform an ls -l command on /dev/cfg directory. The following example shows the ls -l command output.
lrwxrwxrwx 1 root root 50 Jan 29 21:33 c0 -> ../../devices/pci@7c0/pci@0/pci@1/pci@0/ide@8:scsi lrwxrwxrwx 1 root root 61 Jan 29 21:33 c1 -> ../../devices/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@1:scsi lrwxrwxrwx 1 root root 61 Jan 29 21:33 c2 -> ../../devices/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2:scsi lrwxrwxrwx 1 root root 53 Jan 29 21:33 c3 -> ../../devices/pci@7c0/pci@0/pci@9/LSILogic,sas@0:scsi lrwxrwxrwx 1 root root 54 Apr 16 20:28 c5 -> ../../devices/pci@780/pci@0/pci@8/SUNW,qlc@0/fp@0,0:fc lrwxrwxrwx 1 root root 56 Apr 16 20:28 c6 -> ../../devices/pci@780/pci@0/pci@8/SUNW,qlc@0,1/fp@0,0:fc
Note – Controllers c5 and c6 are ports A and B on a dual-port FC HBA. Controllers c1 and c3 are single port SAS HBA ports. Controller c2 is the internal SAS controller in a Sun FireTM T2000 server.
Once you have determined the port, or ports, you want to explicitly enable or disable multipathing for, go to the next step.
- Enable or disable specific ports as follows:
- FC HBA ports
- Edit file /kernel/drv/fp.conf
- Add the following line for each FC HBA port that is to be enabled:
name="fp" parent="parent name" port=port-number mpxio-disable="no";
where parent name is the port device name, and port-number is the FC HBA port number.
For example, the following entries disable multipathing on all FC HBA controller ports except for the two specified ports:
mpxio-disable="yes"; name="fp" parent="/pci@6,2000/SUNW,qlc@2" port=0 mpxio-disable="no"; name="fp" parent="/pci@13,2000/pci@2/SUNW,qlc@5" port=0 mpxio-disable="no";
- Add the following line for each FC HBA port that is to be disabled:
name="fp" parent="parent name" port=port-number mpxio-disable="yes";
name="fp" parent="/pci@6,2000/SUNW,qlc@2" port=0 mpxio-disable="yes";
- FC HBA ports
- Type stmsboot -u to start the reboot and configuration process.
You are prompted to reboot. During the reboot, the /etc/vfstab file and your dump device configuration are updated to reflect any device name changes.
- (Optional) After the reboot, if necessary, configure your applications to use new device names as described in Multipathing Considerations.
Solaris SAN Configuration and Multipathing Guide