Using EVMS on Multipath (DM MPIO) Devices

  • 7007529
  • 10-Jan-2011
  • 30-Apr-2012

Environment

Novell Open Enterprise Server 2 (OES 2) Linux
Novell Open Enterprise Server 1 (OES 1) Linux
SUSE Linux Enterprise Server 10
SUSE Linux Enterprise Server 9
Enterprise Volume Management System (EVMS)
Multipath IO (MPIO)

Situation

After connecting to a SAN, what configuration changes are required to ensure EVMS activates devices using the MPIO device nodes, rather than any one physical path?

Resolution

To ensure EVMS uses the MPIO device nodes for a LUN with multiple paths, the sysfs_devices section in the /etc/evms.conf file must be modified to ensure only device-mapper devices are scanned. The following is an example of a correct configuration:

sysfs_devices {
                include = [ dm-* ]
                exclude = [ iseries!vcd* ]
}

The 'include' setting in the sysfs_devices section specifically determines which devices in /sys/block EVMS will scan. Changing the device value of '*' to 'dm-*' will cause EVMS to scan the device-mapper device nodes created when using MPIO. (Note - It is generally not required to specify 'sd*' in the 'exclude' settings, as this has been known to cause problems in some environments.)

After modifying the 'include' setting, running `evms_activate` will activate the devices using the correct device nodes. The `dmsetup ls --tree` command can then be used to verify the configuration:

# dmestup ls --tree
DATA (253:32)
 └─mpatha1.1 (253:22)
    └─mpatha1 (253:21)
       └─mpatha (253:4)
          ├─ (8:192)
          └─ (8:64)

The above dmsetup output confirms that the NSS pool 'DATA' resides on the 'mpatha1.1' NetWare segment, 'mpatha1' NetWare partition and 'mpatha' MPIO device node - which is then accessible through two distinct paths. (Note - The distinction between active and passive paths is not visible through this tool.)

If local devices are also used with EVMS, the 'include' setting must be modified to include the local device. For example, if EVMS is used on the local disk 'sda', the filter should be modified to also include the 'sda' device as follows:

sysfs_devices {
                include = [ sda$ dm-* ]
                exclude = [ iseries!vcd* ]
}

Using 'sda$' ensures that devices such as 'sdaa' will not be scanned.