Red Hat Training

A Red Hat training course is available for RHEL 8

5.2. 配置文件默认设置

/etc/multipath.conf 配置文件包含一个 defaults 部分。本节包含设备映射器 (DM) 多路径的默认配置。默认值根据您的初始设备设置可能会有所不同。

以下是查看默认配置的方法:

  • 如果在多路径设备上安装机器,则默认多路径配置会自动应用。默认配置包括以下内容:

    • 如需默认配置值的完整列表,请执行 multipath -tmultipathd show config 命令。
    • 有关配置选项及描述的列表,请查看 multipath.conf 手册页。
  • 如果您没有在安装过程中设置多路径,请执行 mpathconf --enable 命令来获取默认配置。

下表描述了 multipath.conf 配置文件的 defaults 部分中设置的属性。multipaths 部分中指定的属性的优先级高于 devices 部分的值。devices 部分中指定的属性的优先级高于默认值。使用 overrides 部分为所有设备类型设置属性值,即使这些设备类型在 devices 部分中有一个内置配置条目。overrides 部分没有强制的属性。但是,本节中设置的任何属性优先于 devicesdefaults 部分中的值。

表 5.1. 多路径配置默认设置

å±�性描述

polling_interval

指定两个路径检查间隔(以秒为单位)。对于可正常工作的路径,检查间的间隔会逐渐增加到 max_polling_interval。默认值为 5

max_polling_interval

指定两个路径检查间隔的最大长度(以秒为单位)。

默认值为 4 * polling_interval

find_multipaths

定义设置多路径设备的模式。可用值包括:

no :如果将 find_multipaths 设置为 no,则多路径 将规则应用为 strict 值,而 multipathd 守护进程将规则应用为 greedy 值。

yes :如果至少有一个设备不在具有相同 World Wide Identifier (WWID) 的 黑名单 中,或者多路径创建了设备 WWID 的多路径设备(即使该多路径设备不再存在),那么该设备将被视为多路径设备的路径。

greedymultipathdmultipath 多会将每个非黑名单的设备视为多路径设备路径。

smart :多路径自动认为,每个非黑名单的设备都是多路径设备路径。如果有一个带有相同 WWID 的第二个路径没有出现在 find_multipaths_timeout 指定的时间内,多路径会释放该设备并使其可以被系统其余使用。multipathd 守护进程会像使用 yes 值一样应用规则。

strict :如果创建使用设备 WWID 的多路径设备,这个值只会将设备视为多路径路径。

默认值为 off。默认 multipath.conf 文件将 find_multipaths 设置为 yes

find_multipaths_timeout

这代表超时(以秒为单位),在检测到第一个路径后等待附加路径(如果设置了 find_multipaths smart )。可能的值包括:

正值 :如果使用正值设置,则超时适用于所有非黑名单设备。

负值: 如果设置了负值,则超时时间只适用于在多路径硬件表中有一个条目的已知设备,这些设备位于内置表中,或者在 设备 部分中。其他未知设备使用 1 秒的超时以避免引导延迟。

0 :系统应用此属性的内置默认值。

已知硬件的默认值为 -10。这意味着已知设备有 10 秒超时。未知设备有一个 1 秒的超时。如果 find_multipaths 属性具有 Smart 之外的值,则此属性没有影响。

uxsock_timeout

以毫秒为单位设置 multipathd 互动命令的超时。

对于有大量设备的系统,multipathd 互动命令可能会超时并失败。如果发生这种情况,请增加这个超时时间来解决这个问题。

默认值为 4000

reassign_maps

启用重新分配设备映射器映射。使用这个选项时,multipathd 守护进程会重新映射现有的设备映射器映射,以便始终指向多路径设备,而不是底层块设备。可能的值有 yesno。默认值为 no

verbosity

默认详细程度值为 2。数值越大详细程度越高。有效级别在 04 之间。

path_selector

指定用于确定用于下一个 I/O 操作的路径的默认算法。可能的值包括:

