一、多路径简介

普通电脑都是将硬盘挂接到主板上。直连式存储DAS直接将存储设施通过SCSI连接到服务器。这两种方式都是将存储于服务器建立一一对应的关系。在现代数据中心的SAN或者IPSAN环境中,主机和存储通过光纤或者以太网进行连接,大多数情况下都会做链路冗余。这样,存储与服务器间的连接就不再是唯一的路径。如果所有路径同时启用,这就会带来服务器访问存储时的路径选择问题。实现冗余IO路径的方式通常有两种:由存储的控制器固件提供的AVT/ADT (Auto Volume Transfer/Auto Disk Transfer) 功能以及由服务器系统提供的多路径(multipath)驱动。

二、原理

Linux系统中,多路径技术Device Mapper技术密不可分。Device MapperLinux 2.6内核中通用的设备映射机制。Device Mapper技术也被用于Linux中逻辑卷管理的映射机制。Device Mapper的内核结构如下图

存储多路径_第1张图片

(图片来源:Linux 内核中的 DeviceMapper 机制[1]

   Device Mapper通过path selectors进行路径选择,并映射为系统所使用的设备,并在/dev/下仍保有全部的物理路径,如/dev/dm-0等。

   每一个multipath设备都有一个WWID(World Wide Identifier),这个id是唯一且不可更改的。默认情况下,multipath设备的名称被设置为它的WWID。也可以在配置文件中使用_friendly_names选项,为设备取一个别名,别名为mpath*,位于/dev/mapper下。

三、应用

当多路径被配置为主动/主动方式时,可以实现动态负载均衡;当采用主动/被动模式时,可以实现冗余链路,从而在I/O路径中发生故障时切换到备用路径。

多路径主要功能就是故障切换或者提高性能。同时,配合存储设施一起,可以实现磁盘虚拟化等。其原理是将同一LUN通过多条链路进行共享,从而实现多条访问路径。

存储多路径_第2张图片

(图片来源:红帽企业版Linux 6 文档[2]


如上图所示,两个RAID控制器到RAID之间使用了多条路径。每个RAID都通过两个控制器接入两个不同的SAN。对服务器而言,在访问任一存储时,都有两条路径可以选择。这样就可以使用多路径技术对两条路径进行调度。

当存储的一个控制器损坏乃至一个SAN损坏时,由于使用多路径技术,服务器扔能通过另一条路径访问全部设备。能够显著降低宕机时间,增加了服务的可持续性。


[1] http://www.ibm.com/developerworks/cn/linux/l-devmapper/

[2] https://access.redhat.com/site/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/html-single/DM_Multipath/index.html