系统环境: 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

 

:可以看到sdbsdc两条链路复合成一条链路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上有数据流,并且不会造成写入失败。

 

 

posted on 2015-03-31 15:42  ↗℡.Koen↘  阅读(218)  评论(0编辑  收藏  举报