round-robin 0 :通过路径组中的每个路径进行循环,将相同数量的 I/O 请求发送由 rr_min_iorr_min_io_rq 确定的。

queue-length 0 :发送下一个 I/O 请求组,将路径缩减为预期最少的 I/O 请求数。

service-time 0 :发送下一组 I/O 请求,并在预计服务时间最短的情况下降低路径。这通过将未完成的 I/O 的总大小除除以相对吞吐量的每个路径来决定。

默认值为 service-time 0

path_grouping_policy

指定要应用到未指定多路径的默认路径分组策略。可能的值包括:

failover :每个优先级组 1 个路径。

multibus :在 1 优先级组中的所有有效路径。

group_by_serial :每个检测到的序列号 1 优先级组。

group_by_prio :每个路径优先级值 1 优先级组。优先级由 prio 属性决定。

group_by_node_name :每个目标节点名称 1 优先级组。/sys/class/fc_transport/target*/node_name 目录包含目标节点名称。

默认值为 failover

uid_attrs

将这个选项设置为按 WWID 激活合并 uevents。此操作可能提高了 uevent 处理效率。也是配置 udev 属性用来确定唯一路径标识符 (WWID) 的替代方法。

这个选项的值是以空格分开的记录列表,如 type:ATTR,其中 type 与设备节点名称匹配,ATTR 是匹配的 udev 属性的名称。

如果您配置这个选项,且与设备的设备名称匹配,它会覆盖其他配置的方法以确定这个设备的 WWID。

您可以通过将该值设置为 sd:ID_SERIAL dasd:ID_UID nvme:ID_WWN 来启用 uevent 合并。

默认为 unset

prio

指定调用以获取路径优先级值的默认功能。例如,SPC-3 中的 ALUA 位提供了可被利用的 prio 值。可能的值包括:

const :对所有路径设置优先级 1。

EMC :为 EMC 阵列生成路径优先级。

sysfs :从 sysfs 生成路径优先级。这个优先级程序接受可选的 prio_argexclusive_pref_bitsysfs 值使用 sysfs 属性 access_statepreferred_path

alua :根据 SCSI-3 ALUA 设置生成路径优先级。如果您在设备配置中指定 prio aluaprio_args exclusive_pref_bit,多路径会创建一个路径,该路径只包含 exclusive_pref_bit 设置的路径,并为该路径分配最高优先级最高的路径。有关此情况的更多信息,请参阅 multipath.conf (5) 手册页。

ontap :为 NetApp 阵列生成路径优先级。

rdac :为 LSI/Engenio RDAC 控制器生成路径优先级。

hp_sw :在 active/standby 模式中生成 Compaq/HP 控制器的路径优先级。

hds :为 Hitachi HDS Modular 存储阵列生成路径优先级。

random :在 1 到 10 之间生成随机优先级。

weightedpath :根据正则表达式和所提供的优先级作为参数生成路径优先级。需要一个 prio_args 关键字。

path_latency :根据延迟算法生成路径优先级。需要一个 prio_args 关键字。

ana :根据 NVMe ANA 设置生成路径优先级。这个优先级例程是硬件依赖的。

datacore :为某些 DataCore 存储阵列生成路径优先级。需要一个 prio_args 关键字。这个优先级例程是硬件依赖的。

iet :根据其 IP 地址为 iSCSI 目标生成路径优先级。需要一个 prio_args 关键字。此优先级例程仅通过 iSCSI 提供。

默认值取决于 detect_prio 设置。如果将 detect_prio 设置为 yes,则默认优先级算法为 sysfs。唯一的例外是 NetAPP E-Series,其默认为 alua。如果 detect_prio 设为 no,则默认优先级算法为 const

prio_args

传递给 prio 功能的参数。这只适用于以下优先级:

weighted: 格式需要是 <hbtl,devname,serial,wwn> <regex1> <prio1> <regex2> <prio2>

HBTL :Regex 值可以是 SCSI H:B:T:L 格式。例如:1:0:.:. , *:0:0:

devname :Regex 值可以是设备名称格式。例如:sda, sd.e

