DM multipath总结---基于LINUX 7
DM multipath总结
DM Multipath提供的功能:
- 冗余:
DM Multipath 能够在主动/被动配置下提供故障转移。在主动/被动配置下,只有一半的路径在每次进行 I/O 时会被使用。若一条 I/O 路径的任一元素(电缆、交换器或者控制器)出现故障,DM Multipath 就会将它切换到备用路径。 - 改进的性能:
可将 DM Multipath 配置为主动/主动模式, 这会将 I/O 以轮循机制(round-robin)的方式分布到所有的路径中。在有些配置中,DM Multipath 能够检测 I/O 路径的负载,并且重新动态平衡负载。
查看支持存储命令:
默认情况下,DM Multipath 支持大多数常用的支持 DM Multipath的储存阵列。若要了解默认配置值和支持的设备的相关信息,请运行下列指令中的任何一个。
multipathd show config
或
multipath -t
DM MULTIPATH 组件:
组件 | 描述 |
---|---|
dm-multipath kernel 模块 | 为路径和路径组重新指定 I/O 并支持故障转移。 |
mpathconf 工具程序 | 配置并启用 DM Multipath。 |
multipath 指令 | 列出并配置多路径设备。通常使用 /etc/rc.sysinit 启动,还可以在添加块设备时通过 udev 程序启动。 |
multipathd 守护进程 | 监视路径;若路径故障并返回,它可能会启动路径组切换。允许对多路径设备进行交互式修改。若需对 /etc/multipath.conf 文件进行任何修改,都必须重新启动本守护进程。 |
kpartx 命令 | 为设备分区生成设备映射器。对于带 DM Multipath 的基于 DOS 的分区来说,使用此命令很有必要。kpartx 命令包含在它自己的软件包当中,但是 device-mapper-multipath 软件包需要依赖它。 |
为系统配置 DM Multipath 的基本步骤:
- 安装 device-mapper-multipath rpm。
- 使用 mpathconf 命令创建配置文件并启用多路径。若无需编辑该配置文件,可使用此命令启动多路径守护程序。
- 如需编辑该配置文件,请编辑 multipath.conf 配置文件,修改默认值并保存更新的文件。
- 启动多路径守护进程。
DM multipath相关概念:
若没有 DM Multipath,从服务器节点到储存控制器的每一条路径都会被系统视为独立的设备,即使 I/O 路径连接的是相同的服务器节点到相同的储存控制器也是如此。DM Multipath 提供了有逻辑的管理 I/O 路径的方法,即在基础设备顶端生成单一多路径设备。
全球识别符(WWID):
它是一个全球唯一的无法更改的号码。默认情况下会将多路径设备的名称设定为它的 WWID。另外,您还可以在多路径配置文件中设置 user_friendly_names 选项,该选项可将别名设为格式为 mpathn 的节点唯一名称。
mpath-n和dm-n :
新设备被纳入 DM Multipath 控制时,该设备会显示在 /dev 目录的两个不同位置:/dev/mapper/mpathn 和 /dev/dm-n。
/dev/mapper 中的设备是在引导过程中生成的。可使用这些设备访问多路径设备,例如在生成逻辑卷时。
任何 /dev/dm-n 格式的设备都只适用于内部使用,管理员请勿直接使用。
集群中确保所有节点多路径设备名称一致的方法:
如果需要将多路径设备名称在集群中的每个节点上都保持一致,请不要将 user_friendly_names 选项设定为 yes,且不要为那些设备配置别名。默认情况下,如果不将 user_friendly_names 设定为 yes,或者为某个设备配置别名,则设备名称将是该设备的 WWID,它是不会变的。
要系统定义的用户友好名称在集群的所有节点中都一致需要以下步骤:
- 在一台机器中设定所有多路径设备。
- 运行以下命令禁用其它机器上所有的多路径设备:
# service multipathd stop
# multipath -F
- 将第一台机器中的 /etc/multipath/bindings 文件复制到集群中的其它所有机器中。
- 使用以下命令在集群的其他机器中重新 multipathd 守护进程:
# service multipathd start
- 如果添加新设备,需要重复这个过程。同时需要在变更时及时备份和维护/etc/multipath/bindings配置文件。
如果您为某个设备配置别名以便在集群的节点中使其保持一致,您应确定 /etc/multipath.conf 文件对于集群中的每个节点都是一样的,步骤如下:
- 为一台机器上 multipath.conf 文件中的多路径设备配置别名。
- 运行以下命令禁用其它机器上所有的多路径设备:
# service multipathd stop
# multipath -F
- 将第一台机器中的 /etc/multipath.conf 文件复制到集群中的其它所有机器中。
- 使用以下命令在集群的其他机器中重新 multipathd 守护进程:
# service multipathd start
- 如果添加新设备,需要重复这个过程。同时需要在变更时及时备份和维护/etc/multipath/bindings配置文件。
默认multipath没有DM multipath配置文件,使用以下命令生成:
/sbin/mpathconf --enable --find_multipaths y --with_module y --user_friendly_names y --with_multipathd y| | | | |_______________启动multipathd守护进程,非必要按需开启。| | | |_____________________________________设置用户友好名称,非必要按需开启。| | |________________________________________________________加载dm-multipath模块,默认为Y。 | |__________________________________________________________________________设置为发现多路径模式,默认为Y。 |________________________________________________________________________________________开启或关闭控制文件,enable开启,disable关闭。
注:
可使用 mpathconf 程序设置多路径,它可创建多路径配置文件 /etc/multipath.conf。
如果 /etc/multipath.conf 文件已存在,mpathconf 程序将会编辑该文件。
如果 /etc/multipath.conf 文件不存在,mpathconf 程序将使用 /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf 文件作为起始文件。
如果 /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf 文件不存在,则 mpathconf 程序将从头开始创建 /etc/multipath.conf 文件。
如果在启动 multipath 守护进程后发现需要编辑 multipath 配置文件,则必须执行 service multipathd reload 命令方可使更改生效。
multipath命令用法:
multipath -ll ------查看多路径映射情况。 eg:
3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled`- 7:0:0:0 sdf 8:80 active ready running++++++++++++++++++内容注释++++++++++++++++++
对于每个多路径设备:action_if_any: alias (wwid_if_different_from_alias) dm_device_name_if_known vendor,product size=size features='features' hwhandler='hardware_handler' wp=write_permission_if_known
对与每个路径组群:
-+- policy='scheduling_policy' prio=prio_if_known status=path_group_status_if_known
对于每个路径:
`- host:channel:id:lun devnode major:minor dm_status_if_known path_status online_status
选项 | 描述 |
---|---|
-l | 显示来自 sysfs 和设备映射器的当前多路径配置。 |
-ll | 显示来自 sysfs 、设备映射器以及系统中其他所有可用组件的当前多路径配置。 |
-f device | 删除命名的多路径设备。 |
-F | 删除所有不使用的多路经设备。 |
-w device | 从 wwids 文件中删除指定设备的 wwid。 |
-W | 重新设定 wwids 文件使其只包含当前 multipath 设备。 |
-v0 | 初始化时没有输出。 |
-v1 | 则只输出生成或者更新的路径名称。 |
-v2 | 将输出所有检测到的路径、多路径和设备映射。 |
多路径命令详解参考网页链接 |
默认配置文件内容块:
defaults { -----DM Multipath 的常规默认设置。
find_multipaths yes
user_friendly_names yes
}
blacklist { ------不被视为多路径的具体设备列表。
wwid 3600508b1001c5ae72efe1fea025cd2e5
devnode "^hd[a-z]"
devnode "^sd[a-b]"
devnode "^sda"
}
multipaths { ------各个独立多路径设备的特性设置。这些数值覆盖了在配置文件的 defaults 和 devices 部分中指定的数值。
multipath {
wwid 14f504e46494c4552356a657269452d66315a572d65773258
alias VMLHRStorage000
path_grouping_policy multibus
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
}
devices { ------各个存储控制器的设置。这些数值覆盖了在配置文件的 defaults 部分指定的数值。如果要使用不是默认支持的存储阵列,则可能需要为您的阵列创建 devices 子部分。
device {
vendor "VMWARE"
product "VIRTUAL-DISK"
path_grouping_policy multibus
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
path_checker readsector0
path_selector "round-robin 0"
hardware_handler "0"
failback 15
rr_weight priorities
no_path_retry queue
}
}
EG:
defaults {user_friendly_names yespath_grouping_policy multibus
}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
multipath.conf 配置文件的defaults部分中设置的属性。DM Multipath会使用这些值,除非该属性被multipath.conf文件的
devices和multipaths部分所指定的属性覆盖。
multipaths {multipath {wwid 3600508b4000156d70001200000b0000alias yellowpath_grouping_policy multibuspath_selector "round-robin 0"failback manualrr_weight prioritiesno_path_retry 5}multipath {wwid 1DEC_____321816758474alias redrr_weight priorities}
}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
multipath.conf 配置文件multipaths部分中可为每个特定多路径设备设置的属性。这些属性只适用于一个指定的multipath。
这些默认属性可供DM Multipath使用,并且能覆盖multipath.conf文件中defaults和devices部分设置的属性。
device {vendor "COMPAQ "product "MSA1000 "path_grouping_policy multibuspath_checker turrr_weight priorities} +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
multipath.conf配置文件devices部分的每个独立储存设备能设置的属性。DM Multipath会使用这些属性,除非它们被
multipath.conf文件multipaths部分为包含该设备的路径所指定的属性覆盖。devices部分属性会覆盖multipath.conf文件defaults
部分设定的属性。
如需在配置文件的这部分添加没有默认自动配置的设备,您需要设置vendor和product参数。获取相关这两个值可以通过查看/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+++++++++++++++++++++++++++++++附相关自动生成脚本,每次执行需要按需进行调整+++++++++++++++++++++++++++++++++++++++++++++
#/bin/bash
for i in b c d e f g h idoecho "$i vendor is : `cat /sys/block/sd$i/device/vendor`"echo "$i model is : `cat /sys/block/sd$i/device/model`"echo '++++++++++++++++++++++++++'
done
++++++++++++++++++++++完整示例+++++++++++++++++++++++
## Use user friendly names, instead of using WWIDs as names.
defaults { user_friendly_names yes polling_interval 10 find_multipaths yes
}
#blacklist {
# devnode "*"
#}
multipaths { multipath { wwid 14f504e46494c4552594c796765322d5368436d2d5a6b7138 alias mpatha } multipath { wwid 14f504e46494c45524961506456612d4a3062462d6e395764 alias mpathb } multipath { wwid 14f504e46494c45526157663366522d443064552d6c78676f alias mpathc } multipath { wwid 14f504e46494c45524c7170734b6c2d557536702d6e487970 alias mpathd }
}
devices { device { vendor "OPNFILER" product "VIRTUAL-DISK" no_path_retry 5 features "0" hardware_handler "0" path_grouping_policy multibus
# getuid_callout "/sbin/scsi_id -g -u -s /block/%n" path_checker tur path_selector "round-robin 0" failback manual rr_weight uniform rr_min_io 100rr_min_io_rq 100 }
}
参考链接:redhat官网多路径相关文档
red_hat_enterprise_linux-7-dm_multipath-zh-cn.pdf
multipath删除不用映射盘操作
1.备份/etc/multipath.conf、/etc/multipath/binds、wwids
2.将三个配置文件中的失效盘相关配置进行清理。
3.记录multipath -ll结果,盘个数,链路状态。
4.删除失效的映射盘:
multipath -f mpathaf
5.检查是否成功及相关配置文件是否有变化。