0


多路径软件multipath配置详解

文章目录

多路径软件multipath介绍

在这里插入图片描述

多路径软件描述

使用设备映射器多路径(DM Multipath),您可以将服务器节点和存储阵列间的多个 I/O 路径配置为单一设备。这些 I/O 路径是可包含独立电缆、交换机和控制器的物理 SAN 连接。

多路径聚合了 I/O 路径并生成由聚合路径组成的新设备。

多路径软件的优势

  • DM 可以提供路径冗余:DM 多路径可在主动/被动(active/passive)配置中提供故障切换。在主动/被动配置中,任何时候只有路径的子集用于 I/O。如果 I/O 路径的任何元素(如电缆、交换机或控制器)出现故障,DM 多路径会切换到备用路径。
  • DM还可以提供性能优化:可将 DM 多路径配置为主动/主动模式,其中将 I/O 以轮循(round-robin)方式分布到所有路径中。在某些配置中,DM-Multipath 可以检测 I/O 路径上的加载,并动态重新平衡负载。

multipath包含的组件

组件描述

dm_multipath

内核模块为路径和路径组群重新路由 I/O 并支持故障切换。

mpathconf

工具配置并启用设备映射器多路径。

multipath

命令列出并配置多路径设备。每当添加块设备时,它也由

udev

执行,以确定该设备是否是多路径设备的一部分。

multipathd

守护进程自动创建和删除多路径设备并监控路径;作为路径失败,可以更新多路径设备。允许对多路径设备进行交互式的修改。如果

/etc/multipath.conf

文件有任何更改,请重新加载该服务。

kpartx

命令为设备中的分区创建设备映射器设备。当创建了多路径设备以便在其之上创建分区设备时,该命令将由

udev

自动执行。

kpartx

命令在其自己的软件包中提供,但

device-mapper-multipath

软件包依赖于它。

mpathpersist

在多路径设备中设置

SCSI-3

持久预留。这个命令的工作方式与

sg_persist

对于 SCSI 设备的工作方式相似,它们不是多路径的,但它会处理在多路径设备的所有路径中设置持久性保留的方法。它与

multipathd

协调,以确保在稍后添加的路径上正确设置保留。要使用此功能,必须在

/etc/multipath.conf

文件中定义

reservation_key

属性。否则

multipathd

守护进程将不会检查新发现的路径或恢复的路径。

multipath 命令

multipath

命令用于检测和组合到设备的多个路径。它提供不同的选项来管理您的多路径设备。

下表描述了可能会用到的

multipath

命令的一些选项。
选项描述

-l

显示

sysfs

和设备映射器收集的当前多路径拓扑。

-ll

显示来自

sysfs

、设备映射器以及系统上所有其他可用组件收集的当前多路径拓扑。

-f *device*

删除命名的多路径设备。

-F

删除所有未使用的多路径设备。

-w *device*

wwids

文件中删除指定设备的

wwid

-W

重置

wwids

文件,使其只包含当前的多路径设备。

-r

强制重新载入多路径设备。

显示多路径拓扑

要有效地监控路径,对多路径问题进行故障排除,或者检查多路径配置是否正确,您可以显示多路径拓扑。

流程

  1. 显示多路径设备拓扑:# multipath -llmpatha (3600d0230000000000e13954ed5f89300) dm-4 WINSYS,SF2372size=233G features='1 queue_if_no_path' hwhandler='0' wp=rw`-+- policy='service-time 0' prio=1 status=active `- 6:0:0:0 sdf 8:80 active ready running输出可以被分成三个部分。每个部分都显示以下组的信息:- 多路径设备信息:- mpatha (3600d0230000000000e13954ed5f89300): 别名 (如果与别名不同,则为 wwid)- dm-4: dm 设备名称- WINSYS,SF2372: 供应商,产品- size=233G: 大小- features='1 queue_if_no_path': 功能- hwhandler='0': 硬件处理器- wp=rw: 写权限- 路径组信息:- policy='service-time 0': 调度策略- prio=1 :路径组优先级- status=active: 路径组状态- 路径信息:- 6:0:0:0: host:channel🆔lun- sdf: devnode- 8:80: major:minor 号- active: dm status- ready :路径状态- running :在线状态有关 dm、路径和在线状态的更多信息,请参阅 路径状态。