serial :Regex 值可以是序列号格式。通过 sysfs 查找 串行 设备,或者运行命令 multipathd show paths format "%z"

wwn: Regex 值可采用 host_wwnn:host_wwpn:target_wwn:target_wwpn 形式。这些值可以通过 sysfs 或命令 multipathd show paths format %N:%R:%n:%r" 查找。

path_latency: 需要的值,格式为 io_num= <integer> base_num=<integer>

io_num :读取 IO 的数量,持续发送到当前路径。这个值有助于计算平均路径延迟。有效值包括 Integer, [2, 200]

base_num: logarithmic scale 的基本数字值。这个值有助于对不同的优先级进行分区。有效值包括 Integer, [2, 10]。最大的延迟值是 100s,最低平均延迟值为 1us

alua :如果设置了 exclusive_pref_bit 值,则设置了 preferred_path_bit 的路径始终创建自己的路径组。

sysfs :如果设置了 exclusive_pref_bit 值,则设置了 preferred_path_bit 的路径始终创建自己的路径组。

datacore: 需要的值,格式为 timeout=<milliseconds> preferredsds=<name>

preferredsds :必需的值,它代表首选的 SDS 名称。

timeout: 这个值是可选的。以毫秒为单位设置查询超时。

iet: 一个需要的值,格式为 preferredip=<ip_address>

preferredip :此值是必需的。这是 iSCSI 目标的首选 IP 地址,使用点十进制表示法。

默认值为 unset

功能

多路径设备的默认额外功能,格式为 "number_of_features_plus_arguments feature1 …​"

features 的可能值包括:

queue_if_no_path :与将 no_path_retry 设置为 queue 的效果相同。

pg_init_retries n: 在失败前,重新尝试路径组初始化最多 n 次。这个值必须在 1 到 50 之间。

pg_init_delay_msecs msecs: pg_init 重新尝试初始化前的时间(毫秒)。这个值必须在 0 到 60000 之间。

queue_ mode :选择每个多路径设备的队列模式。mode 值选项包括 biorqmq。它们分别对应于基于 bio、request 和 block-multiqueue 请求 (blk-mq)。

默认值为 unset。默认也可以依赖于内核参数 dm_mod.use_blk_mq。如果已在 参数中设置了两个选项,则这两个选项为 mq,否则为 rq

path_checker

指定确定路径状态的默认方法。可能的值包括:

readsector0 :读该设备的第一个扇区。

tur :向设备发生一个 TEST UNIT READY 命令。

emc_clariion: 查询 EMC Clariion 特定的 EVPD 页 0xC0 以确定路径。

hp_sw :检查使用 Active/Standby 固件的 HP 存储阵列的路径状态。

rdac :检查 LSI/Engenio RDAC 存储控制器的路径状态。

directio :阅读带有直接 I/O 的第一个扇区。

cciss_tur :检查 HP/COMPAQ Smart Array (CCISS) 控制器的路径状态。这依赖于具体硬件。

none :不检查该设备。退回使用从 sysfs 检索的值。

默认值为 tur

alias_prefix

此属性代表 user_friendly_names 前缀。

默认值为 mpath

failback

管理路径组故障恢复。可能的值包括:

immediate :指定包含主动路径的最高优先级路径组的即时故障。

manual :指定没有立即故障恢复,但可以通过操作员的干预来进行故障恢复。

followover :指定只有路径组的第一个路径处于活跃状态时,才能执行自动故障恢复。当另一个节点请求故障切换时,这会让节点自动进行故障恢复。

大于零的数字值指定延迟故障恢复,以秒为单位表示。

默认值为 manual

rr_min_io

指定在切换到当前路径组中的下一个路径前要路由到路径的 I/O 请求数量。此设置仅适用于运行超过 2.6.31 的内核。较新的系统应使用 rr_min_io_rq。默认值为 1000

rr_min_io_rq

指定在切换到当前路径组中的下一个路径前要路由到路径的 I/O 请求数量。使用基于请求的 device-mapper-multipath。此设置可用于运行当前内核的系统。在运行早于 2.6.31 的内核的系统上,请使用 rr_min_io。默认值为:1

