服务概述:
多路径:
实验环境: xuegod61,xuegod62 配置双网卡。
服务端:xuegod61.cn IP:192.168.0.61 eth0 ,br ; IP:192.168.2.63 eth1 , vmnet4
客户端:xuegod62.cn IP:192.168.0.62 eth1 ,br ; IP:192.168.2.64 eth2 , vmnet4


配置一个IP SAN 存储服务器。
将xuegod61 配置成ip san,将xuegod61 上的sdb1 分区,通过ip san 共享出去。
服务器端: target xuegod61
客户端:initiator xuegod62


实验步骤:

安装

[root@xuegod61 ~]# yum install -y scsi-target-utils
[root@xuegod61 ~]# /etc/init.d/tgtd start
正在启动 SCSI target daemon:                              [确定]
[root@xuegod61 ~]# netstat -anupt |grep 3260
tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      2890/tgtd           
tcp        0      0 :::3260                     :::*                        LISTEN      2890/tgtd 


装备一块磁盘sdb1

[root@xuegod61 ~]# fdisk /dev/sdb
[root@xuegod61 ~]# ll /dev/sdb          ##分完区不能格式化
brw-rw---- 1 root disk 8, 16 10月 22 23:15 /dev/sdb


配置target ,把sda4 分区共享出去
修改配置文件

[root@xuegod61 ~]# vim /etc/tgt/targets.conf           #写入以下内容
在参考这段内容并在段内容后,追加以下红色标记内容:

#<target iqn.2008-09.com.example:server.target4>
#    direct-store /dev/sdb      # Becomes LUN 1
#    direct-store /dev/sdc      # Becomes LUN 2
#    direct-store /dev/sdd      # Becomes LUN 3
#    write-cache off
#    vendor_id MyCompany Inc.
#</target>
<target iqn.2015-10.cn.xuegod.www:target_san1>
    backing-store       /dev/sdb1
    initiator-address   192.168.0.62
    initiator-address   192.168.2.62
    vendor_id xuegod
    product_id  target1
</target>


注释:
default-driver iscsi                        #此配置文件默认全部注释,使用iscsi 驱动
<tarrget iqn.2015-10.cn.xuegod.www:target_san1>            # iscsi 正规名字格式: iqn.年-月.主机名
倒着写: target 端名字
backing-store /dev/sdb1          # 可以是具体的分区,也可以是DD 出来的文件。不能小于1G。(后
面的文件系统是GFS,光日志空间就128M)
initiator-address 192.168.0.64              #指定允许访问的此存储主机
initiator-address 192.168.2.64              #指定允许访问的此存储主机
vendor_id “xuegod.cn”                      #供应厂商编号标识这个设备(字符不要过长)
product_id "TARGET1"                          # 产品编号

</target>


[root@xuegod61 ~]# /etc/init.d/tgtd restart
停止 SCSI target daemon:                                  [确定]
正在启动 SCSI target daemon:                              [确定]


查看状态:

[root@xuegod61 ~]# tgt-admin --show
Target 1: iqn.2015-10.cn.xuegod.www:target_san1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 21468 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdb1
            Backing store flags:
    Account information:
    ACL information:
        192.168.0.62
        192.168.2.62

设置开机启动:

[root@xuegod61 ~]# chkconfig tgtd on



配置客户端xuegod62

[root@xuegod62 ~]# rpm -ivh /mnt/Packages/scsi-target-utils-1.0.24-10.el6.x86_64.rpm

需要先发现target 存储,再启动客户端服务,才有效