用于列出、创建或重新载入多路径设备的其他多路径命令也会显示设备拓扑。但是,某些信息可能未知,并在输出中显示为

undef

。这是正常的行为。使用

multipath -ll

命令查看正确的状态。

注意:

在某些情况下,如创建多路径设备,多路径拓扑会显示一个参数,这代表是否采取了任何操作。例如,以下命令输出显示

create:

参数,来表示创建了一个多路径设备:

create: mpatha (3600d0230000000000e13954ed5f89300) undef WINSYS,SF2372
size=233G features='1 queue_if_no_path'hwhandler='0'wp=undef
`-+- policy='service-time 0'prio=1status=undef
`- 6:0:0:0 sdf 8:80 undef ready running

路径状态

multipathd

守护进程会根据

/etc/multipath.conf

文件中定义的轮询间隔定期对路径状态进行更新。就内核而言,

dm

状态与路径状态类似。

dm

状态将保留其当前状态,直到路径检查程序完成为止。

  • 路径状态ready, ghost该路径已启动并准备好进行 I/O。faulty, shaky路径为停用。i/o pending检查程序正积极检查此路径,状态将很快更新。i/o timeout检查程序在超时之前没有返回success/failure。这被认为与 faulty 一样。removed该路径已从系统中删除,很快也将从多路径设备中删除。这被认为与 faulty 一样。wild multipathd 无法运行路径检查程序,因为内部错误或配置问题。这与 faulty 相同,除了多路径会跳过路径上的许多操作。unchecked路径检查程序还没有在此路径上运行,要么是因为它刚刚被发现,还没有一个分配的路径检查程序,要么是路径检查程序遇到了错误。这与 wild 相同。delayed路径检查程序返回路径已启动,但多路径会延迟路径的恢复,因为路径最近失败了多次,且多路径已被配置为在此种情况下延迟路径。这被认为与 faulty 一样。
  • DM 状态Active映射到 readyghost 路径状态。Failed映射到所有其他路径的状态,除了 没有等效的 dm 状态的 i/o pending
  • 在线状态Running设备已启用。Offline设备已禁用。

安装multipath软件

RHEL/CentOS

老版本:
# yum install device-mapper-multipath8之后:
# dnf install device-mapper-multipath

Ubuntu

$ sudo apt-update
$ sudoapt-getinstall multipath-tools multipath-tools-boot

初始化配置文件

第一次安装multipath后,是没有配置文件

/etc/multipath.conf

的,可以手动创建或者从模板拷贝。

RHEL/CentOS

  • 创建一个空配置
# mpathconf --enable
  • 将 DM 多路径配置为使用多路径设备 WWID 作为其名称,而不是 mpath_n_ 用户友好命名方案:
# mpathconf --enable --user_friendly_names n
  • 从模板拷贝配置文件
cp  /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf   /etc/multipath.conf
  • 通过multipath内置的配置库获取默认的配置文件

​ 1.手动创建一个空的

multipath.conf

文件

# touch /etc/multipath.conf

​ 2.使用如下命令获取内置配置

# echo "show config" | multipathd -k >/etc/multipath.conf

重新载入配置

# systemctl reload multipathd.service# systemctl start multipathd.service

验证配置结果

# ls /dev/mapper/
  • 查看默认配置
# multipath -t

Ubuntu

  • 从模板拷贝配置
# cp  /usr/share/doc/multipath-tools/examples   /etc/multipath.conf
  • 从内部配置库获取配置文件
# touch /etc/multipath.conf   --//创建一个空配置# systemctl restart multipath-tools.service  --//重启服务# echo 'show config' | multipathd -k > multipath.conf-live  --//生成内部配置
  • 手动创建一个配置文件,然后编辑内容

重启服务,重新加载配置

# systemctl restart multipath-tools.service

自定义多路径配置

查看默认配置

# multipathd show config# multipath -t

关于配置文件结构描述

在DM的配置文件中可以有以下几类配置项:

  • blacklist不视为多路径的特定设备列表。
  • blacklist_exceptions根据 blacklist 部分的参数,列出其他将被忽略的多路径设备。
  • defaultsDM 多路径的常规默认设置。
  • multipaths各个多路径设备特性的设置。这些值会覆盖在配置文件中的 overrides, devices, 和 defaults 部分指定的值。
  • devices各个存储控制器的设置。这些值覆盖了在 配置文件的 defaults 部分中指定的内容。如果您使用默认不支持的存储阵列,您可能需要为阵列创建 devices 子部分。
  • overrides适用于所有设备的设置。这些值覆盖了在配置文件的 devices 和 defaults 部分中指定的值。

