ISCSI 数据盘的多路径配置
本文分享自天翼云开发者社区《ISCSI数据盘的多路径配置》,作者:w****n
多路径出现的背景
多路径,就是说,主机到存储可以有多条路径可以选择。主机到存储之间的 IO 由多条路径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O 流量如何分配?其中一条路径坏掉了,如何处理?从在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已。而 multipath 软件正是为了解决这些问题而出现的,multipath 提供了部署 iscsi 设备高可用功能的基础。
多路径实现的功能
(1)故障的切换和恢复
(2)IO 流量的负载均衡
(3)磁盘的虚拟化
multipath 配置文件
multipath 安装完成后,配置文件/etc/multipath.conf 不存在,需要用户自己创建。安装完后会在/usr/share/doc/multipath-tools/examples 目录下生成 multipath.conf.synthetic 模板文件可以将这个文件复制到/etc 目录下并从命名为 multipath.conf。可根据需求自行修改配置文件,在部署 ceph-iscsi 高可用方案时,相应的配置文件为


关于 wwid
多路径软件以块设备提供的 scsi id 为依据识别不同的路径,wwid 中即包含了 scsi id 的信息 每一个磁盘都有一个全球独一无二的编号(wwid),同一磁盘的不同路径其 wwid 相同 。可以通过 dmsetupstatus 查看;另外,可以在/etc/multipath/bindings 中设置 wwid 的别名,如果在 multipa.conf 中也设置了别名,那么 conf 文件中的设置优先级更高。每一块一块 iscsi 磁盘对应一个 wwid,与路径数目无关。
同时,需要在配置文件中修改开启别名功能,并重启 multipathd 服务。

配置成功后,multipath 会自动识别路径,若未识别出,可尝试执行 multipath -v3 ,路径识别成功后可以看到两条状态为 active ready running 的路径,两条路径对应的别名为 ligb-mpth2(策略为 failover,也即主备)

如图所示为配置了两条路径的一个 iscsi 设备,设备为 dm-0,路径有两条,对应/dev 下新增的设备:

配置成功多路径以后,target 中的每一块 disk 都会出现与网关数量相同的/dev 路径,例如:配置了两个 iscsi 网关,并添加了一块 disk,那么 initiator 登陆后会看到/dev 下新增两个设备 sdb 与 sdc,并且用 blkid 查看可以看到两者是有一样的 uuid,并且同时只能 mount 一个设备,如果尝试同时挂载,会提示错误,同时从 dmesg 中可以看出报错信息是由于两者拥有 duplicate 的 uuid。并且两者实际都是与/dev/dm-0 所关联

multipath 配置分析
(1)未配置 multipath
场景:target 配置了两个 iscsi 网关,提供一个 2G 的块设备;initiator 端未配置多路径,在/dev 下多出两个设备 sdb 与 sdc,这两个设备可以进行分别的格式化与 mount,但是不能同时操作,不然会报错(因为实际二者就是同一个 iscsi 设备),挂载成功后其中一个设备显示挂载点,而另一个没有。这种情况下若尝试 multipath -v2,会提示 ignoring map 的错误


(2)已配置 multipath
场景:target 配置了两个 iscsi 网关,提供一个 2G 的块设备;initiator 端配置多路径,在/dev 下多出两个设备 sdb 与 sdc,并且他们对应的是同一个 ligb-mpth2,这两个设备不可以进行格式化与 mount.


若要使用此 iscsi 设备,那么需要直接操作 ligb-mpth-2 这个设备,并且 mount 后可以发现 sdb 与 sdc 都显示了挂载点

查看路径负载


发现 dm-0 上的 io 与 sdc 路径上的 io 相同,说明此时选取的路径为 sdc。(路径组策略为 failover)
将路径组策略设置为 multibus 后再次查看,可以发现 IO 的流量被分散到了两条路径上,并且 IO

同时查看路径状态,发现两条路径均处于 active

清除多路径
退出 iscsi 登录后,multipath 仍然残留在 lsblk 中,需要执行 multipath -F 才能清除
评论