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.conffile. 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.conffile 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.quantumfor Quantum QXS, F-Series, and H-Series storage arrays. Before configuring new entries for Quantum arrays, scroll down through themultipath.conffile 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 rootshto gain root user access. - Enter the password for the
stornextuser account again.
- Open the
/etc/multipath.conf.quantumfile: - 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.conffile. - Copy the device information.
- Open the
/etc/multipath.conffile. - Insert the information into the
devices {section of the file. - By default, all devices are blacklisted in the
blacklistsection ofmultipath.conffile, 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_exceptionssection 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
# }
#}