Multipath Settings for External Storage Arrays
The multipath.conf
file allows you to configure multipath settings needed for third party storage arrays connected to StorNext appliance systems. To help you configure the /etc/multipath.conf
configuration file on Quantum appliances , we provide a sample configuration file, located here /etc/multipath.conf.quantum
. This file provides suggested multipath array settings from industry documentation and from things Quantum and Quantum partners have learned while configuring storage arrays.

If you need to edit the multipath.conf
file, you can do this in a couple ways. Since the file resides on the server nodes, which run on a version of the CentOS operating system, you will need to use either the vi
command-line editor provided on the system, or move the file to your laptop, edit it locally, and then upload it again to the server using a file transfer utility which supports the scp protocol.

The vi
editor is included in CentOS installed on your system. The following Google search link provides links for editing with vi
:
https://www.google.com/search?q=edit+with+vi
Note: When finished making changes with the vi
editor, save and exit the file using :wq!
.


Before beginning an SCP file transfer, you will need the following:
- An SCP (Secure Copy) client must be installed on the system you plan to use remote access and configured the software for binary scp file transfers.
- WinSCP - Windows-based SCP client with GUI, and drag-and-drop file transfer.
- Open WinSCP, choose the Stored sessions option and select the session used for connecting to the MDC server node.
- Click Edit > SCP in the Protocol > File protocol section.
- Click Preferences > Preferences > Transfer and select the option for Binary (archives, doc,...) in the Transfer Mode section of the dialog.
- Click OK, then click Save.
- PuTTY pscp.exe - Command-line based SCP client
- Terminal - Command-line based SCP client; included in macOS.
- The required file(s) have been acquired and are available on the laptop you will use to remotely access the system. This can include .iso image files.
- Login credentials to access the system.



If you have an scp program on your computer and can reach the management network of the server:
- Transfer the file using the scp protocol from the server using a drag-and-drop desktop application or command line commands and an command line scp utility.
- Edit the file with a text editor on your computer.
- Transfer the file back to the server.


Here is what the multipath.conf reference file looks included with StorNext 7.1:
# # Copyright 2020-2022. Quantum Corporation. All Rights Reserved. # StorNext is either a trademark or registered trademark of # Quantum Corporation in the US and/or other countries. # # This is a basic configuration file with some examples, for device mapper # multipath. # For a complete list of the default configuration values, see # /usr/share/doc/device-mapper-multipath-*/multipath.conf.defaults # For a list of configuration options with descriptions, see # /usr/share/doc/device-mapper-multipath-*/multipath.conf.annotated # Blacklist all devices by default. Remove this to enable multipathing # on the default devices. blacklist { # Blacklist all cvfsctl StorNext devices devnode "cvfsctl*" # Blacklist all devices by default, remove or modify to enable other non-LSI arrays device { vendor "*" product "*" } } # Exceptions to the default blacklist of all devices # blacklist_exceptions { # Let DMMP control the LSI devices since RDAC is disabled device { vendor "LSI|NETAPP" product "INF*|LUN" } device { vendor "DDN" product "S2A 6620" } device { vendor "XYRATEX" product "F6500E" } device { vendor "DotHill" product "DH*" } device { vendor "Quantum" product "StorNext QX|QXS" } device { vendor "QUANTUM" product "^(F|P|H).*" } device { vendor "HP" product "*" } device { vendor "Oracle" product "Axiom" } device { vendor "Pillar" product "*" } device { vendor "NEXSAN" product "NXS-B01-000" } device { vendor "NEXSAN" product "SATAB.*" } device { vendor "Active" product "AC16SFC02*" } device { vendor "Nimbus*" product "*" } device { vendor "3PARdata" product "VV" } device { vendor "DotHill" product "R/Evo 2730-2R" } device { vendor "DDN" product "EF3015" } device { vendor "TMS" product "RamSan" } device { vendor "DDN" product "S2A 9[579]*" } device { vendor "DDN" product "SFA 10000" } device { vendor "Promise" product "VTrak" } # EMC arrays device { vendor "DGC" product ".*" } # Fujitsu arrays device { vendor "FUJITSU" product "ETERNUS_DX*" } } ## Use user friendly names, instead of using WWIDs as names. defaults { verbosity 1 polling_interval 10 path_selector "queue-length 0" path_grouping_policy multibus prio const path_checker tur rr_min_io_rq 1 flush_on_last_del no max_fds 8192 rr_weight uniform failback immediate no_path_retry fail queue_without_daemon no user_friendly_names yes mode 644 uid 0 gid disk } devices { device { vendor "LSI|NETAPP" product "INF-01-00" path_grouping_policy group_by_prio prio rdac path_checker rdac path_selector "queue-length 0" hardware_handler "1 rdac" failback manual rr_weight priorities no_path_retry 30 features "2 pg_init_retries 50" rr_min_io_rq 1 } # NETAPP FAS6240 device { vendor "NETAPP" product "LUN" user_friendly_names yes } device { vendor "DDN" product "S2A 6620" path_grouping_policy group_by_prio prio alua path_checker tur failback immediate no_path_retry 12 } device { vendor "XYRATEX" product "F6500E" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" failback immediate no_path_retry 15 rr_min_io_rq 1 } device { vendor "DotHill" product "DH*" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "Quantum" product "StorNext QX|QXS" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F|P|H)4.*" path_grouping_policy group_by_prio detect_prio yes features "1 queue_if_no_path" path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F|P|H)2.*" path_grouping_policy group_by_prio detect_prio yes features "1 queue_if_no_path" path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F)1.*" path_grouping_policy group_by_serial features "0" path_checker tur path_selector "round-robin 0" hardware_handler "0" rr_weight uniform no_path_retry 30 failback immediate rr_min_io_rq 1 } # EMC arrays (EMC VNX7600, EMC VNX8000, EMC VMAX 20k) device { vendor "DGC" product ".*" product_blacklist "LUNZ" path_grouping_policy group_by_prio prio emc path_checker emc_clariion hardware_handler "1 emc" features "1 queue_if_no_path" failback immediate no_path_retry 60 detect_prio yes retain_attached_hw_handler yes #path_selector "queue-length 0" #user_friendly_names yes } device { vendor "HP " product "P2000 G3 FC" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "Oracle" product "Axiom" path_grouping_policy group_by_prio prio alua no_path_retry 60 path_checker tur failback immediate dev_loss_tmo 60 fast_io_fail_tmo 30 } device { vendor "Pillar" product "*" path_grouping_policy group_by_prio prio alua no_path_retry 60 path_checker tur failback immediate dev_loss_tmo 60 fast_io_fail_tmo 30 } device { vendor "Pillar" product "Axiom*" prio alua features "0" hardware_handler "0" path_grouping_policy group_by_prio rr_weight priorities rr_min_io_rq 1 path_checker tur } device { vendor "NEXSAN " product "NXS-B01-000" path_grouping_policy group_by_prio prio alua features "1 queue_if_no_path" path_checker tur path_selector "queue-length 0" hardware_handler "0" rr_weight priorities no_path_retry 5 failback 300 rr_min_io_rq 1 } device { vendor "NEXSAN " product "SATAB.*" path_grouping_policy group_by_prio prio alua features "1 queue_if_no_path" path_checker tur path_selector "queue-length 0" hardware_handler "0" rr_weight priorities no_path_retry 5 failback 300 rr_min_io_rq 1 } device { vendor "Nimbus*" product "*" path_checker "tur" failback immediate path_grouping_policy group_by_prio rr_min_io_rq 1 } device { vendor "3PARdata" product "VV" no_path_retry 18 features "0" hardware_handler "0" path_grouping_policy multibus path_selector "queue-length 0" rr_weight uniform rr_min_io_rq 1 path_checker tur failback immediate } device { vendor "DotHill" product "R/Evo 2730-2R" prio const path_grouping_policy multibus path_checker tur failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry fail hardware_handler 0 path_selector "queue-length 0" } device { vendor "DDN" product "EF3015" prio alua path_grouping_policy group_by_prio path_checker tur failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry 18 hardware_handler "0" path_selector "queue-length 0" } device { vendor "TMS" product "RamSan" path_selector "queue-length 0" path_grouping_policy multibus prio const path_checker tur rr_min_io_rq 1 rr_weight priorities failback immediate no_path_retry fail } device { vendor "DDN" product "S2A 9[579]*" # Use the following directive to utilize DDN S2A getuid callout script # which uses a predefined lookup table to generate uid name based # on S2A LUN name. prio alua path_grouping_policy group_by_prio # Review DDN Firmware Release notes and match polling_interval to # host timeout value #polling_interval 70 path_checker tur failback immediate no_path_retry fail } device { vendor "DDN" product "SFA 10000" path_grouping_policy group_by_prio prio alua path_checker tur failback immediate rr_min_io_rq 1 no_path_retry 12 } device { vendor "Promise" product "VTrak*" path_grouping_policy multibus path_checker tur path_selector "queue-length 0" hardware_handler "0" failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry queue features "1 queue_if_no_path" product_blacklist "VTrak V-LUN" fast_io_fail_tmo 30 dev_loss_tmo 60 } device { vendor "FUJITSU" product "ETERNUS_DX*" prio alua path_grouping_policy group_by_prio path_selector "queue-length 0" failback immediate no_path_retry 10 path_checker tur rr_weight uniform rr_min_io_rq 1 fast_io_fail_tmo 5 } # Use these settings if ALUA is enabled on the Promise array # device { # vendor "Promise" # product "VTrak" # path_grouping_policy group_by_prio # prio alua # path_checker tur # path_selector "queue-length 0" # hardware_handler "1 alua" # failback immediate # rr_weight uniform # rr_min_io_rq 1 # no_path_retry queue # features "1 queue_if_no_path" # product_blacklist "VTrak V-LUN" # } } ## ## Here is an example of how to configure some standard options. ## # #defaults { # udev_dir /dev # polling_interval 10 # path_selector "queue-length 0" # path_grouping_policy multibus # prio const # path_checker readsector0 # rr_min_io_rq 1 # max_fds 8192 # rr_weight priorities # failback immediate # no_path_retry fail # user_friendly_names yes #} ## ## The wwid line in the following blacklist section is shown as an example ## of how to blacklist devices by wwid. The 2 devnode lines are the ## compiled in default blacklist. If you want to blacklist entire types ## of devices, such as all scsi devices, you should use a devnode line. ## However, if you want to blacklist specific devices, you should use ## a wwid line. Since there is no guarantee that a specific device will ## not change names on reboot (from /dev/sda to /dev/sdb for example) ## devnode lines are not recommended for blacklisting specific devices. ## #blacklist { # wwid 26353900f02796769 # devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" # devnode "^hd[a-z]" #} #blacklist_exceptions { # device { # vendor "*" # product "*" # } #} #multipaths { # multipath { # wwid 3600508b4000156d700012000000b0000 # alias yellow # path_grouping_policy multibus # path_checker readsector0 # path_selector "queue-length 0" # failback manual # rr_weight priorities # no_path_retry 5 # } # multipath { # wwid 1DEC_____321816758474 # alias red # } #} #devices { # device { # vendor "COMPAQ " # product "HSV110 (C)COMPAQ" # path_grouping_policy multibus # path_checker readsector0 # path_selector "queue-length 0" # hardware_handler "0" # failback 15 # rr_weight priorities # no_path_retry queue # } # device { # vendor "COMPAQ " # product "MSA1000 " # path_grouping_policy multibus # } #}

