How to setup preferred path with multipath

Solution Verified - Updated -

Environment

Red Hat Enterprise Linux 7
device-mapper-multipath
LUNs with ALUA enabled

Issue

All paths for a LUN are grouped all together even though they come with different priority from the external storage.

The output of "multipath -ll" shows something like the following:

mpatha (360021868018107e0c000000000000098) dm-16 IBM     ,2145
size=100G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=30 status=active
  |- 8:0:1:18 sdv                 65:80      active ready  running
  |- 9:0:2:18 sded                128:80     active ready  running
  |- 8:0:3:18 sdby                68:192     active ready  running
  `- 9:0:3:18 sdgf                131:176    active ready  running

But something similar to the following is expected:

mpatha (360021868018107e0c000000000000098) dm-16 IBM     ,2145
size=100G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=10 status=active
  |- 8:0:1:18 sdv                 65:80      active ready  running
  |- 9:0:2:18 sded                128:80     active ready  running
`-+- policy='round-robin 0' prio=50 status=active
  |- 8:0:3:18 sdby                68:192     active ready  running
  `- 9:0:3:18 sdgf                131:176    active ready  running

Resolution

  • Edit the multipath.conf file
  • Remove the path_grouping_policy from the configuration of the affected LUN in the multipath.conf file, so that it will look like the following:
multipaths {
     multipath {
          wwid                    360021868018107e0c000000000000098
          alias                   mpatha
          path_selector           "round-robin 0"
          failback                immediate
          rr_weight               priorities
          no_path_retry           5
     }
}
  • Restart the multipath service

Root Cause

This is because the option "path_grouping_policy" is configured as "multibus":

multipaths {
     multipath {
          wwid                    360021868018107e0c000000000000098
          alias                   mpatha
          path_grouping_policy    multibus
          path_selector           "round-robin 0"
          failback                immediate
          rr_weight               priorities
          no_path_retry           5
     }
}

From the documentation, the value "multibus" means that all paths will be grouped in one priority group:

path_grouping_policy    
          Specifies the default path grouping policy to apply to unspecified multipaths. Possible values include:
                    failover: 1 path per priority group.
                    multibus: all valid paths in 1 priority group.
                    group_by_serial: 1 priority group per detected serial number.
                    group_by_prio: 1 priority group per path priority value. Priorities are determined by callout programs specified as global, per-controller, or per-multipath options.
                    group_by_node_name: 1 priority group per target node name. Target node names are fetched in /sys/class/fc_transport/target*/node_name.
                    The default value is failover. 

Diagnostic Steps

Check the returned ports/priority for each device in order to confirm that they need to be grouped differently. The output of multipath -ll is showing the following:

Jan 12 11:54:50 | reported target port group is 1
Jan 12 11:54:50 | aas = 01 [active/non-optimized]
Jan 12 11:54:50 | sdv: alua prio = 10      <===== ALUA priority of this path

Jan 12 11:54:50 | reported target port group is 1
Jan 12 11:54:50 | aas = 01 [active/non-optimized]
Jan 12 11:54:50 | sded: alua prio = 10      <===== ALUA priority of this path

Jan 12 11:54:50 | reported target port group is 0
Jan 12 11:54:50 | aas = 00 [active/optimized]
Jan 12 11:54:50 | sdby: alua prio = 50      <===== ALUA priority of this path

Jan 12 11:54:50 | reported target port group is 0
Jan 12 11:54:50 | aas = 00 [active/optimized]
Jan 12 11:54:50 | sdgf: alua prio = 50      <===== ALUA priority of this path

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments