Linux下配置多路径

什么是多路径 
普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。
多路径的主要功能就是和存储设备一起配合实现如下功能:  
1.故障的切换和恢复  
2.IO流量的负载均衡  
3.磁盘的虚拟化  
由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都提供了不同的版本。并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的话,可能还需要向厂商购买license才行。比如EMC公司基于linux下的多路径软件,就需要单独的购买license。好在, RedHat和Suse的2.6的内核中都自带了免费的多路径软件包,并且可以免费使用,同时也是一个比较通用的包,可以支持大多数存储厂商的设备,即使是一些不是出名的厂商,通过对配置文件进行稍作修改,也是可以支持并运行的很好的。


1、安装多路径软件包:

device-mapper-1.02.67-2.el5
device-mapper-event-1.02.67.2.el5
device-mapper-multipath-0.4.7-48.el5

[root@RKDB01 Server]# rpm -ivh device-mapper-1.02.67-2.el5.x86_64.rpm 
warning: device-mapper-1.02.67-2.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
        package device-mapper-1.02.67-2.el5.x86_64 is already installed
[root@RKDB01 Server]# rpm -ivh device-mapper-event-1.02.67-2.el5.x86_64.rpm 
warning: device-mapper-event-1.02.67-2.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
        package device-mapper-event-1.02.67-2.el5.x86_64 is already installed
[root@RKDB01 Server]# rpm -ivh device-mapper-multipath-0.4.7-48.el5.x86_64.rpm 
warning: device-mapper-multipath-0.4.7-48.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
        package device-mapper-multipath-0.4.7-48.el5.x86_64 is already installed



2、设置开机启动,并检查安装包是否正常:


chkconfig --level 345 multipathd on
lsmod |grep dm_multipath


[root@RKDB01 Server]# chkconfig --level 345  multipathd on
[root@RKDB01 Server]# lsmod |grep dm_multipath
dm_multipath           58969  0 
scsi_dh                42561  1 dm_multipath
dm_mod                102417  4 dm_mirror,dm_multipath,dm_raid45,dm_log
[root@RKDB01 Server]# 


3、配置multipathd 使其正常工作,编辑/etc/multipath.conf,开放如下内容:

defaults {
        udev_dir                /dev
        polling_interval        10
        selector                "round-robin 0"
        path_grouping_policy    multibus
        getuid_callout          "/sbin/scsi_id -g -u -s /block/%n"
        prio_callout            none
        path_checker            readsector0
        rr_min_io               100
        max_fds                 8192
        rr_weight               priorities
        failback                immediate
        no_path_retry           fail
        user_friendly_names     yes
}
blacklist {
       wwid 26353900f02796769
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^hd[a-z]"
}


4、并关闭如下内容
#blacklist {
#        devnode "*"
#}
#defaults {
     27 #       user_friendly_names yes
     28 #}

5、完成之后执行如下命令发现多路径:

[root@RKDB01 Server]# modprobe dm-multipath
[root@RKDB01 Server]# multipath -F
[root@RKDB01 Server]# multipath dm-multipath
[root@RKDB01 Server]# multipath dm-round-robin
[root@RKDB01 Server]# service multipathd restart
正在关闭multipathd 端口监控程序:                          [确定]
正在启动守护进程multipathd:                               [确定]
[root@RKDB01 Server]# multipath -v2
[root@RKDB01 Server]# multipath -v2
[root@RKDB01 Server]# multipath -ll
mpath1 (3600d02310000011b16a5d57c6a1bd99a) dm-0 TOYOU,NetStor_iSUM510
[size=3.3T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=2][ena bled]
 \_ 1:0:0:0 sdb 8:16  [failed][ready]
 \_ 1:0:1:0 sdc 8:32  [failed][ready]
[root@RKDB01 Server]# 


6、重启服务器后,我们可以看到多路径信息了:
[root@RKDB01 ~]# ll /dev/mapper/
总计 0
crw------- 1 root root  10, 60 11-05 22:35 control
brw-rw---- 1 root disk 253,  0 11-05 22:35 mpath1
brw-rw---- 1 root disk 253,  1 11-05 22:35 mpath2
[root@RKDB01 ~]# multipath -ll
mpath2 (3600d02310000011b76128b9c63138cf4) dm-1 TOYOU,NetStor_iSUM510
[size=3.2T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
 \_ 1:0:0:1 sdc 8:32  [active][ready]
 \_ 1:0:1:1 sde 8:64  [active][ready]
mpath1 (3600d02310000011b16a5d57c6a1bd99a) dm-0 TOYOU,NetStor_iSUM510
[size=20G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
 \_ 1:0:0:0 sdb 8:16  [active][ready]
 \_ 1:0:1:0 sdd 8:48  [active][ready]


7、通过fdisk 看可以生成了DM-0/DM-1两个盘,正是上面sdc/sde,sdb/sdd多路径后出来的:

[root@RKDB01 ~]# fdisk -l
Disk /dev/sda: 299.4 GB, 299439751168 bytes
255 heads, 63 sectors/track, 36404 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          38      305203+  83  Linux
/dev/sda2              39       13092   104856255   83  Linux
/dev/sda3           13093       19619    52428127+  83  Linux
/dev/sda4           19620       36404   134825512+   5  Extended
/dev/sda5           19620       26146    52428096   83  Linux
/dev/sda6           26147       28757    20972826   83  Linux
/dev/sda7           28758       30324    12586896   82  Linux swap / Solaris
/dev/sda8           30325       36404    48837568+  83  Linux
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 3568.4 GB, 3568429957120 bytes
255 heads, 63 sectors/track, 433836 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdd doesn't contain a valid partition table
Disk /dev/sde: 3568.4 GB, 3568429957120 bytes
255 heads, 63 sectors/track, 433836 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sde doesn't contain a valid partition table
Disk /dev/dm-0: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 3568.4 GB, 3568429957120 bytes
255 heads, 63 sectors/track, 433836 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-1 doesn't contain a valid partition table
Disk /dev/sdf: 4009 MB, 4009754624 bytes
255 heads, 63 sectors/track, 487 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdf4   *           1         488     3915744+   b  W95 FAT32
Partition 4 has different physical/logical endings:
     phys=(486, 254, 63) logical=(487, 125, 22)
[root@RKDB01 ~]# 


8、我们同时也可以在/dev/mapper目录中查看到多路径映射的信息:
[root@RKDB01 ~]# ll /dev/mapper/
总计 0
crw------- 1 root root  10, 60 11-06 00:49 control
brw-rw---- 1 root disk 253,  2 11-06 00:49 data-data001
brw-rw---- 1 root disk 253,  0 11-06 00:49 mpath1
brw-rw---- 1 root disk 253,  1 11-06 00:49 mpath2

你可能感兴趣的:(Linux下配置多路径)