当系统决定多路径设备的属性时,它会按照以下顺序检查

multipath.conf

文件中的单独部分的设置:

  1. multipaths 部分
  2. overrides 部分
  3. devices 部分
  4. defaults 部分

配置文件blacklist段

blacklist中设置不被DM配置的本地磁盘设备,通常有以下几种方式:

  1. 通过设备的WWID设置获取到本地设备,如sda的wwid# multipathd show paths raw format "%d %w" | grep sdasda WDC_WD800JD-75MSA3_WD-WMAM9FU71040编辑/etc/multipath.conf文件如下:blacklist { wwid WDC_WD800JD-75MSA3_WD-WMAM9FU71040}
  2. 通过设备名称设置使用devnode 本地磁盘设备名称设置blacklist。blacklist { devnode "^sd[a-z]"}此方式不太推荐,因为如果某些设备不经udev规则绑定,可能在系统重启后,设备名称会发生变化。
  3. 通过设备类型设置通过特定的设备类型,屏蔽某些特定型号的设备。blacklist { device { vendor "IBM" product "3S42"#DS4200 Product 10} device { vendor "HP" product "*"}}

配置文件defaults段

参见文档: multipath默认参数值.xlsx

配置文件multipaths段

使用

multipath.conf

配置文件的

multipaths

部分设置单个多路径设备的属性。设备映射器(DM)多路径使用这些属性覆盖所有其他配置设置,包括

overrides

部分中的设置。

multipaths

部分仅将

multipath

子部分识别为属性。下表显示了您可以在

multipath

子部分中为每个特定多路径设备设置的属性。
属性描述

wwid

指定多路径设备的 WWID,多路径属性应用到其中。这个参数对于

multipath.conf

文件的这个部分是必需的。

alias

指定多路径设备的符号名称,多路径属性应用到其中。如果您使用

user_friendly_names

,请不要将此值设置为

mpath <n>

。这可能导致与自动分配的用户友好名称冲突,并为您提供不正确的设备节点名称。

  • path_grouping_policy
  • path_selector
  • prio
  • prio_args
  • failback
  • no_path_retry
  • rr_min_io
  • rr_min_io_rq
  • flush_on_last_del
  • features
  • reservation_key
  • user_friendly_names
  • deferred_remove
  • san_path_err_threshold
  • san_path_err_forget_rate
  • san_path_err_recovery_time
  • marginal_path_err_sample_time
  • marginal_path_err_rate_threshold
  • marginal_path_err_recheck_gap_time
  • marginal_path_double_failed_time
  • delay_watch_checks
  • delay_wait_checks
  • skip_kpartx
  • max_sectors_kb
  • ghost_delay

配置文件devices段

使用

multipath.conf

配置文件的

devices

部分为单个存储控制器类型定义设置。本节中设置的值覆盖

defaults

部分中的指定的值。系统根据

vendor

,

product

, 和

revision

关键字标识存储控制器类型。这些关键字是正则表达式,必须与有关特定设备的

sysfs

信息匹配。

devices

部分仅将

device

子部分识别为属性。如果某个设备有多个关键字匹配,则所有匹配条目的属性都将应用到其中。如果在多个匹配的

device

子部分中指定属性,则后续版本的条目优先于任何之前条目。
属性描述vendor指定与设备厂商名称匹配的正则表达式。这是一个必需属性。product指定与设备产品名称匹配的正则表达式。这是一个必需属性。revision指定与设备产品修订匹配的正则表达式。如果缺少 revision 属性,则所有设备修订都匹配。product_blacklist多路径使用此属性创建具有 vendor 属性的设备 blacklist 项,它与这个设备项的 vendor 属性匹配,以及一个 product 属性,它与这个 product_blacklist 属性匹配。vpd_vendor使用 VPD 页缩写来显示特定于供应商的 Vital 产品数据(VPD) 页面信息。multipathd 守护进程使用此信息来收集设备特定信息。目前只支持 hp3par VPD 页面。hardware_handler指定用于特定设备类型的硬件处理器。所有可能的值都依赖于硬件,包括:emc:DGC 类数组的硬件处理程序,如 CLARiiON CX/AX 和 EMC VNX 和 unity 系列。rdac :LSI/Engenio/NetApp RDAC 类的硬件处理器,如 NetApp SANtricity E/EF 系列,以及 IBM DELL SGI STK 和 SUN 的 OEM 阵列。hp_sw: HP/COMPAQ/DEC HSG80 和 MSA/HSV 阵列的硬件处理程序,只使用 Active/Standby 模式。alua:SCSI-3 ALUA 兼容阵列的硬件处理程序.ana: NVMe ANA 兼容阵列的硬件处理程序。默认值为 unset。

Linux 内核,版本 4.3 及更新版本会自动将设备处理程序附加到已知设备。这包括支持 SCSI-3 ALUA 的所有设备。之后,内核不会启用更改处理程序。在这些内核上设置此类设备的 hardware_handler 属性不会起作用。

以下列表中的属性是可选的。如果没有设置它们,则应用

defaults

部分中的默认值。有关这些属性的完整描述,请参阅配置文件默认值。

  • path_grouping_policy
  • uid_attribute
  • getuid_callout
  • path_selector
  • path_checker
  • prio
  • prio_args
  • failback
  • alias_prefix
  • no_path_retry
  • rr_min_io
  • rr_min_io_rq
  • flush_on_last_del
  • features
  • reservation_key
  • user_friendly_names
  • deferred_remove
  • san_path_err_threshold
  • san_path_err_forget_rate
  • san_path_err_recovery_time
  • marginal_path_err_sample_time
  • marginal_path_err_rate_threshold
  • marginal_path_err_recheck_gap_time
  • marginal_path_double_failed_time
  • delay_watch_checks
  • delay_wait_checks
  • skip_kpartx
  • max_sectors_kb
  • ghost_delay
  • all_tg_pt

配置文件voverrides段

overrides

部分可以识别可选的

protocol

子部分,并可包含多个

protocol

子部分。系统使用强制

type

属性将路径设备与

protocol

子匹配。匹配

protocol

子部分中的属性优先于其它

overrides

部分中的属性。如果有多个匹配的

protocol

子部分,则后续条目具有更高的优先级。

protocol

子部分识别以下强制属性:
属性描述type指定与设备厂商名称匹配的正则表达式。这是一个必需属性。scsi:fcp, scsi:spi, scsi:ssa, scsi:sbp, scsi:srp, scsi:iscsi, scsi:sas, scsi:adt, scsi:ata, scsi:unspec, ccw, cciss, nvme, undef此属性不是正则表达式。路径设备协议字符串必须完全匹配。
以下列表中的属性对于

protocol

子部分是可选的。如果没有设置它们,则应用来自

overrides

,

devices

defaults

部分中的默认值。

  • fast_io_fail_tmo
  • dev_loss_tmo
  • eh_deadline

DM multipath管理和排障

多路径常用操作

  1. 查看当前多路径拓扑,显示当前所有可用路径# multipath -ll
  2. 清除所有未使用的路径,然后重新扫描路径# multipath -F && multipath -rr
  3. 显示检测路径,合并路径等过程信息# multipath -v2# multipath -v3
  4. 显示路径# multipathd show paths
  5. 显示multipathd后台服务的PID# multipathd show daemon
  6. 显示当前多路径加载的所有配置# echo 'show config' | multipathd -k

resize多路径设备

  1. 存储侧resize LUN设备
  2. 主机侧执行# multipath -l查看当前多路径拓扑
  3. 主机侧执行# echo 1 > /sys/block/device_name/device/rescan向rescan文件写入1,触发SCSI驱动器重新扫描SCSI设备。
  4. resize 多路径设备# multipathd -k 'resize map mpatha'
  5. resize文件系统# resize2fs /dev/mapper/mpatha

附件-multipath.conf参数项

标签: linux oracle 运维

本文转载自: https://blog.csdn.net/wonderviolet/article/details/140303020
版权归原作者 **农夫酸甜有点咸** 所有, 如有侵权,请联系我们删除。

“多路径软件multipath配置详解”的评论:

还没有评论