一篇文章快速上手linux系统中存储多路径multipath的配置
本篇文章关键字:linux、多路径、multipath、华为存储、redhat、centos
多路径multipath作用
使用设备映射器多路径(DM Multipath),您可以将服务器节点和存储阵列间的多个 I/O 路径配置为单一设备。这些 I/O 路径是可包含独立电缆、交换机和控制器的物理 SAN 连接。多路径聚合了 I/O 路径并生成由聚合路径组成的新设备。
比如按下图所示:
server主机通过2个hba卡分别接到2台SAN交换机,2台SAN交换机又分别接了存储的控制器1和2.
此时从存储1映射给主机的1个LUN就会识别到多个路径,变成4块磁盘。为了达到高可用冗余的效果,就需要把多个磁盘聚合成一个设备来使用,这样任何一条路径发生故障,都不会影响业务运行。
多路径软件分为Linux操作系统自带的multipath和存储厂商提供的专用多路径软件。
常见的比如华为的UltraPath、EMC的power path、ibm存储的SDDPCM(AIX下特有)、Veritas的StorageFoundation
用存储厂商的好处就是能针对自家的存储做负载链路优化,可以自动屏蔽质量有问题的链路(这点multipathd不具备,经常会出现一条链路有问题,导致存储卡顿的情况)
当然也是有缺点的,就是一台主机只能安装一个厂商的多路径软件,这样的话,你一台服务器要是连多个厂家的存储就会出现问题。
此时multipath的高兼容性就体现出来了,用它可以配置同时连接多个厂家的存储。
我次就遇到了坑,华为的存储多路径软件最新居然只支持到oracle linux 7.6不支持7.9,真是让人大跌眼镜!oracle linux7.9都出了多少年了,居然没有人适配(估计改一下install.sh安装脚本里的版本校验就能安上。。。研发懒得改了),我一定要给他们提需求🤣。
我下面的示例就是用华为的OceanStor Dorado 2000连接Oracle linux7.9为例(这里的device配置和以前的V2/V3/V5完全不一样,因为dorado存储又做了改动)
安装multipath
首先先要检查、安装multipath
--检查是否安装了该软件包
rpm -q device-mapper-multipath
配置YUM安装
--增加本地YUM配置文件
cat >/etc/yum.repos.d/local.repo<<EOF
[local]
name=local
baseurl=file:///media/os
enabled=1
gpgcheck=0
EOF
--手动执行挂载系统ISO文件
mount /mnt/*.iso /medis/os
yum cleanmetadata
yum makecache
--执行安装
yum install device-mapper-multipath
配置multipathd服务
安装之后,需要启用multipath,执行如下命令初始化多路径配置文件。
mpathconf --enable
此时会生成默认的/etc/multipath.conf文件,配置multipath开机启动
systemctl enable multipathd.service
需要注意的是一定要配置多路径忽略本地磁盘,因为系统盘很有可能在下次重启的时候不是sda了,可以参考之前我写的文章《Linux解决multipath多路径磁盘盘符与系统盘盘符重叠问题》。这里我再说一下基本操作,需要先获取系统盘的WWID
====LINUX 5.0====
/sbin/scsi_id -g -u -s /dev/sda
====Linux 6.0====
/sbin/scsi_id -g -u -d /dev/sda
====Linux 7.0/8.0/9.0====
/usr/lib/udev/scsi_id -g -u -d /dev/sda
然后下一步就是要编辑多路径配置文件了,这里先把原来的配置备份,再按我配置好的模板新建一下。
--备份配置
mv /etc/multipath.conf /etc/multipath.conf.bak
--创建新的配置文件
touch /etc/multipath.conf
粘贴内容如下defaults {user_friendly_names yes}
blacklist {wwid <这里写刚才获取的SDA磁盘WWID>}
multipaths {multipath {wwid 3624974510092e319011e66c200000000alias crs01} }
devices {device {vendor "HUAWEI"product "XSG1"path_grouping_policy multibuspath_checker turprio constpath_selector "round-robin 0"failback immediatedev_loss_tmo 30fast_io_fail_tmo 5no_path_retry 6}}
简单说一下multipath.conf的配置文件分为几个部分
-
blacklist
不视为多路径的特定设备列表。
-
defaults
DM 多路径的常规默认设置。
-
devices
各个存储控制器的设置。这些值覆盖了在 配置文件的
defaults
部分中指定的内容。如果您使用默认不支持的存储阵列,您可能需要为阵列创建devices
子部分。 -
multipaths
各个多路径设备特性的设置。这些值会覆盖在配置文件中的
overrides
,devices
, 和defaults
部分指定的值。
具体各个部分的参数我就不详细说了,大家直接看红帽官方文档就行,我就不在这里水篇幅了。我只说我这个配置模板里的重要参数:
1、defaults里标注使用user_friendly_names,否则的话生成的设备文件就是WWID看起来不是很友好,这里对应下面multipahs里的alias标出设备别名
2、blacklist的WWID代表本地磁盘或都你想要屏蔽掉的磁盘WWID
3、multipaths里每个multipath{}代表一个生成的存储设备,按实际情况填写,具体磁盘的WWID可以用multipath -ll找到或者用scsi_id命令获取,这个建议是存储侧LUN的名称和要生成的多路径设备的名称对应,这样既避免用错盘,也方便日后排错。磁盘的WWID也可以在存储的管理界面匹配上LUN的WWID
4、devices里的每个device{}代表一个存储型号。这块可以直接找存储厂家要,不要自己瞎配置,会影响使用效果(比如多路径磁盘用来做oracle asm磁盘,你要不用厂商的配置自己瞎写可能就识别有问题)
最后配置完毕最后重新load multipathd服务配置文件即可,执行systemctl reloal multipathd。最后就是去/dev/mapper下直接使用生成的别名设备就行了。
关于更多配置
关于多路径常用的命令也是建议直接看红帽的官方文档就行,有中文
具体参考:
https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/9/html-single/configuring_device_mapper_multipath/index#ignoring-local-disks-when-generating-multipath-devices_configuring-dm-multipath