iscsi+multipath 实现DM多路经存储

系统环境redhat6.5 selinux and ipitables disabled
所需主机:          网卡             所装软件
     vm5  eth0:172.25.254.5        scsi-target-utils
          eth1:172.25.254.15

     vm6  eth0:172.25.254.6    iscsi-initiator-utils
                         device-mapper-multipath

1.给主机vm5添加一块网卡,配置其IP,并添加一块硬盘通过iscsi服务用作vm6主机的远程存储

[root@vm5 ~]# yum install scsi-target-utils -y
[root@vm5 ~]# vim /etc/tgt/targets.conf
 38 <target iqn.2015-07.com.example:server.target1>
 39     backing-store /dev/vda
 40     initiator-address 172.25.254.6
 41 </target>
 42

[root@vm5 ~]# /etc/init.d/tgtd start
Starting SCSI target daemon:                               [  OK  ]

2.切换到vm6主机,iscsi配置
[root@vm6 ~]# yum install Iscsi-initiator-utils device-mapper-multipath -y
[root@vm6 ~]# iscsiadm -m discovery -t st -p 172.25.254.5
[root@vm6 ~]# iscsiadm -m node -l
[root@vm6 ~]# iscsiadm -m discovery -t st -p 172.25.254.15
[root@vm6 ~]# iscsiadm -m node -l

3.DM 配置
配置文件模板:
#/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf

[root@vm6 ~]# mpathconf --enable   #生成主配置文件,并且会自动启用 multipathd.
[root@vm6 ~]# vim /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 值表明立即失败,无需排队。
                                     
}
[root@vm6 ~]# /etc/init.d/multipathd start
[root@vm6 ~]# cat /proc/partitions
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
 253        0    7036928 dm-0
 253        1     835584 dm-1
   8       16    8388608 sdb
   8       32    8388608 sdc
 253        2    8388608 dm-2

[root@vm6 ~]# multipath -l
mpathb (1IET     00010001) dm-2 IET,VIRTUAL-DISK
size=8.0G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=0 status=active
| `- 2:0:0:1 sdb 8:16 active undef running
`-+- policy='round-robin 0' prio=0 status=enabled
  `- 3:0:0:1 sdc 8:32 active undef running
可以看到 sdb 和 sdc 两条链路复合成一条链路 mpatha,此为 Failover(主备)情况,当你 mpatha 设备读写时,处于 active 状态的 sdb 链路有数据流,而处于 enabled 状态的sdc 链路无数据流;当 sdb 链路出现问题时,才会切换到 sdc 链路上。

4.测试
安装 sysstat 监控个通道流量
[root@vm6 ~]# yum install -y sysstat
[root@vm6 ~]# mount /dev/mapper/mpathb /mnt
[root@vm6 ~]# cd /mnt/
[root@vm6 mnt]# dd if=/dev/zero of=bigfile bs=1M count=1000    
[root@vm6 mnt]# iostat -k 2
如果成功你会发现,当断开链路 sdb 时,等待片刻,会自动切换到链路 sdc 上,并不会造成写
入失败。

手动切换模式:(如果需要永久生效直接修改 multipath.conf,并重新 reload)
[root@vm6 mnt]# multipath -F    # 刷新所有的多路径设备映射
[root@vm6 mnt]# multipath -p multibus -v0 # 切换成负载均衡模式
[root@vm6 mnt]# multipath -l
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 sdb 8:0 active ready running
`- 3:0:0:1 sdc 8:16 active ready running
如果成功你会发现它会根据轮叫方式调度链路 sdb 和 sdc,从而实现负载均衡。

你可能感兴趣的:(iscsi+multipath 实现DM多路经存储)