系统环境: rhel6 x86_64 iptables and selinux disabled
主机:
主机 |
网卡 |
软件 |
server21.example.com |
eth0:192.168.122.121 eth0:192.168.122.122 |
scsi-target-utils |
Server73.example.com |
eth0:192.168.122.173 |
Iscsi-initiator-utils device-mapper device-mapper-multipath |
可使用 DM-Multipath 提供:
•冗余
DM-Multipath 可在主动/被动配置中提供出错冗余。在主动/被动配置中,只有一半的路径在每 次 I/O 时都使用。如果 I/O 路径的任意元素(电缆、交换机或者控制器)出现故障,就会将 DM- Multipath 切换到备用路径。
•改进性能
可将 DM-Multipath 配置为主动/主动模式,其中将 I/O 以轮叫调度算法方式分布到所有路径中。 在有些配置中,DM-Multipath 可在 I/O 路径中检测负载并动态重新平衡负载。
带一个RAID设备的主动/主动多路经配置
带一个RAID设备的主动/被动多路经配置
带两个RAID设备的主动/被动多路经配置
DM-Multipath组件
1.安装软件
以下步骤在server21上实施:
[root@server21 ~]# yum install scsi-target-utils.x86_64 -y
以下步骤在server73上实施:
[root@server73 ~]# yum install iscsi-initiator-utils.x86_64 -y
[root@server73 ~]# yum install device-mapper device-mapper-multipath sysstat-9.0.4-20.el6.x86_64 -y
2.配置iscsi
以下步骤在server21上实施:
添加一块虚拟硬盘(/dev/vda)
[root@server21 ~]# fdisk -cu /dev/vda
划分分区,文件类型为Linux LVM,便于拉伸.
[root@server21 ~]# pvcreate /dev/vda1
[root@server21 ~]# vgcreate koenvg /dev/vda1
[root@server21 ~]# lvcreate -L 2G -n koenlv koenvg
[root@server21 ~]# vim /etc/tgt/targets.conf
<target iqn.2013-07.com.example:server.target1>
backing-store /dev/mapper/koenvg-koenlv
initiator-address 192.168.122.173
</target>
[root@server21 ~]# /etc/init.d/tgtd start
[root@server21 ~]# tgtadm --lld iscsi --op show --mode target
出现类似如上结果说明配置成功.
以下步骤在server73上实施:
[root@server73 ~]# iscsiadm -m discovery -t st -p 192.168.122.121
[root@server73 ~]# iscsiadm -m node -T iqn.2013-07.com.example:server.target1 -p 192.168.122.121 -l
[root@server73 ~]# iscsiadm -m discovery -t st -p 192.168.122.122
[root@server73 ~]# iscsiadm -m node -Tiqn.2013-07.com.example:server.target1 -p 192.168.122.122 -l
执行fdisk -l查看若若出两块设备说明成功.
3.配置DM
以下步骤在server73上实施:
配置文件模板:
#/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
也可以使用:“mpathconf --enable”指令生成主配置文件,并且会自动启用 multipathd.
[root@server73 ~]# vim /etc/multipath.conf
blacklist {
devnode "sda" #禁止使用/dev/sda设备(注:不同机子不同,此设备为除去iscsi登录的设备的其他设备)
}
defaults {
user_friendly_names yes
udev_dir /dev #生成udev设备节点的目录,默认值为/dev
path_grouping_policy failover #failover为主备模式; multibus为负载均衡模式
failback immediate #指定立即恢复到包含活跃路径的最高级别路径组群
no_path_retry fail #这个属性的数字值指定系统在禁用队列前应该试图使用失败的路径的次数,fail值表明立即失败,无需排队
}
当将 user_friendly_names 配置设定为 yes,会将该多路径设备的名称设定为 mpathn.
当在 DM-Multipath 中添加新设备时,这些新设备会位于 /dev 目录的两个不同位置:
/dev/mapper/mpathn 和 /dev/dm-n.
•/dev/mapper 中的设备是在引导过程中生成的.可使用这些设备访问多路径设备,例如在生 成逻辑卷时.
•所有 /dev/dm-n 格式的设备都只能是作为内部使用,请不要使用它.
[root@server73 ~]# /etc/init.d/multipathd start
[root@server73 ~]# multipath -ll
注:可以看到sdb和sdc两条链路复合成一条链路mpatha,此为Failover(主备)情况,
当你对mpatha设备读写时,处于active状态的sdb链路有数据流,而处于enabled状态的 sdc链路无数据流;当sdb链路出现问题时,才会切换到sdc链路上.
测试:
用dd往磁盘读写数据:
[root@server73 ~]# dd if=/dev/zero of=/dev/mapper/mpatha
然后用iostat观察各通道的流量和状态,以判断Failover或负载均衡 方式是否正常:
[root@server73 ~]# iostat -k 2
当断开链路sdb时(ifdown eth0),等待片刻,会自动切换到链路sdc上,并不会造成写入失败。
手动切换模式:(如果需要永久生效直接修改 multipath.conf,并重新 reload)
[root@server73 ~]# multipath -F # 刷新所有的多路径设备映射
[root@server73 ~]# multipath -p multibus -v0 # 切换成负载均衡模式
[root@server73 ~]# multipath -ll
如果成功你会发现它会根据轮叫方式调度链路 sda 和 sdb,从而实现负载均衡.
当断开链路sdb时(ifdown eth0),等待片刻,将只在链路sdc上有数据流,并且不会造成写入失败。