4.5. 配置文件设备

表 4.3 “设备属性” 显示您可以为 multipath.conf 配置文件 devices 部分的每个独立储存设备能设置的属性。DM Multipath 会使用这些属性,除非它们被 multipath.conf 文件 multipaths 部分为包含该设备的路径所指定的属性覆盖。这些属性会覆盖 multipath.conf 文件 defaults 部分设定的属性。
多路径配置中默认包含许多支持 multipath 的设备。如需了解默认配置值(包括支持的设备)的相关信息,请运行以下命令之一。
# multipathd show config
# multipath -t 
您可能不需要为这些设备修改默认值,但如果您想要修改,可以通过在配置文件中添加条目来覆盖默认值。您可以为设备复制 multipathd show config 命令显示的设备配置默认值,并覆盖您想要修改的值。
如需在配置文件的这部分添加没有默认自动配置的设备,您需要设置 vendorproduct 参数。您能在 /sys/block/device_name/device/vendor/sys/block/device_name/device/model 中找到这些值,其中 device_name 是要进行多路径操作的设备,示例如下:
# cat /sys/block/sda/device/vendor
WINSYS  
# cat /sys/block/sda/device/model
SF2372
要指定的附加参数要视具体设备而定。如果设备是主动/主动模式,您通常不需要设置附加参数。您可能想要将 path_grouping_policy 设为 multibus。其它您可能需要设定的参数有 no_path_retryrr_min_io,详见 表 4.3 “设备属性”
如果设备是主动/被动模式,但它会自动将路径切换到被动路径,那么您需要将检查器功能改为不需向路径发送 I/O 来测试其是否工作(否则,您的设备将一直进行出错冗余)的功能。这几乎意味着您将 path_checker 设为 tur。这对所有支持 Test Unit Ready 命令的 SCSI 设备都适用。
如果该设备需要一个特殊的命令切换路径,那么为多路径配置此设备需要硬件处理器内核模块。当前的硬件处理器是 emc。如果这样还不能满足您的设备,则您可能无法为多路径配置该设备。

表 4.3. 设备属性