no_path_retry

此属性的数字值指定在禁用排队前,路径检查程序必须针对多路径设备中的所有路径失败的次数。

fail 表示立即失败,而不排队。

queue 表示在路径修复前排队不应停止。

默认值为 fail

user_friendly_names

可能的值包括:

yes :指定系统可以使用 /etc/multipath/bindings 文件为多路径分配永久唯一的别名,格式为 mpath<n>

no :系统使用 WWID 作为多路径的别名。在配置文件的 multipaths 部分中设置的所有特定于设备的别名,可覆盖此名称。

默认值为 no

queue_without_daemon

如果设置为 no,则 multipathd 守护进程会禁用所有设备的队列,在关闭时。默认值为 no

flush_on_last_del

如果设置为 yes,则 multipathd 守护进程会在删除最后的路径到设备时禁用排队。默认值为 no。

max_fds

设置多路径和 multipathd 守护进程可打开的最大打开文件描述符数量。这等同于 ulimit -n 命令。默认值为 max,它从 /proc/sys/fs/nr_open 被设置为系统限制。

checker_timeout

用来使用优先级优先级和路径检查器的超时时间(以秒为单位)发出带有显式超时的 SCSI 命令。sys/block/sd<x>/device/timeout 目录包括默认值。

fast_io_fail_tmo

当在一个 FC 远程端口中出现问题后 SCSI 层需要等待的时间(秒)才使到远程端口上的设备 I/O 失败。这个值需要小于 dev_loss_tmo 的值。把它设置为 off 会禁用超时。默认值为 5fast_io_fail_tmo 选项会覆盖底层路径设备的 recovery_tmoreplacement_timeout 选项的值。

dev_loss_tmo

SCSI 层在 FC 远程端口上检测到问题后等待的秒数,然后再从系统中删除。把它设置为 infinity 将会将其设置为 2147483647 秒(68 年)。OS 决定默认值。

eh_deadline

指定 SCSI 层在 SCSI 设备失败时执行错误处理的最大秒数。在这个超时后,scsi 层会执行完整的 HBA 重置。在 rport 永不丢失的情况下,需要设置此项,因此 fast_io_fail_tmodev_loss_tmo 不会触发,但 scsi 命令仍然挂起。当 SCSI 错误处理器执行 HBA 重置时,这会影响那个 HBA 上的所有目标路径。只有当受影响 HBA 中的所有目标都被多路径时,才应设置 eh_deadline 值。

默认值为 unset

detect_prio

如果它被设置为 yes,则多路径会检测该设备是否是支持 Asymmetric Logical Unit Access (ALUA)的 SCSI 设备,或者支持 Asymmetric Namespace Access (ANA)的 NVMe 设备。如果设备支持 ALUA,则多路径会自动为其分配 alua prioritizer。如果设备支持 ANA,则多路径会自动为其分配 ana prioritizer。

如果 detect_prio 设置为 no,或者设备不支持 ALUA 或 ANA,则 prio 属性会设置 prioritizer。

默认值为 yes

uid_attribute

指定用于设备 WWID 的 udev 属性。

默认值取决于具体设备:SCSI 设备为 ID_SERIAL,DASD 设备为 ID_UID,NVMe 设备为 ID_WWN

force_sync

如果设置为 yes,则此参数可防止路径检查程序在 async 模式下运行。这意味着一次仅运行一个检查程序。当多个 multipathd checkers 并行运行,并可能导致大量 CPU 压力时,这非常有用。

默认值为 no

strict_timing

如果设置为 yesmultipathd 守护进程会在正好 1 秒后启动一个新的路径检查程序循环,以便每个路径检查在 polling_interval 的确切设置秒内进行。在忙碌的系统上,路径检查所需的时间可能长于一秒。接下来的轮循中会考虑缺少的 tick。如果路径检查的时间超过 polling_interval 设置的秒,则发出警告。

默认值为 no

retrigger_tries,retrigger_delay

