Skip to the content.

设备映射多路径(Device mapper multipathing (DM Multipath)),用于合并服务器和存储阵列之间的多IO路径。

1 DM Multipath

DM Multipath有两个功能:

1.1 存储阵列支持情况

默认情况下,DM-Multipath已经支持了绝大部分的存储阵列,通过下面的命令可以查看。

# 下面两个命令都可以
# multipathd show config
# multipath -t

如果确实没有包含在列表中,需要手动在multipath.conf中增加。有一些存储阵列还需要一些特殊的IO错误和路径交换。

1.2 dm-multipath组成

2 多路径设备

2.1 关于多路径设备的名称问题

每一个多路径设备都会有一个World Wide Identifier (WWID),是唯一的标识该设备的ID。默认情况下系统会使用WWID作为设备的名称。 该多路径设备在系统中的每条路径都会显示为一个设备,如sdb,sdc … 这些设备不能直接使用,同一个设备的不同路径的WWID是一致的; 使用user_friendly_names配置选项,可以让名字更加具有可读性和友好性。当配置为yes,路径聚合后系统中显示的设备名称为:mpathn,其中n为从a开始的字母,超过26个的话,会显示如mpathaampathab; 多路径设备聚合后,会在两个不同地方显示设备/dev/mapper/mpathn /dev/dm-n,其中mpathn可以为管理员使所用,dm-n为系统内部调用不建议管理员直接使用它。 也可以自定义多路径设备的名称,可以使用alias;

2.2 集群中的多路径设备

要求集群中每个节点如果使用user_friendly_names配置选项,每个主机识别的多路径设备名称可能不一致。 保持一致的多路径名称有下面几个办法:

# 1,在一个节点中设置好多路径设备
# 2,停止其他节点多路径服务
systemctl stop multipathd.service
multipath -F
# 3,复制/etc/multipath/bindings文件到其他节点
# 4,启动multipathd服务
# 1,在一个节点中设置好多路径设备
# 2,停止其他节点多路径服务
systemctl stop multipathd.service
multipath -F
# 3,复制/etc/multipath.conf文件到其他节点
# 4,启动multipathd服务

3 设置DM-Multipath

3.1 使用mpathconf命令设置

mpathconf命令可以创建或修改/etc/multipath.conf配置文件,如果当前系统不存在/etc/multipath.conf,就会从/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf复制一份;

# 不修改配置文件,创建一个默认的配置文件
mpathconf --enable --with_multipathd y  # 并启动multipathd服务
# mpathconf -h
usage: /usr/sbin/mpathconf <command>

Commands:
Enable: --enable
Disable: --disable
Only allow certain wwids (instead of enable): --allow <WWID>  # 允许特定的wwid
Set user_friendly_names (Default y): --user_friendly_names <y|n>  # 使用友好的名称,会被写到/etc/multipath.conf中
Set find_multipaths (Default y): --find_multipaths <y|n>  # 忽略本地设备,会被写到/etc/multipath.conf中
Load the dm-multipath modules on enable (Default y): --with_module <y|n> # 加载内核,手动加载命令modprobe dm-multipath
start/stop/reload multipathd (Default n): --with_multipathd <y|n>  # 启动multipath服务,默认不启动
select output file (Default /etc/multipath.conf): --outfile <FILE>  # 配置问价路径

# 如果需要不需要user_friendly_names参数
mpathconf --enable --user_friendly_names n
# 如果需要修改配置文件的情况下
# 1,创建配置文件
mpathconf --enable
# 2,修改配置文件并保存
vi /etc/multipath.conf
# 3,重启服务

3.2 忽略本地设备

find_multipaths参数默认会被配置为yes,所以默认情况下,本地设备是不会被multipath来管理的。 如果该参数被配置为no,那么使用下面命令可以查看未被multipath管理的本地设备

multipath -v2 -d 

将查询到wwid写入黑名单(/etc/multipath.conf文件中的blacklist)中,就可以手动实现忽略本地设备

blacklist {
    wwid 36xxxx0072xxxx428BX1xxxx
}

如果需要在initramfs 中使用multipath设备,那么需要执行如下命令:

# dracut --force --add multipath --include /etc/multipath

4 常见安装和配置步骤

4.1 使用默认配置

# 安装 & 配置 & 启服务
yum -y install device-mapper-multipath 
mpathconf --enable --with_multipathd y

4.2 使用alias

其他的步骤没啥区别,就是修改/etc/multipath.conf

# cat /etc/multipath.conf |grep -v -E "^$|^#"

defaults {
    user_friendly_names yes
    find_multipaths yes
}

multipaths {
    multipath {
        wwid WWID_of_swap_device
        alias dev_alias
    }
}

blacklist {
}

参考