列入黑名单
可以使用 multipath.conf 的 blacklist {} 部分在配置文件中将设备列入黑名单。
如果使用通配符列入黑名单,则可以使用 blacklist_exceptions {} 部分将单个设备从黑名单中排除。
可以使用设备节点或者 WWID 将设备列入黑名单。
以下示例显示了两者的示例:
blacklist { devnode "^cciss" wwid 1234567890abcde }
要确定磁盘设备的 WWID,请使用 scsi_id 实用程序。
/usr/lib/udev/scsi_id -g -u /dev/sdN 360014053bd9ea2a35914e39a556051cf
默认值
可以在 multipath.conf 的 defaults {} 部分设置所有多路径的默认值。
所有内置默认值的完整列表可以在文件 /usr/share/doc/devicemapper-multipath-*/multipath.conf.defaults 中找到。
一些最有趣的设置是:
- path_selector :确定优先级组内的哪条路径用于下一个 I/O 的算法。 “round-robin 0”的默认值在组中的所有路径上分配 I/O。在切换到下一个路径之前使用一个路径发送的请求数量由 rr_min_io_rq 设置决定。替代方案是“队列长度 0”,它将下一个 I/O 请求发送到具有最短未完成请求队列的路径,以及“服务时间 0”,它将下一个 1/0 请求发送到路径预计服务时间最短。
- path_grouping_policy :此设置定义了如何将多个路径组合成优先级组。在默认的故障转移中,每条路径都将被放入一个单独的组中。另一方面,使用多总线策略,所有可能的路径都聚合到一个组中。在配置多路径设备以使用多总线策略之前,请确保存储控制器支持双活连接。
- path_checker :此设置确定 multipathd 守护程序将如何确定路径是否健康。除了directio 和readsector0 的硬件独立选项之外,还有许多硬件独立的检查器。尽管此选项的默认值是 directio,但它通常会在设备 {} 部分中指定的默认设备之一中被覆盖。
- features :此选项指定要启用的多路径功能。语法是 num list 的形式,其中 num 表示启用的功能数量, list 表示启用的功能列表。两个可用功能是 queue_if_no_path 和 no_partitions 。
- user_friendly_names :此设置确定是否将没有定义别名的多路径命名为 mpathN(当设置为 yes 时),或者是否以它们的 WWID 命名。
devices {} 部分
在 devices {} 部分,可以覆盖特定设备的默认值。
在 devices {} 部分中,有单独的 device {} 小节,详细说明了特定设备的设置。
大多数常见的存储硬件已经在多路径守护程序的内置默认值中定义了自己的部分。
如果(尚未)列出硬件,则可以手动添加硬件部分。
以下是一个不存在的存储硬件的示例定义。
设备本身是使用供应商、产品和版本的组合来选择的。
devices { device { vendor "MegaHyperSuperStorage" product "BAS" revision "513/B" features "1 queue_if_no_path" path_grouping_policy multibus path_checker tur } }
在前面的示例中, features 行指示即使当前没有可用路径,也将接受新的 I/O 请求并排队。
多路径 {} 部分
在 multipaths {} 部分,可以为特定多路径定义覆盖。
这可用于为特定多路径设置不同的 path_grouping 策略。
multipaths {} 部分的其他常见用途之一是为多路径定义别名。
设置别名时。
此多路径的 /dev/mapper/ 中设备节点的名称将基于别名,从而更容易区分不同的多路径。
例如,以下配置将为 WWID 为“1234567890abcdef”的多路径设置一个 clustertorage 别名,以及 queue-length 的 path_selector。
multipaths { multipath { wwid "1234567890abcdef" alias "clusterstorage" path_selector "queue-length 0" } }
什么是多路径?
多路径允许将服务器和存储数组之间的多个物理连接组合到一个虚拟设备中。
这样做可以为存储提供更具弹性的连接(下行路径不会妨碍连接),或者聚合存储带宽以提高性能。
例如,下图中的服务器有两个 HBA,每个 HBA 都连接到单独的光纤通道交换机,而后者又连接到存储数组上的单独控制器。
Red Hat Enterprise Linux 7 支持使用 dm-multipath 子系统的多路径。
这使用内核设备映射器系统生成虚拟设备,由 multipathd 守护程序和 multipath 命令行工具管理。
必要的二进制文件、守护进程和内核模块在 device-mappermultipath 包中可用。
安装、配置和启动 device-mapper-multipath 后,将在两个不同位置创建多路径设备的设备节点。
出于管理目的,多路径设备在 /dev/mapper 下创建。
如果选择了用户友好的名称,它们可以命名为 mpathN[pM],或者它们可以以存储设备的全球 ID (WWID) 命名。
管理员还可以为多路径设备设置自定义名称。
这些自定义名称是使用多路径配置文件的多路径部分中的别名选项建立的。
多路径设备也在 /dev 下以 /dev/dm-N 的形式创建,以匹配在 /dev/mapper 下创建的设备。
这些设备严格供系统内部使用,因此不应直接用于管理目的。
要创建多路径设备,将根据 /etc/multipath.conf 配置文件中的设置将不同的路径组合成组。
通常一次只有一个组处于活动状态,但一个组可以包含多个路径。
当一个组出现故障时,多路径守护进程会将存储流量切换到另一个组。
添加分区
要在多路径设备上添加分区,请使用以下步骤:
- 使用分区编辑器在多路径设备上创建分区,例如 fdisk /dev/mapper/mpath0 。
- 运行 partprobe 命令以更新内核对所有设备(包括整理到多路径的设备)上的分区表的视图。
- 在多路径设备上运行命令 kpartx -a 为新创建的分区创建设备映射器设备。
配置多路径
要配置多路径,首先确保安装了 device-mapper-multipath 包。
# yum -y install device-mapper-multipath
一旦安装了 device-mapper-multipath 包,就必须为多路径守护进程创建一个配置文件,/etc/multipath.conf。
创建此文件的最简单方法是使用 mpathconf 实用程序。
如果已经有一个名为 /etc/multipath.conf 的文件,则 mpathconf 命令将编辑该文件。
如果不存在这样的文件, mpathconf 将从 /usr/share/doc/device-mapper-multipath-*/multipath.conf 复制默认配置。
如果该文件不存在,mpathconf 将从头开始创建一个新的配置文件。
要创建默认配置,然后启动并启用 multipathd 守护程序,请使用以下命令:
# mpathconf --enable --with_multipathd y --with_chkconfig y
如果在启动 multipathd 守护程序之前需要微调多路径配置,请使用带有 -enable 选项的 mpathconf 命令:
# mpathconf --enable
编辑配置文件后,使用 systemctl 命令正常启用和启动 multipathd 守护进程。
删除多路径
删除多路径的所有路径后,通过运行命令 multipath -f [device] 删除多路径设备。
如果 multipathd 守护进程已停止并且多路径设备仍有设备节点,请通过运行 multipath -F 刷新所有多路径设备。
当测试不同的配置并看到旧配置的残余物时,这会很有用。
multipath.conf 配置文件
multipath.conf 配置文件由五个部分组成:
multipath.conf 部分 | 描述 |
---|---|
blacklist'{} | 本节定义应从多路径拓扑发现中排除哪些设备。 |
blacklist_exceptions {} | 本部分定义了哪些设备应包含在多路径拓扑发现中,尽管它们已列在黑名单部分中。 |
defaults {} | 此部分定义要用于所有多路径的默认设置,除非在 devices {} 或者 multipaths {} 部分中明确覆盖。 |
devices {} | 此部分包含针对特定类型设备的默认 {} 部分的覆盖,除非从多路径 {} 部分覆盖。 设备根据其供应商、产品和修订版关键字(与 sysfs 中的信息匹配的正则表达式)进行标识。 |
multipaths {} | 本节包含特定多路径的设置。 此部分会覆盖默认 {} 和设备 {} 部分中定义的内容。 多路径是根据它们的 WWID(使用 getuid_callout 函数获得)来识别的。 |
记住覆盖的简单方法是: multipaths > devices > defaults 。