multipath 多路径冗余I/O(Multipath I/O)是指服务器通过多条物理路径连接到块存储设备。多路径冗余I/O也可以实现I/O的负载均衡,提高系统性能,但主要还是一种容错机制。
服务器和存储通过SAN 光纤环境连接光纤交换机,服务器到存储的间的连接可以有“1条或多条SAN 光纤线缆,通过多对多的连接模式形成存储多路径,主机到存储之间的IO由多条路径可以选择
multipath 多路径解决问题
1、每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流
量如何分配?
2、其中一条路径坏掉了,如何处理?
3、在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但
实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带
来了困惑。
多路径软件就是为了解决上面的问题应运而生的。多路径的主要功能就是和存储设备一起配合实现如下功
能:
1、I/O 流量分配:
2、多路径冗余、
3、磁盘的虚拟化
multipath 多路径软件的组成
multipath 多路径的软件包列表:
device-mapper-multipath-0.4.9-87.el6.x86_64
device-mapper-event-libs-1.02.95-2.el6.x86_64
device-mapper-persistent-data-0.3.2-1.el6.x86_64
device-mapper-multipath-libs-0.4.9-87.el6.x86_64
device-mapper-1.02.95-2.el6.x86_64
device-mapper-event-1.02.95-2.el6.x86_64
device-mapper-libs-1.02.95-2.el6.x86_64
依赖包列表
libaio-0.8.8-7.1el6x86_64.rpm
libaio-0.3.107-10.e16.x86_64.rpm
libaio-devel-0.3.107-10.e16.x86_64.rpm
device-mapper-multipath
提供 multipathd 和 multipath 等工具和f 等配置文件。这些工具通过device mapper 的ioctr的接口创建和配置multipath设备(调用device-mapper的用户空间库。创建的多路径设备会在/dev/mapper中。
device-mapper
device-mapper包括两大部分:
1、内核部分:
内核部分由device-mapper 核心(multipath.ko)和一些target drive(dm-multipath.ko)构成。
dm-mod.ko 是实现multipath 的基础,dm-multipath 其实是dm 的一个target驱动。
核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。同时,在核心部分,提供了一个接口,用户通过ioctr可和内核部
分通信,以指导内核驱动的行为,比如如何创建mappered device,这些device的属性等。
2、用户空间部分:
包括device-mapper 这个包。其中包括dmsetup 工具和一些帮助创建和配置mappered device 的库。这些库主要抽象,封装了与ioctr 通信的接口,以便方便创建和配置mappered device。
device-mapper-multipath 的程序中就需要调用这些库;
scsi_id scsi 唯一标识符
centos安装vim命令⚫其包含在udev 程序包中,可以在f中配置该程序来获取scsi 设备的序号。
⚫通过序号,便可以判断多个路径对应了同一设备。这个是多路径实现的关键。
⚫scsi_id 是通过sg 驱动,向设备发送EVPD page80 或page83 的inquery 命令来查询scsi 设备的标识。但一些设备并不支持EVPD 的
inquery命令,所以他们无法被用来生成multipath 设备。
⚫但可以改写scsi_id,为不能提供scsi 设备标识的设备虚拟一个标识符,并输出到标准输出。
⚫multipath 程序在创建multipath 设备时,会调用scsi_id,从其标准输出中获得该设备的scsi id。
⚫在改写时,需要修改scsi_id 程序的返回值为0。因为在multipath 程序中,会检查该直来确定scsi id 是否已经成功得到。
wwid
⚫在Linux系统中,如果添加了新的SCSI磁盘或者映射SAN 存储LUN 操作,重启操作系统之后会出现磁盘标识符(sd*)错乱的情况。
⚫根据SCSI标准,每个SCSI磁盘都有一个WWID,类似于网卡的MAC地址,要求是独一无二。通过WWID标示SCSI磁盘就可以保证磁盘路径永久不变,
Linux系统上/dev/disk/by-id目录包含每个SCSI磁盘WWID访问路径。例如之前添加的SAN存储LUN的磁盘标识符为/dev/sdd,重启之后发现变成/dev/sdh,特别是oracle RAC环境下我们是不希望出现这样的情况的。解决这个问题之前,需要先搞清楚Linux系统中的wwid 和uuid 号。
实例配置multipath 多路径冗余
获取FC光纤接口的WWN 号并记录
获取FC 光纤存储的WWN 号告知存储管理员,然后存储管理员将划分好的LUN 映射给指定的WWN 号FC 光纤接口
获取存储分配磁盘wwid
根据SCSI标准,每个SCSI磁盘都有一个WWID,类似于网卡的MAC地址,要求是独一无二。
通过WWID标示SCSI磁盘就可以保证磁盘路径永久不变,Linux系统上/dev/disk/by-id目录包含每个SCSI磁盘WWID访问路径。
安装multipath 相关软件包
yum install libaio libaio-devel device-mapper-multipath device-mapper-event-libs device-mapper-persistent-data device-mapper-multipath-libs device-mapper device-mapper-event device-mapper-libs
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论