[root@xuegod62 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.0.61:3260
正在启动 iscsid:                                          [确定]                                                        [确定]
192.168.0.61:3260,1 iqn.2015-10.cn.xuegod.www:target_san1


[root@xuegod62 ~]# ll /dev/sdb*
ls: 无法访问/dev/sdb*: 没有那个文件或目录

[root@xuegod62 ~]# /etc/init.d/iscsi restart
停止 iscsi:                                               [确定]
正在启动 iscsi:                                           [确定]
[root@xuegod62 ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 10月 22 23:48 /dev/sdb


设置开机启动

[root@xuegod62 ~]# chkconfig iscsi on
[root@xuegod62 ~]# chkconfig iscsid on

在服务端查看端口

[root@xuegod61 ~]# netstat -anupt |grep 3260
tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      3049/tgtd           
tcp        0      0 192.168.0.61:3260           192.168.0.62:40695          ESTABLISHED 3049/tgtd           
tcp        0      0 :::3260                     :::*                        LISTEN      3049/tgtd

在另外一条路线发现设备:

[root@xuegod62 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.2.61:3260
192.168.2.61:3260,1 iqn.2015-10.cn.xuegod.www:target_san1
[root@xuegod62 ~]# rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm


[root@xuegod62 ~]# tree /var/lib/iscsi/
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
│   └── iqn.2015-10.cn.xuegod.www:target_san1
│       ├── 192.168.0.61,3260,1
│       │   └── default
│       └── 192.168.2.61,3260,1

│           └── default
├── send_targets
│   ├── 192.168.0.61,3260
│   │   ├── iqn.2015-10.cn.xuegod.www:target_san1,192.168.0.61,3260,1,default -> /var/lib/iscsi/nodes/iqn.2015-10.cn.xuegod.www:target_san1/192.168.0.61,3260,1
│   │   └── st_config
│   └── 192.168.2.61,3260

│       ├── iqn.2015-10.cn.xuegod.www:target_san1,192.168.2.61,3260,1,default -> /var/lib/iscsi/nodes/iqn.2015-10.cn.xuegod.www:target_san1/192.168.2.61,3260,1
│       └── st_config
├── slp
└── static

13 directories, 4 files


查看识别出硬盘

[root@xuegod62 ~]# /etc/init.d/iscsi restart
停止 iscsi:                                               [确定]
正在启动 iscsi:                                           [确定]
[root@xuegod62 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb  /dev/sdc   

##sdb 和 sdbc其实是同一块硬盘

挂载测试数据:

[root@xuegod62 ~]# fdisk /dev/sdb
[root@xuegod62 ~]# mkfs.ext4 /dev/sdb1

[root@xuegod62 ~]# mount /dev/sdb1 /opt/
[root@xuegod62 ~]# cp /etc/passwd /opt/        ##硬盘 可以正常使用
[root@xuegod62 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        16G  5.6G  9.6G  37% /
tmpfs           238M   72K  238M   1% /dev/shm
/dev/sda1       2.0G   59M  1.8G   4% /boot
/dev/sr0        4.2G  4.2G     0 100% /mnt
/dev/sdb1        20G  172M   19G   1% /opt


[root@xuegod62 ~]# ll /dev/sdc*              ##查看不到sdc1
brw-rw----. 1 root disk 8, 32 10月 22 23:57 /dev/sdc



需重启服务

[root@xuegod62 ~]# /etc/init.d/iscsi restart
停止 iscsi:                                               [确定]
正在启动 iscsi:                                           [确定]
[root@xuegod62 ~]# ll /dev/sdc*
brw-rw----. 1 root disk 8, 32 10月 23 00:02 /dev/sdc
brw-rw----. 1 root disk 8, 33 10月 23 00:02 /dev/sdc1


[root@xuegod62 ~]# mount /dev/sdc1 /tmp/
[root@xuegod62 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        16G  5.6G  9.6G  37% /
tmpfs           238M   72K  238M   1% /dev/shm
/dev/sda1       2.0G   59M  1.8G   4% /boot
/dev/sr0        4.2G  4.2G     0 100% /mnt
/dev/sdb1        20G  172M   19G   1% /opt
/dev/sdc1        20G  172M   19G   1% /tmp
[root@xuegod62 ~]# ll /tmp/
总用量 20
drwx------. 2 root root 16384 10月 22 23:59 lost+found
-rw-r--r--. 1 root root  1766 10月 23 00:00 passwd

实例2:在客户端上配置多路径

[root@xuegod62 ~]# yum install -y device-mapper-multipath
[root@xuegod62 ~]# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/

[root@xuegod62 ~]# /etc/init.d/multipathd restart
ok
正在关闭multipathd 端口监控程序:                          [确定]
正在启动守护进程multipathd:                               [确定]


[root@xuegod62 ~]# multipath -ll          ##没输出,代表错误


把刚才挂载 硬盘,卸载

[root@xuegod62 ~]# umount /opt/
[root@xuegod62 ~]# umount /tmp/
[root@xuegod62 ~]# /etc/init.d/iscsi restart
停止 iscsi:                                               [确定]
正在启动 iscsi:                                           [确定]
[root@xuegod62 ~]# multipath -ll
mpatha (1IET 00010001) 远程存储设备的产品信息dm-0 xuegod(厂商),target1(产品ID)
size=1.0G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active #默认使用active 的链路
| `- 7:0:0:1 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled #有效的链路,但不是活动链路
`- 6:0:0:1 sdc 8:32 active ready running
#默认配置并不会实现负载均衡,只会实现高可用的效果。



# (1IET 00010001) 远程存储设备的产品信息,由于sdb和sdb 对应的都是远端同一个存储,所
以产品信息是一样的,最后被多路经驱动发现,所以为他们生成了一个设备文件/dev/mapper/mpatha


[root@xuegod62 ~]# ll /dev/mapper/mpatha*
lrwxrwxrwx. 1 root root 7 10月 23 00:13 /dev/mapper/mpatha -> ../dm-0
lrwxrwxrwx. 1 root root 7 10月 23 00:13 /dev/mapper/mpathap1 -> ../dm-1

如图:


wKioL1Yom9vw5S4TAAFKGbq0lZA442.jpg


实战2:修改配置文件,启动高可用负载均衡模式,并自定义多路经设备文件的名字:

[root@xuegod62 ~]# vim /etc/multipath.conf

wKiom1YonMaBu89HAADK2FMSOtk567.jpg

wKioL1YondCCECoZAAF55fVvuVc301.jpg

注释:
multipaths {
             multipath {
                                                      wwid                         "1IET 00010001" #填写硬盘产品关键信息
                                                      alias                                       webdata     #自定义名字
                                                      path_grouping_policy          multibus
                                                      path_selector                      "round-robin 0"
                                                      failback                                manual
                                                      rr_weight                              priorities
                                                      no_path_retry                       5
             }
}
重启服务multipathd,测试负载均衡:

[root@xuegod62 ~]# /etc/init.d/multipathd restart
ok
正在关闭multipathd 端口监控程序:                          [确定]
正在启动守护进程multipathd:                               [确定]
[root@xuegod62 ~]# /etc/init.d/iscsi restart
停止 iscsi:                                               [确定]
正在启动 iscsi:                                           [确定]
[root@xuegod62 ~]# multipath -ll
webdata (1IET     00010001) dm-0 xuegod,target1
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active        #启用负载均衡模式
  |- 11:0:0:1 sdc 8:32 active ready running
  `- 10:0:0:1 sdb 8:16 active ready running


注:之前相当于主备,现在相当于负载均衡。


测试:

[root@xuegod62 ~]# ls /dev/mapper/webdata*
/dev/mapper/webdata  /dev/mapper/webdatap1
[root@xuegod62 ~]# mount /dev/mapper/webdatap1 /opt/
[root@xuegod62 ~]# cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /opt/
[root@xuegod62 ~]# ls !$
ls /opt/
lost+found  passwd  vmlinuz-2.6.32-431.el6.x86_64


实战3:模拟故障: 断开一条链路。测试链路高可用,关闭其中一个网卡,多路经驱动需要约1 分钟的时
间,去识别链路故障


[root@xuegod61 ~]# ifdown eth1

[root@xuegod62 ~]# multipath -ll       ##大约卡一分钟
webdata (1IET     00010001) dm-0 xuegod,target1
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 11:0:0:1 sdc 8:32 active faulty running
  `- 10:0:0:1 sdb 8:16 active ready  running              # 链接运行不正常faulty 故障


[root@xuegod62 ~]# cp /boot/grub/ /opt/ -r
[root@xuegod62 ~]# ls !$
ls -r
桌面  下载  图片  模板    install.log.syslog  anaconda-ks.cfg
音乐  文档  视频  公共的  install.log

注:数据可以正常写入,说明,高可用成功。


打开链路,过一段时间再看:


[root@xuegod61 ~]# ifup eth1
Determining if ip address 192.168.2.61 is already in use for device eth1...

[root@xuegod62 ~]# multipath -ll
webdata (1IET     00010001) dm-0 xuegod,target1
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 11:0:0:1 sdc 8:32 active ready running
  `- 10:0:0:1 sdb 8:16 active ready running         # 链路运行正常