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@localhost ~]# multipath -v2

create: SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1

[size=33 GB][features="0"][hwhandler="0"]

\_ round-robin 0

\_ 0:0:0:0 sda  8:0    [---------

device-mapper ioctl cmd 9 failed: Invalid argument

device-mapper ioctl cmd 14 failed: No such device or address

create: 3600a0b80001327d80000006d43621677

[size=12 GB][features="0"][hwhandler="0"]

\_ round-robin 0

\_ 2:0:0:0 sdb  8:16

\_ 3:0:0:0 sdf  8:80

create: 3600 a0b80001327510000009a436215ec

[size=12 GB][features="0"][hwhandler="0"]

\_ round-robin 0

\_ 2:0:0:1 sdc  8:32

\_ 3:0:0:1 sdg  8:96

create: 3600a0b80001327d800000070436216b3

[size=12 GB][features="0"][hwhandler="0"]

\_ round-robin 0

\_ 2:0:0:2 sdd  8:48

\_ 3:0:0:2 sdh  8:112

create: 3600a0b80001327510000009b4362163e

[size=12 GB][features="0"][hwhandler="0"]

\_ round-robin 0

\_ 2:0:0:3 sde  8:64

\_ 3:0:0:3 sdi  8:128

(2)为了防止DM-Multipath对/dev/sda做映射,编辑/etc/multipath.conf中的devnode_blacklist段。可以使用devnode的方式过滤sda,不过系统中sda的命名不一定是固定的,所以最好使用wwid的方式。从上面的输出中可以看到/dev/sda的wwid为“SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1”,在配置文件添加:

devnode_blacklist{

wwid SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1

}

(3)执行下面的命令使配置生效,并重新打印multipath设备列表。

multipath -F

multipath -v2

6.3在DM-Multipath中增加新的设备类型

DM-Multipath支持大部分的存储阵列。默认的配置,可以查看multipath.conf.default文件。

如果希望添加默认不支持的存储设备,可以在/etc/multipath.conf中添加相应的信息。例如在配置为鉴中添加HP Open-V:

devices  {

device {

vendor "HP"

product "OPEN-V"

getuid_callout "/sbin/scsi_id -g -u -p0x80 -s /block/%n"

}

}

7.DM-Multipath配置文件

7.1概览

DM-Multipath的配置文件分为以下几个部分:

devnode_blacklist

不使用DM-Multipath的设备列表。默认的情况下,所有的设备都在列表中。启用DM-Multipath的时候一般会将devnote_blacklist段注释掉;

defaults

DM-Multipath的默认通用配置;

multipaths

单独配置每一个multipath设备的属性。这些配置会覆盖在defaults段和devices段的配置;

devices

单独配置每一个存储控制器。这些配置会覆盖defaults段的配置。如果使用的存储控制器不被DM-Multipath支持,那么就需要为这种类型的控制器加一个devices subsection。

DM-Multipath确定multipath设备的属性时,会首先使用multipaths段的内容,然后是devices段,最好读取defaults段。

7.2配置blacklist

devnode_blacklist指定了系统在配置multipath设备时不使用的设备,默认情况所有的设备都在这个列表中。注释掉默认的一行之后,可以在列表中加入某一种类型的设备或者某一特定的设备。禁用设备有2种方法:

(1)使用wwid:

可以使用wwid指定特定的设备,如:

blacklist {

wwid 26353900f02796769

}

(2)使用设备名:

如:

devnode_blacklist {

devnode "^sd[a-z]"

}

这一段配置会禁用所有的SCSI磁盘设备。虽然可以使用这种方法禁用单一特定的设备,但是并不建议这样做。因为除非是使用了udev固定了设备的设备名,则设备的名称在每次重启之后是有可能发生变化的。

因为一些设备并不支持DM-Multipath,所以下面列出的设备是默认禁用的:

blacklist {

devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"

devnode "^hd[a-z]"

devnode "^cciss!c[0-9]d[0-9]*"

}

使用Device Mapper Multipath相关推荐

  1. linux日志报multipath,linux device mapper multipath 驱动的路径聚合

    为了尝试一下device mapper的 multipath驱动 ,于是在vmware中添加了两块scsi硬盘.想通过device mapper的multipath driver来管理这两块磁盘(当然 ...

  2. Device mapper multipathing (DM Multipath)

    多路径简介 设备映射多路径简称多路径,使用多路径可以将服务器和存储阵列之间的多个I/O路径映射成一个设备.这些 I/O 路径是物理的 Storage Area Network (SAN) 连接. 使用 ...

  3. Multipath and Device Mapper

    Reference http://en.wikipedia.org/wiki/Multipath_I/O http://en.wikipedia.org/wiki/Device-Mapper http ...

  4. Multipath以及device mapper

    一.什么是多路径 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来 ...

  5. Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  6. DOCKER存储驱动之DEVICE MAPPER简介

    Device Mapper是一个基于kernel的框架,它增强了很多Linux上的高级卷管理技术.Docker的devicemapper驱动在镜像和容器管理上,利用了该框架的超配和快照功能.为了区别, ...

  7. 文末送书啦!| Device Mapper,那些你不知道的Docker核心技术

    戳蓝字"CSDN云计算"关注我们哦! 接触Docker 比较早的同学应该知道,Docker 在最开始只能在Ubuntu和Debian等少数的Linux 发行版上运行,并且在这些发行 ...

  8. docker存储--理解镜像文件系统aufs/device mapper、主机存储共享、容器间存储共享、分布式存储Flocker

    1. docker存储分类 Docker为容器提供了两种存放数据的资源,分别是: 由storage driver管理的镜像层和容器层,即镜像内文件系统. Data Volume,宿主机文件系统 2. ...

  9. device mapper与device-mapper-persistent-data 和 lvm2

    前言 在新主机首次安装 Docker Engine-Community之前,需要设置Docker仓库,之后,您可以从仓库安装和更新 Docker. 设置仓库,需要安装所需的软件包.yum-utils ...

最新文章

  1. 机器学习数学基础:随机事件与随机变量
  2. 非科班的我如何自学Python在一线城市找到一份15k的offer的?
  3. centos6创建用户,设置ssh登录
  4. mysql get lock_MYSQL-GET_LOCK锁
  5. Java高新技术笔记:反射、多线程、泛型、枚举、javaBean、代理
  6. 使用组合索引你得注意了
  7. GARFIELD@10-16-2004
  8. 好玩Python--分析你的微信好友签名
  9. json字符串使用注意问题
  10. 给mac配置adb 路径
  11. ubuntu 16.04 官网版安装 caffe 步骤详解[CPU][紧跟官网,永不踩坑]
  12. NPOI SetColumnHidden隐藏列不起作用的原因
  13. 大学c语言程序设计上机题库,c语言上机题库(c语言程序设计基础题库)
  14. 希尔密码C语言源代码,希尔密码加密解密(示例代码)
  15. 读文献、写论文时,有什么好用的软件或网站推荐?
  16. 负反馈放大电路(附Multisim)
  17. 中段尾段全段什么意思_排气管中段 尾段 全段 和芭蕉 是什么意思
  18. 大家都在学Python,你和别人的差距在哪?
  19. 计算机学院 储昭坤,关于2016-2017学年先进个人、集体初评结果的公示
  20. Python实战——VAE的理论详解及Pytorch实现

热门文章

  1. 数据告诉你,剧版浪姐-《三十而已》凭什么这么戳中观众的心
  2. keil软件仿真看不到波形
  3. 6.12 事件的捕获 10.08
  4. 安徽省计算机二级机试题库,计算机二级机试题库
  5. Java/C/C++标识符命名规则和规范
  6. metaBase报表工具原生查询下钻
  7. form表单-调色器
  8. bootstrap实现轮播图
  9. 文化袁探索专栏——自定义View实现细节
  10. 使用枚举优雅解决过多方法验证的问题,避免使用过多的if