结合使用 retrigger_triesretrigger_delay 参数,使 multipathd retrigger uevents。如果 udev 无法完全处理原始的 uevents,则会导致多路径无法使用该设备。retrigger_tries 参数设置多路径试图在未完全设置时重新触发 uevent 的次数。retrigger_delay 参数设置重试间隔秒数。这两个选项都接受大于或等于 0 的数字。将 retrigger_tries 参数设置为 0 可禁用重试。将 retrigger_delay 参数设置为 0 会导致在路径检查程序的下一个循环中重新发出 uevent

retrigger_tries 的默认值为 3retrigger_delay 的默认值为 10。

missing_uev_wait_timeout

此属性控制 multipathd 守护进程等待为新创建的多路径设备接收来自 udev 的更改事件的秒数。之后,它会自动启用设备重新载入。在大多数情况下,multipathd 延迟会在设备上重新加载,直到它从初始表负载接收更改 uevent

默认值为 30

deferred_remove

如果设置为 yesmultipathd 会执行延迟删除,而不是在删除最后一个路径设备时进行常规删除。这样可确保如果执行常规删除,且删除失败,则当最后一个用户关闭该设备时,设备会被自动删除。默认值为 no

san_path_err_threshold, san_path_err_forget_rate, san_path_err_recovery_time

如果将所有三个属性设置为大于零的整数,则它们可让 multipathd 守护进程使 multipathd 守护进程无法重新生成路径,从而监控路径检查程序失败的频率。如果路径检查程序失败的次数多于 san_path_err_threshold 属性的值,但在 san_path_err_forget_rate 检查内,则 multipathd 守护进程不会重新恢复路径,直到 san_path_err_recovery_time 属性的值返回,且没有任何路径检查失败。

如需更多信息,请参阅 multipath.conf (5) 中的 Shaky paths 检测 部分。

默认值为 no

marginal_path_double_failed_time, marginal_path_err_sample_time, marginal_path_err_rate_threshold, marginal_path_err_recheck_gap_time

如果 marginal_path_double_failed_time,marginal_path_err_rate_threshold, 和 marginal_path_err_recheck_gap_time 设置为大于 0 的整数,则 marginal_path_err_sample_time 设置为大于 120 的整数, 它们通过测试重复失败的路径的 I/O 故障率,使 multipathd 守护进程可以防止 reky 路径。

如果路径在 marginal_path_double_failed_time 属性中设置的值内失败,则 multipathd 守护进程不会立即重新恢复它,当路径检查程序决定备份它时。相反,multipathd 会将读取 I/O 的稳定流添加到 marginal_path_err_sample_time 属性中设置的值(以秒为单位)。如果每千个 I/O 属性的 marginal_path_err_rate_threshold 属性中设定了值,multipathd 会等待 marginal_path_err_recheck_gap_time 秒,然后启动另一个以读取 I/O 测试路径的测试路径。否则,multipathd 会重新声明路径。

如需更多信息,请参阅 multipath.conf (5) 中的 Shaky paths 检测 部分。

默认值为 no

marginal_pathgroups

可能的值包括:

on :当一个边缘路径检测方法决定路径边缘时,系统会重新输入路径并将其放置在单独的 pathgroup 中。只有在首先尝试所有非可能路径组后,此组才会生效。这可以防止在系统仍可使用一些边缘路径时出现 IO 错误。该路径会在配置的时间通过监控后立即返回到常规路径组。

off: delay_*_checks,marginal_path_*, 和 san_path_err_* 属性使系统无法重新生成任何 marginalshaky 路径,直到它们被监控了配置的时间。

fpinmultipathd 守护进程收到 fpin 通知,将路径状态设置为 marginal 和重新组路径,如 on 值所述。

marginal_path_*san_path_err_* 属性被隐式设置为 no

如需更多信息,请参阅 multipath.conf (5) 中的 Shaky paths 检测 部分。

默认值为 no

log_checker_err

