Device Mapper Multipath(DM-Multipath)

 
Device Mapper Multipath(DM-Multipath)可以将服务器节点和存储阵列之间的多条I/O链路配置为一个单独的设备。这些I/O链路是由不同的线缆、交换机、控制器组成的SAN物理链路。Multipath将这些链路聚合在一起,生成一个单独的新的设备。

 1.DM-Multipath概览:

(1)数据冗余

DM-Multipath可以实现在active/passive模式下的灾难转移。在active/passive模式下,只有一半的链路在工作,如果链路上的某一部分(线缆、交换机、控制器)出现故障,DM-Multipath就会切换到另一半链路上。

(2)提高性能

DM-Multipath也可以配置为active/active模式,从而I/O任务以round-robin的方式分布到所有的链路上去。通过配置,DM-Multipath还可以检测链路上的负载情况,动态地进行负载均衡。

 

DM-Multipath的存储阵列的支持情况可以查看multipath.conf.default。对于支持列表中没有的存储,可以在multipath的配置文件multipath.conf中自行添加。

2.DM-Multipath的组成:

(1)dm-multipath内核模块实现I/O重定向、支持failover以及链路的聚合

(2)mutilpath命令查看和配置multipath设备。它一般由/etc/rc.sysinit启动,也会在系统发现新的块设备时由udev启动,或者由initramfs在系统启动时执行。

(3)multipathd后台进程监控链路。当链路失效或者恢复时,它会发起链路组的切换。它实现了对multipath设备的动态修改。不过multipath.conf修改后,它需要重新启动。

(4)kpartx命令根据设备上分区表创建device mapper设备。当需要在DM-MP设备上使用基于DOS的分区时,这个命令是必须。

不使用DM-Multipath,每一条从服务器到存储的链路都被系统识别为一个单独的设备。DM-Multipath可以在这些底层的设备之上创建一个单一的multipath设备,实现对这些链路的组织和管理。

3.Multipath设备的标志符

 

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

例如,一台服务器节点有2块HBA卡,通过一台没有划分zone的交换机,连接到2个磁盘阵列控制器,服务器系统中会发现4个设备:/dev/sda、/dev/sdb、/dev/sdc、/dev/sdd。DM-Multipath会按照配置文件在这些底层设备上创建一个拥有一个唯一WWID号的multipath设备。如果配置文件中_friendly_names选项被设置为yes,则这个multipath设备会被命名为mpath[n]。

 

当新的设备被DM-Multipath接管之后,新的设备文件会在/dev/目录下3个不同的地方出现:/dev/mapper/mpath[n]、/dev/mpath/mpath[n]、/dev/dm-[n]。

(1)/dev/mapper/目录下的文件,是早在系统启动的过程中就创建了。访问multipath设备时就使用这些文件,例如创建lvm;

(2)/dev/mpath/目录下的文件,是为了可以方便的在同一个目录下查看所有的multipath设备。这个文件由udev创建。如果系统在启动过程中需要访问multipath设备,不要使用这些文件。不用在这些设备文件上建立lvm;

(3)/dev/dm-[n]只为了内部使用目的,永远不要对这些文件进行操作。

4.统一multipath设备的命名

当配置文件中_friendly_names被设置为yes,在该服务器节点上这个设备名是唯一而且确定的,但是不能保证在使用这些链路的其它服务器节点上的multipath设备的名称能够相互保持一致。如果只是建立lvm,那么这个问题不会有什么影响。但是如果希望不同服务器节点上的multipath设备的名称能够统一,必须使用下面其中一种方法:

(1)在配置文件中的multipaths段使用alias选项为设备设置别名,并在不同的服务器上保持一致;

(2)如果希望不同服务器上multipath设备的user-friendly名称保持一致,首先在一台服务器上建立所有multipath设备,然后把bindings文件拷贝到所有其它系统统一命名的服务器。binds文件的位置是/var/lib/multipath/bindings。在配置文件可以使用bindings_file参数修改bindings文件的位置。

5.Multipath设备上建立lv

创建multipath设备之后,可以像使用物理设备文件一样在multipath设备上建立pv。例如,假定multipath设备为/dev/mapper/mpath0,使用

       pvscreate /dev/mapper/mpath0

即可将mpath0建立为物理卷。同样可以继续建立卷族和逻辑卷。

当在配置为active/passive模式的multipath设备上建立逻辑卷时,需要在lvm的配置文件lvm.conf中增加过滤器,将multipath设备下层的设备添加到过滤列表中。这时因为DM-Multipath会自动切换数据链路,当遇到failover和failback的情况时,如果下层的设备没有在配置文件中过滤,lvm会扫描这些passive状态下的数据链路。Passive状态的链路改变到active状态需要执行一些命令,所以lvm就会在这个时候报错。

为了过滤所有的SCSI设备,在lvm.conf中的devices段,添加下面的配置:

filter = [ "r/disk/", "r/sd.*/", "a/.*/"

6.部署DM-Multipath

       6.1开始部署

       (1)编辑/etc/multipath.conf,注释掉下面几行:

              devnode_blacklist {

                      devnode "*"

              }

       (2)multipath的默认配置已经集成在系统之中,不需要在/etc/multipath.conf中重新配置。

       path_grouping_policy的默认值为failover。在原始配置中default段设置了multipath设备的默认名称是mpath[n]的形式,如果没有这一段配置(即_friendly_names=yes),设备的默认名称是它的WWID号。

       (3)保存配置文件并退出。

       (4)执行下列命令:

              modprobe dm-multipath

              sevice multipathd start

              multipath -v2

       注:multipath -v2会打印出已经聚合的数据链路。

       (5)使用 chkconfig multipathd on,让multipath服务开机自动启动。

 

       6.2排除本地scsi磁盘

       很多系统都安装有本地scsi磁盘,DM-Multipath是不建议在这些磁盘上使用的。可以按照下面的步骤取消对本地scsi磁盘的映射。

       (1)使用 multipath -v2 确认本地磁盘的信息。如下面的示例(sda为本地scsi磁盘):

       [root@localh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值