Home > Storage > PowerStore > Data Protection > Dell PowerStore: Metro Volume > Linux MPIO
For Metro Volume to be effective, deploying Multipath I/O software on the connected Linux hosts is required. PowerStore supports the native Linux multipath I/O software, Device Mapper Multipath (DM-Multipath). Red Hat based Linux includes the multipath software in the device-mapper-multipath package. SUSE Linux Enterprise Server includes it in the multipath-tools package. PowerStore also supports Dell PowerPath. However, this paper does not address its configuration. For details about configuring PowerPath, see the E-Lab Host Connectivity Guides.
ALUA optimization and DM-Multipath work together to prioritize I/Os to the Active/Optimized paths for optimal performance. When a Linux host loses access to these paths, Active/Non-optimized paths become Active/Optimized paths, allowing I/Os to continue without disruption.
The E-Lab Host Connectivity Guide provides a recommended configuration for DM-Multipath, which Dell has tested to ensure the effective operation of multipath I/O software with PowerStore. The following is the multipath.conf configuration from the E-Lab Host Connectivity Guide.
defaults {
polling_interval 5
checker_timeout 15
disable_changed_wwids yes
find_multipaths no
}
devices {
device {
vendor DellEMC
product PowerStore
detect_prio "yes"
path_selector "queue-length 0"
path_grouping_policy "group_by_prio"
path_checker tur
failback immediate
fast_io_fail_tmo 5
no_path_retry 3
rr_min_io_rq 1
max_sectors_kb 1024
dev_loss_tmo 10
hardware_handler "1 alua" ##Only for Oracle Linux
}
device {
vendor .*
product dellemc-powerstore
uid_attribute ID_WWN
prio ana
failback immediate
path_grouping_policy "group_by_prio"
path_checker "none"
path_selector "queue-length 0"
detect_prio "yes"
fast_io_fail_tmo 5
no_path_retry 3
rr_min_io_rq 1
max_sectors_kb 1024
dev_loss_tmo 10
}
}
To ensure consistent device names on Linux hosts in a cluster, and enhance reporting clarity, replace the default multipath device names with aliases.
To create a multipath device alias, add the following to the main configuration file at /etc/multipath.conf or a separate configuration file in the /etc/multipath/conf.d directory. The wwid is the world wide name (WWN) of the Metro Volume. You can find this information in the PowerStore Manager UI by going to Storage > Volumes. Use the column selection dropdown to add the WWN column to the table.
# cat /etc/multipath/conf.d/ps-vol-alias.conf
multipaths {
multipath {
wwid "368ccf0980076c2881eb573719c382287"
alias metro-vol-001
}
}
PowerStore supports uniform and non-uniform storage presentation. Uniform storage presentation provides the highest level of protection, allowing the Linux host to access the Metro Volume from both PowerStore clusters. In a non-uniform storage presentation, the host has access to a single PowerStore cluster.
In a uniform storage presentation, both sides of a Metro Volume are mapped to a Linux host. The Metro Volume appears to the Linux operating system as a regular volume (LUN) with paths connected to both PowerStore clusters, because the two volumes behind the Metro Volume share the same WWID. Metro Volume allows multiple hosts to simultaneously read from and write to both sides of the volume, while maintaining the write-order and data integrity between the volumes.
The multipath -ll command displays the paths and their priorities of a volume. The following example groups the paths according to their priority, as defined by the path_grouping_policy parameter in the multipath configuration file.
Multipath I/O software does not distinguish between a regular volume and a Metro Volume. However, when a Metro Volume is mapped to the host with a uniform storage presentation, the multipath command displays it as having more paths, and these paths have different priorities.
The paths with higher priority (50) are Active/Optimized paths, while those with lower priority (10) are Active/Non-optimized paths.
The example below shows a Metro Volume in a uniform storage presentation where the volume has paths connected to Array 1 (local array) and Array 2 (remote array).
metro-vol-001 (368ccf0980076c2881eb573719c382287) dm-7 DellEMC,PowerStore
size=200G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='queue-length 0' prio=50 status=active
| |- 11:0:6:7 sdat 66:208 active ready running #Array 1,Node B,I/O module 0,Port 1
| `- 12:0:6:7 sdan 66:112 active ready running #Array 1,Node B I/O module 0,Port 0
`-+- policy='queue-length 0' prio=10 status=enabled
|- 11:0:4:7 sdl 8:176 active ready running #Array 2,Node B,I/O module 0,Port 1
|- 12:0:3:7 sdal 66:80 active ready running #Array 2,Node B,I/O module 0,Port 0
|- 11:0:3:7 sdb 8:16 active ready running #Array 2,Node A,I/O module 0,Port 1
|- 12:0:2:7 sdab 65:176 active ready running #Array 2,Node A,I/O module 0,Port 0
|- 12:0:5:7 sdq 65:0 active ready running #Array 1,Node A,I/O module 0,Port 0
`- 11:0:5:7 sdn 8:208 active ready running #Array 1,Node A,I/O module 0,Port 1
When the Metro Volume is in non-uniform storage presentation, multipath -ll shows that the volume has only paths connected to the local array.
metro-vol-003 (368ccf09800582e7fcfdaa4de979ccb9c) dm-9 DellEMC,PowerStore
size=80G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='queue-length 0' prio=50 status=active
| |- 11:0:6:9 sdba 67:64 active ready running #Array 1,Node B,I/O module 0,Port 1
| `- 12:0:6:9 sdau 66:224 active ready running #Array 1,Node B,I/O module 0,Port 0
`-+- policy='queue-length 0' prio=10 status=enabled
|- 11:0:5:9 sdw 65:96 active ready running #Array 1,Node A,I/O module 0,Port 1
`- 12:0:5:9 sdaa 65:160 active ready running #Array 1,Node A,I/O module 0,Port 0
Additionally, the Node Affinity of the volume designates Node B of Array 1 to provide optimized I/O for host access. Therefore, paths connected to Array 1 Node B are in an Active/Optimized ALUA state, while all other paths are in Active/Non-optimized ALUA state.
We can also query each path directly using the scsi-inq and sg_rtpg commands. First retrieve the Target Port Group of a path, then examine the asymmetric access state of that Target Port Group. For example, the target port group of /dev/sdag is 0x2 and the asymmetric access state for the target port group 0x2 is active/optimized.
# sg_inq -p 0x83 /dev/sdaq|egrep -Ei "Target port group:"
Target port group: 0x2
# sg_rtpg -d /dev/sdaq|grep -EiA3 "target port group.*0x2"
target port group id : 0x2 , Pref=0, Rtpg_fmt=0
target port group asymmetric access state : 0x00 (active/optimized)
T_SUP : 0, O_SUP : 0,LBD_SUP : 0, U_SUP : 1, S_SUP : 0, AN_SUP : 1, AO_SUP : 1
status code : 0x02 (target port asym. state changed by implicit lu behaviour)
To determine where a path is connected on PowerStore, you can query the target port of each path using the multipathd command.
The following multipathd CLI example shows the target WWPN and target WWNN for each path. The target WWPN corresponds to the FC SCSI WWPN on the PowerStore appliance, and the target WWNN to the iSCSI IQN on the Ethernet port of the PowerStore. To locate the WWPN and WWNN of PowerStore ports in PowerStore Manager UI, go to Hardware, select the Appliance, and go to the Ports subtab.
# multipathd show paths format "%m %d %t %p %R %r %P %n %w"
multipath dev dm_st pri host WWPN target WWPN protocol target WWNN uuid
metro-vol-001 sdan active 50 0x2001000e1efd0a6b 0x58ccf0984a600feb scsi:fcp 0x58ccf090ca600feb 368ccf0980076c2881eb573719c382287
metro-vol-001 sdat active 50 0x2001000e1efd0a6a 0x58ccf0984a610feb scsi:fcp 0x58ccf090ca600feb 368ccf0980076c2881eb573719c382287
metro-vol-001 sdab active 10 0x2001000e1efd0a6b 0x58ccf0904a600faa scsi:fcp 0x58ccf090ca600faa 368ccf0980076c2881eb573719c382287
metro-vol-001 sdal active 10 0x2001000e1efd0a6b 0x58ccf0984a600faa scsi:fcp 0x58ccf090ca600faa 368ccf0980076c2881eb573719c382287
metro-vol-001 sdb active 10 0x2001000e1efd0a6a 0x58ccf0904a610faa scsi:fcp 0x58ccf090ca600faa 368ccf0980076c2881eb573719c382287
metro-vol-001 sdl active 10 0x2001000e1efd0a6a 0x58ccf0984a610faa scsi:fcp 0x58ccf090ca600faa 368ccf0980076c2881eb573719c382287
metro-vol-001 sdn active 10 0x2001000e1efd0a6a 0x58ccf0904a610feb scsi:fcp 0x58ccf090ca600feb 368ccf0980076c2881eb573719c382287
metro-vol-001 sdq active 10 0x2001000e1efd0a6b 0x58ccf0904a600feb scsi:fcp 0x58ccf090ca600feb 368ccf0980076c2881eb573719c382287
To assist with monitoring and validating the ALUA state of the paths, a script, map-paths.sh, is available (in Appendix A) that consolidates and displays path information from the specified commands. Here is a sample output from the script showing the ALUA path states and the target port connections on PowerStore appliances. The script assigns friendly names to the target WWNN and target WWPN, to enhance the clarity of the report. For example, path sdan and sdat, which connect to Array 1 Node B, have an Active/Optimized ALUA state.
# ./map-paths.sh
metro-vol-001 sdan active 50 active/optimized array1-nb-iom0-p0
metro-vol-001 sdat active 50 active/optimized array1-nb-iom0-p1
metro-vol-001 sdab active 10 active/non optimized array2-na-iom0-p0
metro-vol-001 sdal active 10 active/non optimized array2-nb-iom0-p0
metro-vol-001 sdb active 10 active/non optimized array2-na-iom0-p1
metro-vol-001 sdl active 10 active/non optimized array2-nb-iom0-p1
metro-vol-001 sdn active 10 active/non optimized array1-na-iom0-p1
metro-vol-001 sdq active 10 active/non optimized array1-na-iom0-p0