如果设置为 once,则multipathd 会在详细程度 2 中记录第一个路径检查程序错误。在恢复设备之前,系统会在详细程度 3 中记录进一步的错误。如果将 log_checker_err 参数设置为 alwaysmultipathd 始终会在详细程度 2 中记录路径检查程序错误。默认值为 always

skip_kpartx

如果设置为 yes,则kpartx 不会自动在该设备中创建分区。这可让您在没有创建分区的情况下创建多路径设备,即使该设备有分区表。这个选项的默认值为 no

max_sectors_kb

使用此选项,您可以在多路径设备首次激活前,将 max_sectors_kb 设备队列参数设置为多路径设备的所有底层路径上的指定的值。每当系统创建新的多路径设备时,设备都会继承路径设备的 max_sectors_kb 值。为多路径设备手动增大这个值或降低路径设备的值可能会导致多路径创建大于路径设备的 I/O 操作。使用 max_sectors_kb 参数是在路径设备之上创建多路径设备前设置这些值的简单方法,并防止传递任何无效的 I/O 操作。如果您没有设置此参数,path devices 驱动程序会自动设置它,多路径设备会从路径设备中继承它。

ghost_delay

此属性设置在仅使用 ghost 路径创建设备后,多路径在将其准备好在 systemd 中使用的秒数。这提供了多路径运行硬件处理程序之前显示的主动路径时间,以便将 ghost 路径切换到活跃路径。

把它设置为 0no 使多路径立即将带有 ghost 路径的设备标记为就绪。

默认值为 no

enable_foreign

此属性启用或禁用外部库。

该值是一个正则表达式。如果外部库的名称与表达式匹配,则会加载。

默认情况下,所有库都启用。但是,默认配置文件还会将此属性设置为"^ $",这将禁用所有外部库。

recheck_wwid

如果设置为 yes,当恢复失败路径时,multipathd 守护进程会重新检查路径 WWID。如果 WWID 中有变化,则路径会从当前多路径设备中删除,并作为新路径再次添加。如果手动重新添加,multipathd 守护进程还会再次检查路径 WWID。

这个选项只适用于带有配置的 SCSI 设备,以使用默认的 uid_attributeID_SERIALsysfs 来获取其 WWID。

默认值为 no

remove_retries

这个选项设定多路径重试删除正在使用的设备的次数。在每次尝试之间,多路径都会不活跃 1 秒。默认值为 0,这意味着多路径不会重试删除。

detect_checker

如果设置为 yes,则多路径会检查设备是否支持 ALUA 或冗余磁盘阵列控制器 (RDAC)。如果设备支持 ALUA,则多路径会为其分配 tur path_checker。如果设备支持 RDAC,multipathd 守护进程会为其分配 rdac path_checker。如果设备不支持 ALUA 或 RDAC,或者 detect_checker 被设置为 nopath_checker 属性会设置路径检查程序。

默认值为 yes

reservation_key

mpathpersist 参数使用此服务操作保留密钥。必须为使用持久保留的所有多路径设备设置它,并且它必须与 PERSISTENT RESERVE OUT 参数类别中的 RESERVATION KEY 字段相同,其中包含应用客户端提供给设备服务器的 8 字节值。如果您在使用 mpathpersist 注册密钥时使用 --param-aptpl 选项,您必须将 :aptpl 附加到保留密钥的末尾。

这个参数也可以设置为 file,这会导致 mpathpersist 自动存储用于在 prkeys 文件中注册多路径设备的 RESERVATION KEY。然后 multipathd 守护进程使用这个密钥在出现时注册额外的路径。当您删除注册时,这会自动从 prkeys 文件中删除 RESERVATION KEY。它默认是 unset。如果需要持久性保留,建议将此属性设置为 file

all_tg_pt

如果此选项在 mpathpersist 注册密钥时设为 yes,它会将注册的密钥从一个主机视为一个目标端口,就像从一个主机移动到所有目标端口一样。这必须设置为 yes,以便在主机中的所有目标端口上自动设置和清除注册密钥,而不是每个主机的每个目标端口成功使用 mpathpersist。默认值为 no

其他资源

  • multipath.conf(5) 手册页