属性描述
vendor 指定 device 采用的存储设备的零售商名称,例如 COMPAQ
product 指定 device 属性使用的存储设备产品名,比如 HSV110 (C) COMPAQ
revision 指定存储设备的产品修订识别程序。
product_blacklist 根据产品指定用来将设备列入黑名单的正则表达式。
alias_prefix 这个设备类型使用的 user_friendly_names 前缀,而不是默认的"mpath"。
hardware_handler
指定将在切换路径组群或者处理 I/O 错误时用来执行硬件具体动作的模块。可能的值包括:
1 emc:EMC 存储阵列的硬件处理程序。
1 alua:SCSI-3 ALUA 阵列的硬件处理程序。
1 hp_sw:Compaq/HP 控制器的硬件处理程序。
1 rdac:LSI/Engenio RDAC 控制器的硬件处理程序。
path_grouping_policy
指定用于未指定路径的默认路径分组策略,可能的值包括:
failover = 每个优先组群有一个路径
multibus = 所有有效路径在一个优先组群中
group_by_serial = 每个检测到的系列号有一个优先组群
group_by_prio = 每个路径优先值有一个优先组群
group_by_node_name = 每个目标节点名有一个优先组群
path_selector
指定用来决定下一个 I/O 操作所使用路径的默认算法。可能的值包括:
round-robin 0:在路径组中循环每个路径,向每个路径发送同样数量的 I/O。
queue-length 0:将下一组 I/O 发送到具有最少未处理 I/O 请求的路径。
service-time 0:将下一组 I/O 发送到具有最短预计服务时间的路径,这是由未处理 I/O 的总量除以每个路径的相对流量决定的。
path_checker
指定用于决定路径状态的默认方法,可能的值包括:
readsector0:读取该设备的第一扇区。
tur:在该设备中执行 TEST UNIT READY
emc_clariion:查询 EMC Clariion 具体 EVPD 页面 0xCO 以便决定路径。
hp_sw:为使用 Active/Standby 固件的 HP 存储阵列检查路径状态。
rdac:为 LSI/Engenio RDAC 存储控制器检查路径状态。
directio:使用直接 I/O 读取第一个扇区。
features
多路径设备的默认额外功能,使用以下格式:"number_of_features_plus_arguments feature1 ..."。
features 可能的值包括:
queue_if_no_path,与将 no_path_retry 设置为 queue 相同。欲了解使用此功能可能出现的问题,请参阅〈第 5.7 节 “有 queue_if_no_path 功能的问题”〉。
retain_attached_hw_handler:如果此参数被设为 yes,并且 SCSI 层已经为路径设备附加硬件处理程序,multipath 将不会强制设备使用 multipath.conf 文件指定的 hardware_handler。如果 SCSI 层未附加硬件处理程序,multipath 将会继续使用配置的硬件处理程序。
pg_init_retries n:路径组初始化重试,失败前最多重试 n 次,1 <= n <= 50。
pg_init_delay_msecs n:在路径组初始化重试的间隔,等待 n 毫秒,0 <= n <= 60000。
prio
指定要获得路径优先值所需调用的默认程序及参数。例如:SPC-3 中的 ALUA 字节提供了一个可改变的 prio 值。可能的值包括:
const:为所有路径设定优先权 1。
emc:为 EMC 阵列生成路径优先权。
alua:根据 SCSI-3 ALUA 设置生成路径有限级。从 Red Hat Enterprise Linux 7.3 开始,如果在设备配置中指定 prio "alua exclusive_pref_bit",多路径将生成包含只使用 pref 字节集的路径组,并为该组设定最高优先级。
ontap:为 NetApp 阵列生成路径优先权。
rdac:为 LSI/Engenio RDAC 控制程序生成路径优先权。
hp_sw:为 Compaq/HP 控制程序在激活/等待模式中生成路径优先权。
hds:为 Hitachi HDS Modular 存储阵列生成路径优先权。
failback
管理路径组群出错切换。
immediate 值指定立即恢复到包含活跃路径的最高级别路径组群。
manual 值指定不需要立即恢复,只有在操作者干预的情况下会发生恢复。
followover 值指定当路径组的第一个路径成为活跃路径时应执行自动恢复。这可让节点在另一个节点请求故障修复时不会自动恢复。
大于 0 的数字值指定推迟出错切换,以秒表示。
rr_weight 如果将其设为 priorities,就不会在调用 selector 选择下一个路径前向路径发送 rr_min_io 请求,而是由 rr_min_io 乘以路径优先权决定发送的请求数,即由 prio 功能决定。如果将其设定为 uniform,则所有路径都有相同的加权。
no_path_retry
此属性的数字值指定了系统在禁用队列前,应该尝试使用失败路径的次数。
值为 fail 意味着立即失败,无需排队。
值为 queue 意味着路径固定前不会停止排队。
rr_min_io 指定切换到当前路径组的下一个路径前路由到该路径的 I/O 请求数。这个设置值用于运行内核为 2.6.31 之前的系统。使用新版本的系统应使用 rr_min_io_rq。默认值为 1000。
rr_min_io_rq 使用 request-based device-mapper-multipath 指定切换到当前路径组的下一个路径前路由到该路径的 I/O 请求数。这个设置值用于运行当前内核的系统。在使用内核 2.6.31 版本之前的系统应使用 rr_min_io。默认值为 1。
fast_io_fail_tmo 在 FC 远程端口发现问题后,无法在那个远程端口设备中执行 I/O 前 SCSI 层要等待的时间。默认值应小于 dev_loss_tmo 值。将其设定为 off 则会禁用超时。
dev_loss_tmo 在 FC 远程端口发现问题后,到从该系统中删除它之前 SCSI 层要等待的时间。将其设定为无限,则会将其设定为 2147483647 秒,或者 68 年。
flush_on_last_del 如果被设为 yes,当设备的最后一条路径被删除时,multipathd 守护程序将会禁用队列。
user_friendly_names 如果将其设为 yes,即指定该系统应该使用文件 /etc/multipath/bindings 为该多路径分配一个持久且唯一的别名,格式为 mpathn。如果设定为 no,即指定该系统应使用 WWID 作为该多路径的别名。在这两种情况下,您在这里指定的数值将被您在配置文件 multipaths 部分指定的具体设备别名覆盖。默认值为 no
retain_attached_hw_handler 如果此参数被设为 yes,并且 SCSI 层已经为路径设备附加了硬件处理程序,那么 multipath 将不会强制设备使用 multipath.conf 文件指定的 hardware_handler。如果 SCSI 层未附加硬件处理程序,multipath 将会继续使用其配置的硬件处理程序。默认值为 no
detect_prio 如果被设为 yes,multipath 将会首先检查设备是否支持 ALUA。若支持,将会自动为设备分配 alua 排序器;若不支持,将会按惯例确定排序器。
uid_attribute 提供唯一路径标识符。
delay_watch_checks (从 Red Hat Enterprise Linux Release 7.2 开始)如果将其设定为大于 0 的值,multipathd 守护进程将监视最近有效的路径,并执行指定数量的检查。如果在监视期间这些路径再次变为无法使用,则不会在这些路径下一次可用时就使用它们,直到连续检查使用 delay_wait_checks 指定的次数后它们都可用为止。 这样可防止将那些可能不太可靠的路径在上线后立即投入使用。
delay_wait_checks (从 Red Hat Enterprise Linux 7.2 开始)如果将其设定为大于 0 的值,则最近重新上线的设备在由 delay_watch_checks 指定的检查次数内再次无法使用后,那么它下一次上线后就不会被标记并延迟,并在经过使用 delay_watch_checks 指定的检查次数后方可使用。
deferred_remove如果设定为 yes,则在删除最后一个路径设备时,multipathd 将会执行延期删除,而不是常规删除。这样就会保证如果执行常规删除且操作失败时某个多路径设备正在使用中,该设备会在最后一个用户关闭该设备时自动被删除。
skip_kpartx如果设定为 yeskpartx 不会在该设备中自动创建分区。这样即使该设备有分区表,也可以允许用户在不创建分区的情况下创建多路径设备。
以下示例显示了多路径配置文件的 device 条目。
#	}
#	device {
#		vendor			"COMPAQ  "
#		product			"MSA1000         "
#		path_grouping_policy	multibus
#		path_checker		tur
#		rr_weight		priorities
#	}
#}