DM多路径存储

简介:

什么是 multipath?
普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN 环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO 由多条路径可以选择。既 然,每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O 流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来 看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。

多路径的主要功能就是和存储设备一起配合实现如下功能:

1) 故障的切换和恢复

2) IO 流量的负载均衡

3) 磁盘的虚拟化

DM 多路径存储
系统环境: RHEL6 x86_64 small install selinux and iptables disabled
主机规划:

image

可使用 DM-Multipath 提供:
•冗余
DM-Multipath 可在主动/被动配置中提供出错冗余。在主动/被动配置中,只有一半的路径在每次 I/O 时都使用。如果 I/O 路径的任意元素(电缆、交换机或者控制器)出现故障,就会将 DM-Multipath 切换到备用路径。
•改进性能
可将 DM-Multipath 配置为主动/主动模式,其中将 I/O 以轮叫调度算法方式分布到所有路径中。在有些配置中,DM-Multipath 可在 I/O 路径中检测负载并动态重新平衡负载。
DM-Multipath 组件

image

  1. 软件安装
station133:
yum install scsi-target-utils -y
station28:
yum install Iscsi-initiator-utils ccs device-mapper device-mapper-multipath -y
  1. ISCSI 配置
station133:
service tgtd start
tgtadm --lld iscsi --mode target --op new --tid 1 -T storage1
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/xvdb1
tgtadm --lld iscsi --mode target --op bind --tid 1 -I ALL
station28:
service iscsid start
iscsiadm -m discovery -t st -p 192.168.0.133
iscsiadm -m node -T storage1 -p 192.168.0.133 -l
iscsiadm -m discovery -t st -p 192.168.0.132
iscsiadm -m node -T storage1 -p 192.168.0.132 -l
  1. DM 配置
    配置文件模板:
#/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
你也可以使用: “mpathconf --enable ”指令生成主配置文件,并且会自动启用 multipathd.
vi /etc/multipath.conf
blacklist {
devnode "vda"    #禁止使用/dev/vda 设备

}
defaults {
user_friendly_names    yes
udev_dir                        /dev            #生成 udev 设备节点的目录,默认值为 /dev。

path_grouping_policy    failover     #failover 为主备模式; multibus 为负载均衡模式
failback         immediate #指定立即恢复到包含活跃路径的最高级别路径组群                                              
no_path_retry         fail        #这个属性的数字值指定系统在禁用队列前应该试图使用失败的路径的次数.fail 值表明立即失败,无需排队。
}
#service multipathd start

当将 user_friendly_names 配置设定为 yes,会将该多路径设备的名称设定为 mpathn。
当在 DM-Multipath 中添加新设备时,这些新设备会位于 /dev 目录的两个不同位置:

/dev/mapper/mpathn 和 /dev/dm-n。
•/dev/mapper 中的设备是在引导过程中生成的。可使用这些设备访问多路径设备,例如在生成逻辑卷时。
•所有 /dev/dm-n 格式的设备都只能是作为内部使用,请不要使用它们。
# multipath -ll
mpatha (1IET00010001) dm-0 IET,VIRTUAL-DISK
size=2.0G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 2:0:0:1 sda 8:0 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 3:0:0:1 sdb 8:16 active ready running

注:可以看到 sda 和 sdb 两条链路复合成一条链路 mpatha,此为 Failover(主备)情况,当你对 mpatha 设备读写时,处于 active 状态的 sda 链路有数据流,而处于 enabled 状态的sdb 链路无数据流;当 sda 链路出现问题时,才会切换到 sdb 链路上。

  1. 测试
用 dd 往磁盘读写数据,然后用 iostat 观察各通道的流量和状态,以判断 Failover 或负载均衡方式是否正常:
# dd if=/dev/zero of=/dev/mapper/mpatha
# iostat -k 2
如果成功你会发现,当断开链路 sda 时,等待片刻,会自动切换到链路 sdb 上,并不会造成写入失败。
手动切换模式:(如果需要永久生效直接修改 multipath.conf,并重新 reload)
# multipath -F        # 刷新所有的多路径设备映射
# multipath -p multibus -v0 # 切换成负载均衡模式
# multipath -ll
mpatha (1IET
00010001) dm-0 IET,VIRTUAL-DISK
size=2.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 2:0:0:1 sda 8:0 active ready running
`- 3:0:0:1 sdb 8:16 active ready running

如果成功你会发现它会根据轮叫方式调度链路 sda 和 sdb,从而实现负载均衡。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
在采用asmlib时,确认物理磁盘的方法
在采用asmlib时,确认物理磁盘的方法
94 0
|
固态存储 内存技术
SCSI命令下发方式<续>:对NVMe硬盘如何实现SCSI命令转换?
我们前面有对SATA硬盘下发SCSI命令,其实对NVMe硬盘下发SCSI的方式大同小异。下面我们就来试一下,这里我们用到的SCSI命令是READ CAPACITY。
|
存储 关系型数据库 MySQL