multipath.conf
Storage Array Settings
As of StorNext 6.0.6.1, when the system is upgraded, the /etc/multipath.conf.quantum
file is overwritten with the latest updated version from Quantum. The active multipathd
configuration file previously located in /etc/multipath.conf
is no longer automatically patched with updated information so that any custom modifications you have made to this file are retained.

For a complete list of the default configuration values, see:
/usr/share/doc/device-mapper-multipath-*/multipath.conf.defaults
For a list of configuration options with descriptions, see:
/usr/share/doc/device-mapper-multipath-*/multipath.conf.annotated

- New StorNext appliance systems (in the StorNext VMs running on the H4000, and in StorNext running on Xcellis Workflow Director systems) manufactured with StorNext 6.4.0 or later (including 7.0.1 or later) default values for Quantum storage products are included in the system's
multipath.conf
file. The entries support Quantum QXS, F-Series, and H-Series storage arrays supported with the release of StorNext installed on your system when it was manufactured. If - For StorNext appliance systems installed in the environment that previously ran a version of StorNext prior to 6.4.0 and subsequently upgraded to a newer release, an update to the
multipath.conf
file is required on the server (or on both server nodes in dual-node/HA systems). StorNext 6.4.0 and later (including 7.0.1) includes the new entries inetc/multipath.conf.quantum
for Quantum QXS, F-Series, and H-Series storage arrays. Before configuring new entries for Quantum arrays, scroll down through themultipath.conf
file to see if the entries have already been added to the file. You will see the following entries similar to the following in the "blacklist_exceptions
" section:
Note: If this entry isn't already in your system's etc/multipath.conf
file, copy the blacklist_exceptions
and devices
sections below to etc/multipath.conf
. For examples of using vi to copy and paste these settings, see Copy Multipath Settings From the Reference multipath.conf.quantum File, below:
# Exceptions to the default blacklist of all devices # blacklist_exceptions { . . . device { vendor "Quantum" product "StorNext QX|QXS" }
device { vendor "QUANTUM" product "^(F|P|H).*" }
In addition, the "devices
" section contains the following:
devices { . . .
device { vendor "Quantum" product "StorNext QX|QXS" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 }
device { vendor "QUANTUM" product "^(F|P|H)4.*" path_grouping_policy group_by_prio detect_prio yes features "1 queue_if_no_path" path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 }
device { vendor "QUANTUM" product "^(F|P|H)2.*" path_grouping_policy group_by_prio detect_prio yes features "1 queue_if_no_path" path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 }
device { vendor "QUANTUM" product "^(F)1.*" path_grouping_policy group_by_serial features "0" path_checker tur path_selector "round-robin 0" hardware_handler "0" rr_weight uniform no_path_retry 30 failback immediate rr_min_io_rq 1 }
Note: For information about how the multipath.conf
file has been updated/changed in past StorNext releases, look for 70178 in the StorNext 6.x appliance Release Notes specific to your StorNext appliance, in the "Known Issues" and "Fixed Issues" sections for StorNext 6.0.6.


multipath.conf.quantum
file
If the current /etc/multipath.conf
file you are using does not contain an array definition you need for additional storage arrays you need to configure, here's what to do:
Note: Upgrade your appliance to the latest StorNext release. Copy entries from etc/multipath.conf.quantum
(for CentOS6 systems) or etc/multipath.quantum.OS7
(for CentOS7 systems) for any missing Quantum storage array blacklist exceptions and devices.
- Log in to the command line using the following credentials:
- User name:
stornext
- Password:
<stornext user account password>
Note: "
password
" is the default password for the stornext user account. If the password has been changed, use the current password. Beginning with StorNext 7.0.2, you must change the default password for the stornext user account. As of StorNext 7.0.2, the first time you log in, you will be prompted to change the password to a different one.
- User name:
- Enter
sudo rootsh
to gain root user access. - Enter the password for the
stornext
user account again.
- Open the
/etc/multipath.conf.quantum
file: - Use the up and down arrow keys or the "Page Up" and "Page Down" keys on your keyboard to scroll through the file and look for the "device" array definition you need.
- Make a backup copy of the
/etc/multipath.conf
file. - Copy the device information.
- Open the
/etc/multipath.conf
file. - Insert the information into the
devices {
section of the file. - By default, all devices are blacklisted in the
blacklist
section ofmultipath.conf
file, unless this section has been modified. You may want to adjust the blacklist section if you do not want to use the default value, but just blacklist specific devices. - Note the current
blacklist_exceptions
section of the file. Update this section to add your new storage device, so it is not blacklisted, if needed. - Save the file changes.
vi /etc/multipath.conf.quantum
Example (device entry for "TMS RamSan" storage array)
devices { . . .
device { vendor "TMS" product "RamSan" path_grouping_policy multibus path_checker tur getuidcallout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" path_selector "round-robin 0" prio const rr_weight priorities failback immediate hardware_handler "0" no_path_retry fail rr_min_io 1 }
Note: If you do not see the information for the array that you need to configure in /etc/multipath.conf.quantum
, contact the array supplier or manufacturer for the multipath settings you should use, and then add them using the procedure below.
Example:
cp /etc/multipath.conf /etc/multipath.conf.bak

Observe the following, and make any changes necessary:
Example (blacklist entry for "cvfsctl"):
blacklist { . . . devnode "cvfsctl*" device { vendor "*" product "*" } }
Example (blacklist entry for "LSI" and/or Netapp storage arrays):
blacklist_exceptions { . . . device { vendor "LSI|NETAPP" product "INF*|LUN" } }
If you downloaded the file locally, move it back to the server. Overwrite /etc/multipath.conf
on the server using your scp file utility.

multipathd
daemon
Once the multipath.conf
file is edited, restart the multipathd
daemon to register the new settings.

multipathd
on CentOS7 Systems
This applies to Xcellis Workflow Director, Xcellis Foundation, and Artico (R630) systems.
- Enter the following on the command line of the system:
- Log off of the system.
systemctl restart multipathd.service

multipathd
on CentOS6 Systems
This applies to Artico (R520), Pro Foundation, M660, M440, and M330 systems.
- Enter the following on the command line of the system:
service multipathd restart

Once the multipathd
daemon has been restarted, confirm the new multipath settings have been applied:
- Enter the following
- Close the SSH session to log off of the system.
multipath -ll -v2
You will see something like the following for each of the storage arrays defined in the multipath.conf
file.
Example:
mpathe (3600c0ff0001bd8ece3e3275b01000000) dm-11 Quantum ,QXS
size=55T features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 11:0:4:5 sdaf 65:240 active ready running
| |- 13:0:0:5 sdam 66:96 active ready running
| |- 11:0:3:5 sdab 65:176 active ready running
| `- 13:0:1:5 sdar 66:176 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 11:0:6:5 sdan 66:112 active ready running
|- 13:0:4:5 sdbn 68:16 active ready running
|- 11:0:2:5 sdx 65:112 active ready running
`- 13:0:6:5 sdbr 68:80 active ready running


Here is what the multipath.conf reference file looks included with StorNext 7.1 with the differences needed to support Rocky 9 highlighted in red bold text:
# # Copyright 2020-2022. Quantum Corporation. All Rights Reserved. # StorNext is either a trademark or registered trademark of # Quantum Corporation in the US and/or other countries. # # This is a basic configuration file with some examples, for device mapper # multipath. # For a complete list of the default configuration values, see # /usr/share/doc/device-mapper-multipath-*/multipath.conf.defaults # For a list of configuration options with descriptions, see # /usr/share/doc/device-mapper-multipath-*/multipath.conf.annotated # Blacklist all devices by default. Remove this to enable multipathing # on the default devices. blacklist { # Blacklist all cvfsctl StorNext devices devnode "cvfsctl*" # Blacklist all devices by default, remove or modify to enable other non-LSI arrays device { vendor ".*" product ".*" } } # Exceptions to the default blacklist of all devices # blacklist_exceptions { # Let DMMP control the LSI devices since RDAC is disabled device { vendor "LSI|NETAPP" product "INF*|LUN" } device { vendor "DDN" product "S2A 6620" } device { vendor "XYRATEX" product "F6500E" } device { vendor "DotHill" product "DH*" } device { vendor "Quantum" product "StorNext QX|QXS" } device { vendor "QUANTUM" product "^(F|P|H).*" } device { vendor "HP" product ".*" } device { vendor "Oracle" product "Axiom" } device { vendor "Pillar" product ".*" } device { vendor "NEXSAN" product "NXS-B01-000" } device { vendor "NEXSAN" product "SATAB.*" } device { vendor "Active" product "AC16SFC02*" } device { vendor "Nimbus*" product ".*" } device { vendor "3PARdata" product "VV" } device { vendor "DotHill" product "R/Evo 2730-2R" } device { vendor "DDN" product "EF3015" } device { vendor "TMS" product "RamSan" } device { vendor "DDN" product "S2A 9[579]*" } device { vendor "DDN" product "SFA 10000" } device { vendor "Promise" product "VTrak" } # EMC arrays device { vendor "DGC" product ".*" } # Fujitsu arrays device { vendor "FUJITSU" product "ETERNUS_DX*" } } ## Use user friendly names, instead of using WWIDs as names. defaults { verbosity 1 polling_interval 10 path_selector "queue-length 0" path_grouping_policy multibus prio const path_checker tur rr_min_io_rq 1 flush_on_last_del no max_fds 8192 rr_weight uniform failback immediate no_path_retry fail queue_without_daemon no user_friendly_names yes mode 644 uid 0 gid 0 } devices { device { vendor "LSI|NETAPP" product "INF-01-00" path_grouping_policy group_by_prio prio rdac path_checker rdac path_selector "queue-length 0" hardware_handler "1 rdac" failback manual rr_weight priorities no_path_retry 30 features "2 pg_init_retries 50" rr_min_io_rq 1 } # NETAPP FAS6240 device { vendor "NETAPP" product "LUN" user_friendly_names yes } device { vendor "DDN" product "S2A 6620" path_grouping_policy group_by_prio prio alua path_checker tur failback immediate no_path_retry 12 } device { vendor "XYRATEX" product "F6500E" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" failback immediate no_path_retry 15 rr_min_io_rq 1 } device { vendor "DotHill" product "DH*" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "Quantum" product "StorNext QX|QXS" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F|P|H)4.*" path_grouping_policy group_by_prio detect_prio yes <features is not used for Rocky 9, so do not include here> path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F|P|H)2.*" path_grouping_policy group_by_prio detect_prio yes <features is not used for Rocky 9, so do not include here> path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F)1.*" path_grouping_policy group_by_serial features "0" path_checker tur path_selector "round-robin 0" hardware_handler "0" rr_weight uniform no_path_retry 30 failback immediate rr_min_io_rq 1 } # EMC arrays (EMC VNX7600, EMC VNX8000, EMC VMAX 20k) device { vendor "DGC" product ".*" product_blacklist "LUNZ" path_grouping_policy group_by_prio prio emc path_checker emc_clariion hardware_handler "1 emc" <features is not used for Rocky 9, so do not include here> failback immediate no_path_retry 60 detect_prio yes retain_attached_hw_handler yes #path_selector "queue-length 0" #user_friendly_names yes } device { vendor "HP " product "P2000 G3 FC" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "Oracle" product "Axiom" path_grouping_policy group_by_prio prio alua no_path_retry 60 path_checker tur failback immediate dev_loss_tmo 60 fast_io_fail_tmo 30 } device { vendor "Pillar" product "*" path_grouping_policy group_by_prio prio alua no_path_retry 60 path_checker tur failback immediate dev_loss_tmo 60 fast_io_fail_tmo 30 } device { vendor "Pillar" product "Axiom*" prio alua features "0" hardware_handler "0" path_grouping_policy group_by_prio rr_weight priorities rr_min_io_rq 1 path_checker tur } device { vendor "NEXSAN " product "NXS-B01-000" path_grouping_policy group_by_prio prio alua <features is not used for Rocky 9, so do not include here> path_checker tur path_selector "queue-length 0" hardware_handler "0" rr_weight priorities no_path_retry 5 failback 300 rr_min_io_rq 1 } device { vendor "NEXSAN " product "SATAB.*" path_grouping_policy group_by_prio prio alua <features is not used for Rocky 9, so do not include here> path_checker tur path_selector "queue-length 0" hardware_handler "0" rr_weight priorities no_path_retry 5 failback 300 rr_min_io_rq 1 } device { vendor "Nimbus*" product "*" path_checker "tur" failback immediate path_grouping_policy group_by_prio rr_min_io_rq 1 } device { vendor "3PARdata" product "VV" no_path_retry 18 features "0" hardware_handler "0" path_grouping_policy multibus path_selector "queue-length 0" rr_weight uniform rr_min_io_rq 1 path_checker tur failback immediate } device { vendor "DotHill" product "R/Evo 2730-2R" prio const path_grouping_policy multibus path_checker tur failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry fail hardware_handler 0 path_selector "queue-length 0" } device { vendor "DDN" product "EF3015" prio alua path_grouping_policy group_by_prio path_checker tur failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry 18 hardware_handler "0" path_selector "queue-length 0" } device { vendor "TMS" product "RamSan" path_selector "queue-length 0" path_grouping_policy multibus prio const path_checker tur rr_min_io_rq 1 rr_weight priorities failback immediate no_path_retry fail } device { vendor "DDN" product "S2A 9[579]*" # Use the following directive to utilize DDN S2A getuid callout script # which uses a predefined lookup table to generate uid name based # on S2A LUN name. prio alua path_grouping_policy group_by_prio # Review DDN Firmware Release notes and match polling_interval to # host timeout value #polling_interval 70 path_checker tur failback immediate no_path_retry fail } device { vendor "DDN" product "SFA 10000" path_grouping_policy group_by_prio prio alua path_checker tur failback immediate rr_min_io_rq 1 no_path_retry 12 } device { vendor "Promise" product "VTrak*" path_grouping_policy multibus path_checker tur path_selector "queue-length 0" hardware_handler "0" failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry queue <features is not used for Rocky 9, so do not include here> product_blacklist "VTrak V-LUN" fast_io_fail_tmo 30 dev_loss_tmo 60 } device { vendor "FUJITSU" product "ETERNUS_DX*" prio alua path_grouping_policy group_by_prio path_selector "queue-length 0" failback immediate no_path_retry 10 path_checker tur rr_weight uniform rr_min_io_rq 1 fast_io_fail_tmo 5 } # Use these settings if ALUA is enabled on the Promise array # device { # vendor "Promise" # product "VTrak" # path_grouping_policy group_by_prio # prio alua # path_checker tur # path_selector "queue-length 0" # hardware_handler "1 alua" # failback immediate # rr_weight uniform # rr_min_io_rq 1 # no_path_retry queue # features "1 queue_if_no_path" # product_blacklist "VTrak V-LUN" # } } ## ## Here is an example of how to configure some standard options. ## # #defaults { # udev_dir /dev # polling_interval 10 # path_selector "queue-length 0" # path_grouping_policy multibus # prio const # path_checker readsector0 # rr_min_io_rq 1 # max_fds 8192 # rr_weight priorities # failback immediate # no_path_retry fail # user_friendly_names yes #} ## ## The wwid line in the following blacklist section is shown as an example ## of how to blacklist devices by wwid. The 2 devnode lines are the ## compiled in default blacklist. If you want to blacklist entire types ## of devices, such as all scsi devices, you should use a devnode line. ## However, if you want to blacklist specific devices, you should use ## a wwid line. Since there is no guarantee that a specific device will ## not change names on reboot (from /dev/sda to /dev/sdb for example) ## devnode lines are not recommended for blacklisting specific devices. ## #blacklist { # wwid 26353900f02796769 # devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" # devnode "^hd[a-z]" #} #blacklist_exceptions { # device { # vendor "*" # product "*" # } #} #multipaths { # multipath { # wwid 3600508b4000156d700012000000b0000 # alias yellow # path_grouping_policy multibus # path_checker readsector0 # path_selector "queue-length 0" # failback manual # rr_weight priorities # no_path_retry 5 # } # multipath { # wwid 1DEC_____321816758474 # alias red # } #} #devices { # device { # vendor "COMPAQ " # product "HSV110 (C)COMPAQ" # path_grouping_policy multibus # path_checker readsector0 # path_selector "queue-length 0" # hardware_handler "0" # failback 15 # rr_weight priorities # no_path_retry queue # } # device { # vendor "COMPAQ " # product "MSA1000 " # path_grouping_policy multibus # } #}

Here is what the multipath.conf reference file looks included with StorNext 7.1:
# # Copyright 2020-2022. Quantum Corporation. All Rights Reserved. # StorNext is either a trademark or registered trademark of # Quantum Corporation in the US and/or other countries. # # This is a basic configuration file with some examples, for device mapper # multipath. # For a complete list of the default configuration values, see # /usr/share/doc/device-mapper-multipath-*/multipath.conf.defaults # For a list of configuration options with descriptions, see # /usr/share/doc/device-mapper-multipath-*/multipath.conf.annotated # Blacklist all devices by default. Remove this to enable multipathing # on the default devices. blacklist { # Blacklist all cvfsctl StorNext devices devnode "cvfsctl*" # Blacklist all devices by default, remove or modify to enable other non-LSI arrays device { vendor "*" product "*" } } # Exceptions to the default blacklist of all devices # blacklist_exceptions { # Let DMMP control the LSI devices since RDAC is disabled device { vendor "LSI|NETAPP" product "INF*|LUN" } device { vendor "DDN" product "S2A 6620" } device { vendor "XYRATEX" product "F6500E" } device { vendor "DotHill" product "DH*" } device { vendor "Quantum" product "StorNext QX|QXS" } device { vendor "QUANTUM" product "^(F|P|H).*" } device { vendor "HP" product "*" } device { vendor "Oracle" product "Axiom" } device { vendor "Pillar" product "*" } device { vendor "NEXSAN" product "NXS-B01-000" } device { vendor "NEXSAN" product "SATAB.*" } device { vendor "Active" product "AC16SFC02*" } device { vendor "Nimbus*" product "*" } device { vendor "3PARdata" product "VV" } device { vendor "DotHill" product "R/Evo 2730-2R" } device { vendor "DDN" product "EF3015" } device { vendor "TMS" product "RamSan" } device { vendor "DDN" product "S2A 9[579]*" } device { vendor "DDN" product "SFA 10000" } device { vendor "Promise" product "VTrak" } # EMC arrays device { vendor "DGC" product ".*" } # Fujitsu arrays device { vendor "FUJITSU" product "ETERNUS_DX*" } } ## Use user friendly names, instead of using WWIDs as names. defaults { verbosity 1 polling_interval 10 path_selector "queue-length 0" path_grouping_policy multibus prio const path_checker tur rr_min_io_rq 1 flush_on_last_del no max_fds 8192 rr_weight uniform failback immediate no_path_retry fail queue_without_daemon no user_friendly_names yes mode 644 uid 0 gid disk } devices { device { vendor "LSI|NETAPP" product "INF-01-00" path_grouping_policy group_by_prio prio rdac path_checker rdac path_selector "queue-length 0" hardware_handler "1 rdac" failback manual rr_weight priorities no_path_retry 30 features "2 pg_init_retries 50" rr_min_io_rq 1 } # NETAPP FAS6240 device { vendor "NETAPP" product "LUN" user_friendly_names yes } device { vendor "DDN" product "S2A 6620" path_grouping_policy group_by_prio prio alua path_checker tur failback immediate no_path_retry 12 } device { vendor "XYRATEX" product "F6500E" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" failback immediate no_path_retry 15 rr_min_io_rq 1 } device { vendor "DotHill" product "DH*" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "Quantum" product "StorNext QX|QXS" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F|P|H)4.*" path_grouping_policy group_by_prio detect_prio yes features "1 queue_if_no_path" path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F|P|H)2.*" path_grouping_policy group_by_prio detect_prio yes features "1 queue_if_no_path" path_checker tur path_selector "round-robin 0" hardware_handler "1 alua" rr_weight priorities no_path_retry 30 failback immediate rr_min_io_rq 1 } device { vendor "QUANTUM" product "^(F)1.*" path_grouping_policy group_by_serial features "0" path_checker tur path_selector "round-robin 0" hardware_handler "0" rr_weight uniform no_path_retry 30 failback immediate rr_min_io_rq 1 } # EMC arrays (EMC VNX7600, EMC VNX8000, EMC VMAX 20k) device { vendor "DGC" product ".*" product_blacklist "LUNZ" path_grouping_policy group_by_prio prio emc path_checker emc_clariion hardware_handler "1 emc" features "1 queue_if_no_path" failback immediate no_path_retry 60 detect_prio yes retain_attached_hw_handler yes #path_selector "queue-length 0" #user_friendly_names yes } device { vendor "HP " product "P2000 G3 FC" path_grouping_policy group_by_prio path_checker tur path_selector "queue-length 0" prio alua rr_weight uniform failback immediate hardware_handler "0" no_path_retry 18 rr_min_io_rq 1 } device { vendor "Oracle" product "Axiom" path_grouping_policy group_by_prio prio alua no_path_retry 60 path_checker tur failback immediate dev_loss_tmo 60 fast_io_fail_tmo 30 } device { vendor "Pillar" product "*" path_grouping_policy group_by_prio prio alua no_path_retry 60 path_checker tur failback immediate dev_loss_tmo 60 fast_io_fail_tmo 30 } device { vendor "Pillar" product "Axiom*" prio alua features "0" hardware_handler "0" path_grouping_policy group_by_prio rr_weight priorities rr_min_io_rq 1 path_checker tur } device { vendor "NEXSAN " product "NXS-B01-000" path_grouping_policy group_by_prio prio alua features "1 queue_if_no_path" path_checker tur path_selector "queue-length 0" hardware_handler "0" rr_weight priorities no_path_retry 5 failback 300 rr_min_io_rq 1 } device { vendor "NEXSAN " product "SATAB.*" path_grouping_policy group_by_prio prio alua features "1 queue_if_no_path" path_checker tur path_selector "queue-length 0" hardware_handler "0" rr_weight priorities no_path_retry 5 failback 300 rr_min_io_rq 1 } device { vendor "Nimbus*" product "*" path_checker "tur" failback immediate path_grouping_policy group_by_prio rr_min_io_rq 1 } device { vendor "3PARdata" product "VV" no_path_retry 18 features "0" hardware_handler "0" path_grouping_policy multibus path_selector "queue-length 0" rr_weight uniform rr_min_io_rq 1 path_checker tur failback immediate } device { vendor "DotHill" product "R/Evo 2730-2R" prio const path_grouping_policy multibus path_checker tur failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry fail hardware_handler 0 path_selector "queue-length 0" } device { vendor "DDN" product "EF3015" prio alua path_grouping_policy group_by_prio path_checker tur failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry 18 hardware_handler "0" path_selector "queue-length 0" } device { vendor "TMS" product "RamSan" path_selector "queue-length 0" path_grouping_policy multibus prio const path_checker tur rr_min_io_rq 1 rr_weight priorities failback immediate no_path_retry fail } device { vendor "DDN" product "S2A 9[579]*" # Use the following directive to utilize DDN S2A getuid callout script # which uses a predefined lookup table to generate uid name based # on S2A LUN name. prio alua path_grouping_policy group_by_prio # Review DDN Firmware Release notes and match polling_interval to # host timeout value #polling_interval 70 path_checker tur failback immediate no_path_retry fail } device { vendor "DDN" product "SFA 10000" path_grouping_policy group_by_prio prio alua path_checker tur failback immediate rr_min_io_rq 1 no_path_retry 12 } device { vendor "Promise" product "VTrak*" path_grouping_policy multibus path_checker tur path_selector "queue-length 0" hardware_handler "0" failback immediate rr_weight uniform rr_min_io_rq 1 no_path_retry queue features "1 queue_if_no_path" product_blacklist "VTrak V-LUN" fast_io_fail_tmo 30 dev_loss_tmo 60 } device { vendor "FUJITSU" product "ETERNUS_DX*" prio alua path_grouping_policy group_by_prio path_selector "queue-length 0" failback immediate no_path_retry 10 path_checker tur rr_weight uniform rr_min_io_rq 1 fast_io_fail_tmo 5 } # Use these settings if ALUA is enabled on the Promise array # device { # vendor "Promise" # product "VTrak" # path_grouping_policy group_by_prio # prio alua # path_checker tur # path_selector "queue-length 0" # hardware_handler "1 alua" # failback immediate # rr_weight uniform # rr_min_io_rq 1 # no_path_retry queue # features "1 queue_if_no_path" # product_blacklist "VTrak V-LUN" # } } ## ## Here is an example of how to configure some standard options. ## # #defaults { # udev_dir /dev # polling_interval 10 # path_selector "queue-length 0" # path_grouping_policy multibus # prio const # path_checker readsector0 # rr_min_io_rq 1 # max_fds 8192 # rr_weight priorities # failback immediate # no_path_retry fail # user_friendly_names yes #} ## ## The wwid line in the following blacklist section is shown as an example ## of how to blacklist devices by wwid. The 2 devnode lines are the ## compiled in default blacklist. If you want to blacklist entire types ## of devices, such as all scsi devices, you should use a devnode line. ## However, if you want to blacklist specific devices, you should use ## a wwid line. Since there is no guarantee that a specific device will ## not change names on reboot (from /dev/sda to /dev/sdb for example) ## devnode lines are not recommended for blacklisting specific devices. ## #blacklist { # wwid 26353900f02796769 # devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" # devnode "^hd[a-z]" #} #blacklist_exceptions { # device { # vendor "*" # product "*" # } #} #multipaths { # multipath { # wwid 3600508b4000156d700012000000b0000 # alias yellow # path_grouping_policy multibus # path_checker readsector0 # path_selector "queue-length 0" # failback manual # rr_weight priorities # no_path_retry 5 # } # multipath { # wwid 1DEC_____321816758474 # alias red # } #} #devices { # device { # vendor "COMPAQ " # product "HSV110 (C)COMPAQ" # path_grouping_policy multibus # path_checker readsector0 # path_selector "queue-length 0" # hardware_handler "0" # failback 15 # rr_weight priorities # no_path_retry queue # } # device { # vendor "COMPAQ " # product "MSA1000 " # path_grouping_policy multibus # } #}