4.5. Configuration File Devices
Table 4.3, “Device Attributes” shows the attributes that you can set for each individual storage device in the
devices
section of the
multipath.conf
configuration file. These attributes are used by DM-Multipath unless they are overwritten by the attributes specified in the
multipaths
section of the
multipath.conf
file for paths that contain the device. These attributes override the attributes set in the
defaults
section of the
multipath.conf
file.
Many devices that support multipathing are included by default in a multipath configuration. The values for the devices that are supported by default are listed in the multipath.conf.defaults
file. You probably will not need to modify the values for these devices, but if you do you can overwrite the default values by including an entry in the configuration file for the device that overwrites those values. You can copy the device configuration defaults from the multipath.conf.defaults
file for the device and override the values that you want to change.
To add a device to this section of the configuration file that is not configured automatically by default, you need to set the vendor
and product
parameters. You can find these values by looking at /sys/block/device_name
/device/vendor
and /sys/block/device_name
/device/model
where device_name
is the device to be multipathed, as in the following example:
[root@cypher-06 ~]# cat /sys/block/sda/device/vendor
WINSYS
[root@cypher-06 ~]# cat /sys/block/sda/device/model
SF2372
The additional parameters to specify depend on your specific device. If the device is active/active, you will usually not need to set additional parameters. You may want to set
path_grouping_policy
to
multibus
. Other parameters you may need to set are
no_path_retry
and
rr_min_io
, as described in
Table 4.3, “Device Attributes”.
If the device is active/passive, but it automatically switches paths with I/O to the passive path, you need to change the checker function to one that does not send I/O to the path to test if it is working (otherwise, your device will keep failing over). This almost always means that you set the path_checker
to tur
; this works for all SCSI devices that support the Test Unit Ready command, which most do.
If the device needs a special command to switch paths, then configuring this device for multipath requires a hardware handler kernel module. The current available hardware handler is emc
. If this is not sufficient for your device, you may not be able to configure the device for multipath.
Table 4.3. Device Attributes
Attribute |
Description |
vendor |
Specifies the vendor name of the storage device to which the device attributes apply, for example COMPAQ . |
product |
Specifies the product name of the storage device to which the device attributes apply, for example HSV110 (C)COMPAQ . |
revision |
Specifies the product revision identifier of the storage device. |
product_blacklist |
Specifies a regular expression used to blacklist devices by product. |
hardware_handler |
Specifies a module that will be used to perform hardware specific actions when switching path groups or handling I/O errors. Possible values include: |
1 emc : hardware handler for EMC storage arrays. |
1 alua : hardware handler for SCSI-3 ALUA arrays. |
1 hp_sw : hardware handler for Compaq/HP controllers. |
1 rdac : hardware handler for the LSI/Engenio RDAC controllers. |
|
path_grouping_policy |
Specifies the default path grouping policy to apply to unspecified multipaths. Possible values include: |
failover = 1 path per priority group |
multibus = all valid paths in 1 priority group |
group_by_serial = 1 priority group per detected serial number |
group_by_prio = 1 priority group per path priority value |
group_by_node_name = 1 priority group per target node name |
|
getuid_callout |
Specifies the default program and arguments to call out to obtain a unique path identifier. An absolute path is required. |
path_selector |
Specifies the default algorithm to use in determining what path to use for the next I/O operation. Possible values include: |
round-robin 0 : Loop through every path in the path group, sending the same amount of I/O to each. |
queue-length 0 : Send the next bunch of I/O down the path with the least number of outstanding I/O requests. |
service-time 0 : Send the next bunch of I/O down the path with the shortest estimated service time, which is determined by dividing the total size of the outstanding I/O to each path by its relative throughput. |
The default value is round-robin 0 . |
|
path_checker |
Specifies the default method used to determine the state of the paths. Possible values include: |
readsector0 : Read the first sector of the device. |
tur : Issue a TEST UNIT READY to the device. |
emc_clariion : Query the EMC Clariion specific EVPD page 0xC0 to determine the path. |
hp_sw : Check the path state for HP storage arrays with Active/Standby firmware. |
rdac : Check the path stat for LSI/Engenio RDAC storage controller. |
directio : Read the first sector with direct I/O. |
The default value is readsector0 . |
|
features |
The extra features of multipath devices. The only existing feature is queue_if_no_path , which is the same as setting no_path_retry to queue . For information on issues that may arise when using this feature, see Section 5.4, “Issues with queue_if_no_path feature”. |
prio |
Specifies the default function to call to obtain a path priority value. For example, the ALUA bits in SPC-3 provide an exploitable prio value. Possible values include: |
const : Set a priority of 1 to all paths. |
emc : Generate the path priority for EMC arrays. |
alua : Generate the path priority based on the SCSI-3 ALUA settings. |
tpg_pref : Generate the path priority based on the SCSI-3 ALUA settings, using the preferred port bit. |
ontap : Generate the path priority for NetApp arrays. |
rdac : Generate the path priority for LSI/Engenio RDAC controller. |
hp_sw : Generate the path priority for Compaq/HP controller in active/standby mode. |
hds : Generate the path priority for Hitachi HDS Modular storage arrays. |
The default value is const . |
|
failback |
Manages path group failback. |
A value of immediate specifies immediate failback to the highest priority path group that contains active paths. |
A value of manual specifies that there should not be immediate failback but that failback can happen only with operator intervention. |
A value of followover specifies that automatic failback should be performed when the first path of a path group becomes active. This keeps a node from automatically failing back when another node requested the failover. |
A numeric value greater than zero specifies deferred failback, expressed in seconds. |
The default value is manual . |
|
rr_weight |
If set to priorities , then instead of sending rr_min_io requests to a path before calling path_selector to choose the next path, the number of requests to send is determined by rr_min_io times the path's priority, as determined by the prio function. If set to uniform , all path weights are equal. The default value is uniform . |
no_path_retry |
A numeric value for this attribute specifies the number of times the system should attempt to use a failed path before disabling queueing. |
A value of fail indicates immediate failure, without queuing. |
A value of queue indicates that queuing should not stop until the path is fixed. |
The default value is 0. |
|
rr_min_io |
The number of I/O requests to route to a path before switching to the next path in the current path group. The default value is 1000. |
fast_io_fail_tmo |
The number of seconds the scsi layer will wait after a problem has been detected on an FC remote port before failing I/O to devices on that remote port. This value should be smaller than the value of dev_loss_tmo . Setting this to off will disable the timeout. |
dev_loss_tmo |
The number of seconds the scsi layer will wait after a problem has been detected on an FC remote port before removing it from the system. |
flush_on_last_del |
If set to yes , the multipathd daemon will disable queueing when the last path to a device has been deleted. The default value is no . |
The following example shows a device
entry in the multipath configuration file.
# }
# device {
# vendor "COMPAQ "
# product "MSA1000 "
# path_grouping_policy multibus
# path_checker tur
# rr_weight priorities
# }
#}