Linux下多路径Multipath的简单配置

1、启用Multipath:

(1)启动multipathd服务

#service multipathd start 或者 #/etc/init.d/multipathd start

(2)修改multipath配置文件/etc/multipath.conf:
  a 默认情况下所以的设备都在multipath的黑名单中,所以即使启动了multipathd服务并加在了内核模块,multipath也不会对链路进行聚合,找到下面的3行并注释掉(在行首加上#号)

#devnode_blacklist {
   #      devnode "*"
   #}


  b 默认情况下multipath生成dm设备之后,会同时在/dev/mapper/下生成以磁盘wwid为名的符号链接指向对应的dm设备。如果想生成mpath设备,则需要打开user_friendly_names选项,将配置文件中下面3行的注释取消(去掉行首的#号)

defaults {
       user_friendly_names yes
   }


(3)重启multipathd服务(修改multipath.conf文件之后都应该重启multipath服务)

(4)扫描磁盘
  #multipath -v2
    使用上面命令之后,系统中会出现链路聚合之后的dm设备,同时也会在/dev/mapper/、/dev/mpath/目录下生成相应的设备。
    查看multipath拓扑结构
  #multipath -ll
    另外一个重要的文件是/var/lib/multipath/bindings,这个文件中是磁盘的别名和wwid的对应关系,典型的例子是:
  mpath0 3600508b4000c3af700008000002d0000

(5)需要注意的问题,multipath也会为本地的磁盘生成相应的dm设备,所以需要在multipath.conf中将本地磁盘加入到黑名单,配置的方法可以参考下面的示例

devnode_blacklist {
           wwid 36005076b08164f4011ae88b23efb95fe
       devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
       devnode "^hd[a-z]"
   }


    如上例所示,可以通过wwid或者设备名将本地磁盘加入到黑名单中。

2、固定multipath设备的命名:
通过wwid和设备别名一一对应的方式固定multipath设备的名称,这些和别名对应的设备会被创建到/dev/mapper/目录下,使用时直接使用这个目录的的设备。


(1)通过/var/lib/multipath/bindings可以获取所有磁盘的wwid,确定每个磁盘的别名之后,在/etc/multipath.conf中的multipaths段中加入相应的配置,如将wwid为3600508b4000c3b910000c00000330000的磁盘命名为etl01,wwid为3600508b4000c3b910000c00000390000的磁盘命名为etl02,配置文件如下所示

multipaths {
   multipath {
       wwid 3600508b4000c3b910000c00000330000
       alias etl01
   }
   multipath {
       wwid 3600508b4000c3b910000c00000390000
       alias etl02
   }
 }


(2)配置完成之后,重启multipathd服务,使用下面的命令清空已有的multipath记录
  #multipath -F
    然后使用multipath -v2重新扫描设备,这时会在/dev/mapper/目录下生成和别名对应的设备文件。
  #ls /dev/mapper/
  control etl01 eth02


(3)如果多台服务器的存储链路完全相同,并希望各服务器上同一磁盘的设备名相同,可以在一台服务器上配置好别名绑定之后,将multipaths { }中间的配置复制到其他服务器,这样各台服务器/dev/mapper/下面的设备将会保持一致。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

RHEL6与5在多路径的配置上有一些小区别。scsi_id命令有些参数不再支持。

在RHEL 6中获取磁盘的wwid可以通过–whitelist参数获取:[root@db1 ~]# scsi_id --whitelist /dev/sdg    (这个就是查看哪个iscsi磁盘wwid号的,也可以在/etc/multipath 下查看bindings  wwids  这两个文件可以看到wwid号)

可以通过一条shell命令,来获取系统所有磁盘的wwid:

# for i in `cat /proc/partitions ¦ awk {'print $4'} ¦grep sd`; do echo "### $i: `scsi_id --whitelist /dev/$i`"; done

在RHEL 5中,可以通过如下方式获取磁盘wwid:

# for i in `cat /proc/partitions ¦ awk {'print $4'} ¦grep sd`; do echo "### $i: `scsi_id -g -u -s /block/$i`"; done

RHEL 6中,多路径配置文件也出现变化:

1.  # multipath.conf written by anaconda
2. 
3.  defaults {

4.  user_friendly_names yes
5.  }
6.  blacklist {

7.  devnode "^(ramrawloopfdmddm-srscdst)[0-9]*"
8.  devnode "^hd[a-z]"
9.  devnode "^dcssblk[0-9]*"
10.  device {

11.  vendor "DGC"
12.  product "LUNZ"
13.  }
14.  device {

15.  vendor "IBM"
16.  product "S/390.*"
17.  }
18.  # don't count normal SATA devices as multipaths
19.  device {

20.  vendor "ATA"
21.  }
22.  # don't count 3ware devices as multipaths
23.  device {

24.  vendor "3ware"
25.  }
26.  device {

27.  vendor "AMCC"
28.  }
29.  # nor highpoint devices
30.  device {

31.  vendor "HPT"
32.  }
33.  wwid "20080930-1"
34.  wwid "20080930-1"
35.  device {

36.  vendor Cisco
37.  product Virtual_CD_DVD
38.  }
39.  wwid "*" //其实可以注释这项,这样就不需要单独填写blacklist_exceptions
40.  }
41.  blacklist_exceptions { //排除在黑名单之外的wwid
42.  wwid "360060160a2212f00a67e0b91f2dbe111"
43.  wwid "360060160a2212f0044a0fc6ef5eae111"
44.  }
45.  multipaths {

46.  multipath {

47.  uid 0 //磁盘读所属用户uid
48.  gid 0 //磁盘所属组gid
49.  wwid "360060160a2212f00a67e0b91f2dbe111" //wwid号
50.  mode 0600 //磁盘读写权限
51.  }
52.  multipath {

53.  wwid "360060160a2212f0044a0fc6ef5eae111"
54.  alias data //别名
55.  }
56.  ... ... //还可以根据实际情况,配置其它磁盘的别名、uid、gid、mode etc...
57. 
58.  }

配置完了之后,重启multipathd服务,之后通过multipath -ll查看经过多路径软件绑定后的磁盘。

注意,如果要对磁盘进行格式化,请采用/dev/mapper/[alias]这类设备名进行fdisk。

****************************************************第二种*****************************************************

现在的Linux系统中,很多都会使用系统自带的multipath多路径软件,在以前的版本中,我们一般通过multipath+udev或者multipath+rc.local来实现多路径和权限设置,而在redhat 5.3-5.11的版本中multipath就直接可以实现多路径聚合、设备持久化、用户组设置
操作系统版本

[root@rac1 dev]         # uname -r        
         2.6.39-300.26.1.el5uek        
                  
         [root@rac1 dev]         # more /etc/issue        
         Oracle Linux Server release 5.9        
         Kernel \r on an \m

fdisk记录

[root@rac1 dev]         # fdisk -l         
         …………        
         Disk         /dev/sdh         : 134.2 GB, 134217728000 bytes        
         255 heads, 63 sectors         /track         , 16317 cylinders        
         Units = cylinders of 16065 * 512 = 8225280 bytes        
                  
                  Device Boot      Start         End      Blocks   Id  System        
                  
         Disk         /dev/sdi         : 33.5 GB, 33554432000 bytes        
         64 heads, 32 sectors         /track         , 32000 cylinders        
         Units = cylinders of 2048 * 512 = 1048576 bytes        
                  
                  Device Boot      Start         End      Blocks   Id  System

multipath包 检查安装multipath相关包(该版本系统默认安装)

[root@rac1 dev]         # rpm -aq|grep mapper        
         device-mapper-multipath-libs-0.4.9-56.0.3.el5        
         device-mapper-event-1.02.67-2.el5        
         device-mapper-1.02.67-2.el5        
         device-mapper-multipath-0.4.9-56.0.3.el5

获取wwid值

[root@rac1 dev]         # /sbin/scsi_id -g -u -s /block/sdh        
         14f504e46494c45527049754962662d395751372d68356743        
         [root@rac1 dev]         # /sbin/scsi_id -g -u -s /block/sdi        
         14f504e46494c4552484d486249782d464471382d354f4b58

获取uid和gid

[root@rac1 dev]         # id grid        
         uid=1100(grid) gid=54321(oinstall)          groups         =54321(oinstall),1020(asmadmin),1021(asmdba)


multipath.conf配置

[root@rac1 dev]         # vi /etc/multipath.conf        
                  
         defaults {        
         user_friendly_names no        
         queue_without_daemon no        
         flush_on_last_del         yes        
         max_fds max        
         }        
                  
         blacklist {        
         devnode         "^hd[a-z]"        
         devnode         "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"        
         devnode         "^cciss.*"        
         }        
                  
         devices {        
                  device {        
                  vendor                          "OPNFILER "        
                  product                         "LUN"        
                  path_grouping_policy    group_by_prio        
                  features                     "3 queue_if_no_path pg_init_retries 50"        
                  getuid_callout                  "/sbin/scsi_id -g -u -s /block/%n"        
                  path_checker            tur        
                  path_selector                   "round-robin 0"        
                  hardware_handler                "1 alua"        
                  failback               immediate        
                  rr_weight              uniform        
                  rr_min_io             128        
                  }        
         }        
                  
         multipaths {        
                  multipath {        
                  wwid                    14f504e46494c45527049754962662d395751372d68356743           #wwid        
                  alias                           xifenfei128        
                  uid                     1100                                                        #uid        
                  gid                     1020                                                        #gid        
                  }        
                  
                  
                  
                  multipath {        
                  wwid                    14f504e46494c4552484d486249782d464471382d354f4b58            #wwid        
                  alias                           xifenfei32                                                 
                  uid                     1100                                                         #uid        
                  gid                     1020                                                         #gid        
                  }        
         }

启动multipath

[root@rac1 dev]         # modprobe dm-multipath         
         [root@rac1 dev]         # modprobe dm-round-robin         
         [root@rac1 dev]         # chkconfig multipathd on        
         [root@rac1 dev]         # service multipathd start         
         Starting multipathd daemon: [  OK  ]        
         [root@rac1 dev]         # multipath -F        
         [root@rac1 dev]         # multipath -v2        
         create: xifenfei128 (14f504e46494c45527049754962662d395751372d68356743) undef OPNFILER,VIRTUAL-DISK        
         size=125G features=         '0'         hwhandler=         '0'         wp=undef        
         `-+- policy=         'round-robin 0'          prio=1 status=undef        
                  `- 3:0:0:9  sdh 8:112 undef ready  running        
         create: xifenfei32 (14f504e46494c4552484d486249782d464471382d354f4b58) undef OPNFILER,VIRTUAL-DISK        
         size=31G features=         '0'         hwhandler=         '0'         wp=undef        
         `-+- policy=         'round-robin 0'          prio=1 status=undef        
                  `- 3:0:0:10 sdi 8:128 undef ready  running

查看生成多路径设备 注意设备名称、组、用户

[root@rac1 dev]         # ls -l /dev/mapper/xifenfei*        
         brw-rw---- 1 grid asmadmin 252, 2 Jan  7 21:21          /dev/mapper/xifenfei128        
         brw-rw---- 1 grid asmadmin 252, 3 Jan  7 21:21          /dev/mapper/xifenfei32

补充Linux 6.x中udev设置所属组和权限 对于linux 6.x,multipath不能设置磁盘所属组和权限,可以通过udev进行实现,类似配置如下

[root@bxrac03 mapper]         #cat 99-diskownership.rules        
                  
         SUBSYSTEM!=         "block"         , GOTO=         "quickexit"        
         KERNEL!=         "dm-*"         , GOTO=         "quickexit"        
         PROGRAM==         "/sbin/dmsetup info -c --noheadings -o name -m %m -j %M"        
         RESULT==         "*ocr*"         , OWNER=         "grid"         , GROUP=         "oinstall"         , MODE=         "0660"        
         RESULT==         "*oradata"         , OWNER=         "grid"         , GROUP=         "oinstall"         , MODE=         "0660"        
         RESULT==         "*backup"         , OWNER=         "grid"         , GROUP=         "oinstall"         , MODE=         "0660"        
         LABEL=         "quickexit"

其中RESULT和dm的别名向匹配

#########################################################################################

多路径(multi-path)软件的介绍

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择,如下图:

 

centos lib 路径配置 centos多路径软件配置_服务器

 

根据上图所示,每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。多路径的主要功能就是和存储设备一起配合实现如下功能:

1.       故障的切换和恢复

2.       IO流量的负载均衡

3.       磁盘的虚拟化

由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都提供了不同的版本。并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的话,可能还需要向厂商购买license才行。比如EMC公司基于linux下的多路径软件,就需要单独的购买license。好在, RedHat和Suse的2.6的内核中都自带了免费的多路径软件包,并且可以免费使用,同时也是一个比较通用的包,可以支持大多数存储厂商的设备,即使是一些不是出名的厂商,通过对配置文件进行稍作修改,也是可以支持并运行的很好的。

本文一下的部分将专门针对Linux下多路径软件的配置安装,以及一些结合实际的操作进行详细的介绍(以下操作均在Suse10 SP1下进行)

多路径软件包的构成

device-mapper-1.02.13-6.9.i586.rpm      

该软件运行在底层,主要进行设备虚拟化和映射。

multipath-tools-0.4.7-34.18.i586.rpm,这个软件包可以在

多路径的管理和监控工具,主要进行路径状态的检测,管理工作

 

 

多路径软件包的安装

 

 Rpm –ivh device-mapper-1.02.13-6.9.i586.rpm

 Rpm –ivh  multipath-tools-0.4.7-34.18.i586.rpm

安装完成后,使用命令modprobe  dm_multipath来加载相应的模块,可以使用lsmod |grep dm_multipath来检查安装是否正常。

 

 

配置文件的修改及创建

接下来的工作就是要创建一个multipath.conf的配置文件,该文件在安装后不会自动创建。不过有一个模板可以使用,使用如下命令可以创建一个multipath.conf的文件了

 

  cp /usr/share/doc/packages/multipath-tools/multipath.conf.synthetic  /etc/multipath.conf

 

然后再该文件的最后一段加上如下配置:

    

  devices {

       device {                                    

厂商名称

产品型号

默认的路径组策略

获得唯一设备号使用的默认程序

获取有限级数值使用的默认程序

确认用来在路径切换和IO错误时,执行特定的操作的模块。

决定路径状态的方法

选择那条路径进行下一个IO操作的方法

故障恢复的模式

在disable queue之前系统尝试使用失效路径的次数的数值

在当前的用户组中,在切换到另外一条路径之前的IO请求的数目

       }

  }

 

 

编辑modprobe.conf文件,用来设置驱动程序的参数。

/etc/modprobe.conf.local 

增加一行

 

重新编译引导文件

 

 "cp -f /boot/initrd-2.6.[kernel_version].img ./initrd-2.6.[k_v].img.bak"

 "mkinitrd"

做完上述操作后,注意要将操作系统重新启动

磁盘的分区及使用

创建多路径设备的分区,这里主要一下,多路径的分区只适合使用kpartx工具,不要使用fdisk进行分区。

---------------------------------

 

Step2,  kpartx -l /dev/dm-0            //lists all partitions on this device

Step3,  kpartx -a /dev/dm-0            //create all device node on this device

kpartx -a /dev/mapper/      //多路径的设备不可以使用fdisk进行分区,必须使用kpartx -a进行分区后,再进行格式化。

 

查看映射关系

Suse3:/sbin # ls -la /dev/disk/by-name/
        
total 0
        
drwxr-xr-x 2 root root 200 Aug  1 09:01 .
        
drwxr-xr-x 7 root root 140 Jul 31 18:05 ..
        
lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_010c3b973ffbc469ce11eb4d2db9d677 -> ../../dm-5
        
lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_010c3b973ffbc469ce11eb4d2db9d677-part1 -> ../../dm-7
        
lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_1fbdf62d63e62b625aaea9eb8c7e45cf -> ../../dm-4
        
lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_1fbdf62d63e62b625aaea9eb8c7e45cf-part1 -> ../../dm-6
        
lrwxrwxrwx 1 root root  10 Aug  1 08:46 SAccusys_ACS92102_6d71358b45505925b5bd17ff49d554f3 -> ../../dm-0
        
lrwxrwxrwx 1 root root  10 Aug  1 08:46 SAccusys_ACS92102_6d71358b45505925b5bd17ff49d554f3-part1 -> ../../dm-1
        
lrwxrwxrwx 1 root root  10 Jul 31 18:08 SAccusys_ACS92102_f0ade6db4a8d13de2c30fd5efae7b91c -> ../../dm-2
        
lrwxrwxrwx 1 root root  10 Jul 31 18:10 SAccusys_ACS92102_f0ade6db4a8d13de2c30fd5efae7b91c-part1 -> ../../dm-3

几个比较有用的命令

1.start/stop multipathd process "service multipathd start/stop"
        
2.display the multipath topology "multipath -ll" //非常有用的命令。
        
3.display the multipath debug info "multipath -v3"
        
4.Scan the HD "fdisk -l"
        
5.view the FC wwn " cat /sys/class/fc_host/host1/node_name "

下面是举例:

multipath -ll
        
 
        
 Successful info:
        
 
        
SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102
        
[size=20G][features=1 queue_if_no_path][hwhandler=1 acs]
        
\_ round-robin 0 [prio=400][active]----//表示当前的正在使用控制器
        
 \_ 1:0:1:0 sdc 8:32  [active][ready]
        
 \_ 1:0:2:0 sdd 8:48  [active][ready]
        
 \_ 2:0:1:0 sdg 8:96  [active][ready]
        
可以理解为路径
        
\_ round-robin 0 [prio=0][enabled]-----//备份控制器
        
 \_ 1:0:0:0 sdb 8:16  [active][ghost]
        
 \_ 1:0:3:0 sde 8:64  [active][ghost]
        
 \_ 2:0:0:0 sdf 8:80  [active][ghost]
        
 \_ 2:0:3:0 sdi 8:128 [active][ghost]   //
        
 
        
 
        
:
        
 
        
sdc: checker msg is "hp_sw checker reports path is down" //路径出现故障
        
sdd: checker msg is "hp_sw checker reports path is down" //路径出现故障
        
sdh: checker msg is "hp_sw checker reports path is down" //路径出现故障
        
SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102
        
[size=20G][features=1 queue_if_no_path][hwhandler=1 acs]
        
\_ round-robin 0 [prio=0][enabled]      ---- //两个都是enabled状态,一控制器故障,另外一个控制器没有failover。
        
 \_ 1:0:1:0 sdc 8:32  [failed][faulty]
        
 \_ 1:0:2:0 sdd 8:48  [failed][faulty]
        
 \_ 2:0:1:0 sdg 8:96  [failed][faulty]
        
 \_ 2:0:2:0 sdh 8:112 [failed][faulty]
        
\_ round-robin 0 [prio=0][enabled]      ----
        
 \_ 1:0:0:0 sdb 8:16  [active][ghost]
        
 \_ 1:0:3:0 sde 8:64  [active][ghost]
        
 \_ 2:0:0:0 sdf 8:80  [active][ghost]
        
 \_ 2:0:3:0 sdi 8:128 [active][ghost]

 

控制器重新启动后,Suse有时候需要重新启动才可以使用。

multipath -ll
        
SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102
        
[size=20G][features=1 queue_if_no_path][hwhandler=1 acs]
        
\_ round-robin 0 [prio=200][active]
        
 \_ 1:0:0:0 sdb 8:16  [active][ready]
        
 \_ 1:0:1:0 sdc 8:32  [active][ready]
        
 \_ 2:0:0:0 sdd 8:48  [active][ready]
        
 \_ 2:0:1:0 sde 8:64  [active][ready]

 

 

的所有的相关的文件

-rwxr--r--    1 root    root             2554 Jun 30 16:26 /etc/init.d/boot.multipath
        
-rwxr--r--    1 root    root             3700 Jun 30 16:26 /etc/init.d/multipathd
        
drwxr-xr-x    2 root    root                0 Jun 30 16:26 /etc/udev
        
drwxr-xr-x    2 root    root                0 Jun 30 16:26 /etc/udev/rules.d
        
-rw-r--r--    1 root    root             1185 Jun 30 16:26 /etc/udev/rules.d/71-multipath.rules
        
-rw-r--r--    1 root    root              262 Jun 30 16:26 /etc/udev/rules.d/72-multipath-compat.rules
        
-rwxr-xr-x    1 root    root             4872 Jun 30 16:26 /sbin/devmap_name
        
-rwxr-xr-x    1 root    root            22824 Jun 30 16:26 /sbin/kpartx
        
-rwxr-xr-x    1 root    root             1114 Jun 30 16:26 /sbin/kpartx_id
        
-rwxr-xr-x    1 root    root              296 Jun 30 16:26 /sbin/mpath_id
        
-rwxr-xr-x    1 root    root             8404 Jun 30 16:26 /sbin/mpath_prio_alua
        
-rwxr-xr-x    1 root    root             7852 Jun 30 16:26 /sbin/mpath_prio_balance_units
        
-rwxr-xr-x    1 root    root             4208 Jun 30 16:26 /sbin/mpath_prio_emc
        
-rwxr-xr-x    1 root    root             5492 Jun 30 16:26 /sbin/mpath_prio_hds_modular
        
-rwxr-xr-x    1 root    root             5984 Jun 30 16:26 /sbin/mpath_prio_netapp
        
-rwxr-xr-x    1 root    root             3284 Jun 30 16:26 /sbin/mpath_prio_random
        
-rwxr-xr-x    1 root    root             4184 Jun 30 16:26 /sbin/mpath_prio_tpc
        
-rwxr-xr-x    1 root    root           121888 Jun 30 16:26 /sbin/multipath
        
-rwxr-xr-x    1 root    root           146996 Jun 30 16:26 /sbin/multipathd
        
drwxr-xr-x    2 root    root                0 Jun 30 16:26 /usr/share/doc/packages/multipath-tools
        
-rw-r--r--    1 root    root               49 Nov 11  2005 /usr/share/doc/packages/multipath-tools/AUTHOR
        
-rw-r--r--    1 root    root            25284 Nov 11  2005 /usr/share/doc/packages/multipath-tools/COPYING
        
-rw-r--r--    1 root    root              195 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/ChangeLog
        
-rw-r--r--    1 root    root               15 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/README
        
-rw-r--r--    1 root    root             9238 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/multipath.conf.annotated
        
-rw-r--r--    1 root    root             1499 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/multipath.conf.synthetic
        
-rw-r--r--    1 root    root              424 Jun 30 16:26 /usr/share/man/man8/devmap_name.8.gz
        
-rw-r--r--    1 root    root              544 Jun 30 16:26 /usr/share/man/man8/kpartx.8.gz
        
-rw-r--r--    1 root    root             2048 Jun 30 16:26 /usr/share/man/man8/mpath_prio_alua.8.gz
        
-rw-r--r--    1 root    root              979 Jun 30 16:26 /usr/share/man/man8/multipath.8.gz
        
-rw-r--r--    1 root    root              489 Jun 30 16:26 /usr/share/man/man8/multipathd.8.gz
        
drwx------    2 root    root                0 Jun 30 16:26 /var/cache/multipath

 

小技巧

存储添加映射或者做了修改,主机不用重新启动的方法

  echo 1 > /sys/class/fc_host/host1/issue_lip

  echo 1 > /sys/class/fc_host/host2/issue_lip

  echo "- - -" > /sys/class/scsi_host/host1/scan

  echo "- - -" > /sys/class/scsi_host/host2/scan

 

重启服务,让配置文件生效的方法:

   1.     Stop the multipathd service.

   2.     Clear old multipath bindings by entering

/sbin/multipath -F

   3.      Create new multipath bindings by entering

/sbin/multipath -v2 -l

Start the multipathd service. //更改配置文件后需要做上面的操作才可以让配置文件的更改生效。

 

如果连接一切都正常,但是suse在操作系统下看不到磁盘。这时可能需要重新启动存储系统。

<!--

0人

 

 

多路径(multi-path)软件的介绍

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择,如下图:

 

centos lib 路径配置 centos多路径软件配置_服务器

 

根据上图所示,每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。多路径的主要功能就是和存储设备一起配合实现如下功能:

1.       故障的切换和恢复

2.       IO流量的负载均衡

3.       磁盘的虚拟化

由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都提供了不同的版本。并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的话,可能还需要向厂商购买license才行。比如EMC公司基于linux下的多路径软件,就需要单独的购买license。好在, RedHat和Suse的2.6的内核中都自带了免费的多路径软件包,并且可以免费使用,同时也是一个比较通用的包,可以支持大多数存储厂商的设备,即使是一些不是出名的厂商,通过对配置文件进行稍作修改,也是可以支持并运行的很好的。

本文一下的部分将专门针对Linux下多路径软件的配置安装,以及一些结合实际的操作进行详细的介绍(以下操作均在Suse10 SP1下进行)

多路径软件包的构成

device-mapper-1.02.13-6.9.i586.rpm      

该软件运行在底层,主要进行设备虚拟化和映射。

multipath-tools-0.4.7-34.18.i586.rpm,这个软件包可以在

多路径的管理和监控工具,主要进行路径状态的检测,管理工作

 

 

多路径软件包的安装

 

 Rpm –ivh device-mapper-1.02.13-6.9.i586.rpm

 Rpm –ivh  multipath-tools-0.4.7-34.18.i586.rpm

安装完成后,使用命令modprobe  dm_multipath来加载相应的模块,可以使用lsmod |grep dm_multipath来检查安装是否正常。

 

 

配置文件的修改及创建

接下来的工作就是要创建一个multipath.conf的配置文件,该文件在安装后不会自动创建。不过有一个模板可以使用,使用如下命令可以创建一个multipath.conf的文件了

 

  cp /usr/share/doc/packages/multipath-tools/multipath.conf.synthetic  /etc/multipath.conf

 

然后再该文件的最后一段加上如下配置:

    

  devices {

       device {                                    

厂商名称

产品型号

默认的路径组策略

获得唯一设备号使用的默认程序

获取有限级数值使用的默认程序

确认用来在路径切换和IO错误时,执行特定的操作的模块。

决定路径状态的方法

选择那条路径进行下一个IO操作的方法

故障恢复的模式

在disable queue之前系统尝试使用失效路径的次数的数值

在当前的用户组中,在切换到另外一条路径之前的IO请求的数目

       }

  }

 

 

编辑modprobe.conf文件,用来设置驱动程序的参数。

/etc/modprobe.conf.local 

增加一行

 

重新编译引导文件

 

 "cp -f /boot/initrd-2.6.[kernel_version].img ./initrd-2.6.[k_v].img.bak"

 "mkinitrd"

做完上述操作后,注意要将操作系统重新启动

磁盘的分区及使用

创建多路径设备的分区,这里主要一下,多路径的分区只适合使用kpartx工具,不要使用fdisk进行分区。

---------------------------------

 

Step2,  kpartx -l /dev/dm-0            //lists all partitions on this device

Step3,  kpartx -a /dev/dm-0            //create all device node on this device

kpartx -a /dev/mapper/      //多路径的设备不可以使用fdisk进行分区,必须使用kpartx -a进行分区后,再进行格式化。

 

查看映射关系

 

Suse3:/sbin # ls -la /dev/disk/by-name/

total 0

drwxr-xr-x 2 root root 200 Aug  1 09:01 .

drwxr-xr-x 7 root root 140 Jul 31 18:05 ..

lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_010c3b973ffbc469ce11eb4d2db9d677 -> ../../dm-5

lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_010c3b973ffbc469ce11eb4d2db9d677-part1 -> ../../dm-7

lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_1fbdf62d63e62b625aaea9eb8c7e45cf -> ../../dm-4

lrwxrwxrwx 1 root root  10 Aug  1 09:01 SAccusys_ACS92102_1fbdf62d63e62b625aaea9eb8c7e45cf-part1 -> ../../dm-6

lrwxrwxrwx 1 root root  10 Aug  1 08:46 SAccusys_ACS92102_6d71358b45505925b5bd17ff49d554f3 -> ../../dm-0

lrwxrwxrwx 1 root root  10 Aug  1 08:46 SAccusys_ACS92102_6d71358b45505925b5bd17ff49d554f3-part1 -> ../../dm-1

lrwxrwxrwx 1 root root  10 Jul 31 18:08 SAccusys_ACS92102_f0ade6db4a8d13de2c30fd5efae7b91c -> ../../dm-2

lrwxrwxrwx 1 root root  10 Jul 31 18:10 SAccusys_ACS92102_f0ade6db4a8d13de2c30fd5efae7b91c-part1 -> ../../dm-3

几个比较有用的命令

 

1.start/stop multipathd process "service multipathd start/stop"

2.display the multipath topology "multipath -ll" //非常有用的命令。

3.display the multipath debug info "multipath -v3"

4.Scan the HD "fdisk -l"

5.view the FC wwn " cat /sys/class/fc_host/host1/node_name "

下面是举例:

 multipath -ll

 

 Successful info:

 

SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102

[size=20G][features=1 queue_if_no_path][hwhandler=1 acs]

\_ round-robin 0 [prio=400][active]----//表示当前的正在使用控制器

 \_ 1:0:1:0 sdc 8:32  [active][ready]

 \_ 1:0:2:0 sdd 8:48  [active][ready]

 \_ 2:0:1:0 sdg 8:96  [active][ready]

可以理解为路径

\_ round-robin 0 [prio=0][enabled]-----//备份控制器

 \_ 1:0:0:0 sdb 8:16  [active][ghost]

 \_ 1:0:3:0 sde 8:64  [active][ghost]

 \_ 2:0:0:0 sdf 8:80  [active][ghost]

 \_ 2:0:3:0 sdi 8:128 [active][ghost]   //

 

 

 

sdc: checker msg is "hp_sw checker reports path is down" //路径出现故障

sdd: checker msg is "hp_sw checker reports path is down" //路径出现故障

sdh: checker msg is "hp_sw checker reports path is down" //路径出现故障

SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102

[size=20G][features=1 queue_if_no_path][hwhandler=1 acs]

\_ round-robin 0 [prio=0][enabled]      ---- //两个都是enabled状态,一控制器故障,另外一个控制器没有failover。

 \_ 1:0:1:0 sdc 8:32  [failed][faulty]

 \_ 1:0:2:0 sdd 8:48  [failed][faulty]

 \_ 2:0:1:0 sdg 8:96  [failed][faulty]

 \_ 2:0:2:0 sdh 8:112 [failed][faulty]

\_ round-robin 0 [prio=0][enabled]      ----

 \_ 1:0:0:0 sdb 8:16  [active][ghost]

 \_ 1:0:3:0 sde 8:64  [active][ghost]

 \_ 2:0:0:0 sdf 8:80  [active][ghost]

 \_ 2:0:3:0 sdi 8:128 [active][ghost]

 

控制器重新启动后,Suse有时候需要重新启动才可以使用。

  multipath -ll

SAccusys_ACS92102_3a095edea90dc919f0da043d118fd8c5dm-0 Accusys,ACS92102

[size=20G][features=1 queue_if_no_path][hwhandler=1 acs]

\_ round-robin 0 [prio=200][active]

 \_ 1:0:0:0 sdb 8:16  [active][ready]

 \_ 1:0:1:0 sdc 8:32  [active][ready]

 \_ 2:0:0:0 sdd 8:48  [active][ready]

 \_ 2:0:1:0 sde 8:64  [active][ready]

 

 

的所有的相关的文件

 

-rwxr--r--    1 root    root             2554 Jun 30 16:26 /etc/init.d/boot.multipath

-rwxr--r--    1 root    root             3700 Jun 30 16:26 /etc/init.d/multipathd

drwxr-xr-x    2 root    root                0 Jun 30 16:26 /etc/udev

drwxr-xr-x    2 root    root                0 Jun 30 16:26 /etc/udev/rules.d

-rw-r--r--    1 root    root             1185 Jun 30 16:26 /etc/udev/rules.d/71-multipath.rules

-rw-r--r--    1 root    root              262 Jun 30 16:26 /etc/udev/rules.d/72-multipath-compat.rules

-rwxr-xr-x    1 root    root             4872 Jun 30 16:26 /sbin/devmap_name

-rwxr-xr-x    1 root    root            22824 Jun 30 16:26 /sbin/kpartx

-rwxr-xr-x    1 root    root             1114 Jun 30 16:26 /sbin/kpartx_id

-rwxr-xr-x    1 root    root              296 Jun 30 16:26 /sbin/mpath_id

-rwxr-xr-x    1 root    root             8404 Jun 30 16:26 /sbin/mpath_prio_alua

-rwxr-xr-x    1 root    root             7852 Jun 30 16:26 /sbin/mpath_prio_balance_units

-rwxr-xr-x    1 root    root             4208 Jun 30 16:26 /sbin/mpath_prio_emc

-rwxr-xr-x    1 root    root             5492 Jun 30 16:26 /sbin/mpath_prio_hds_modular

-rwxr-xr-x    1 root    root             5984 Jun 30 16:26 /sbin/mpath_prio_netapp

-rwxr-xr-x    1 root    root             3284 Jun 30 16:26 /sbin/mpath_prio_random

-rwxr-xr-x    1 root    root             4184 Jun 30 16:26 /sbin/mpath_prio_tpc

-rwxr-xr-x    1 root    root           121888 Jun 30 16:26 /sbin/multipath

-rwxr-xr-x    1 root    root           146996 Jun 30 16:26 /sbin/multipathd

drwxr-xr-x    2 root    root                0 Jun 30 16:26 /usr/share/doc/packages/multipath-tools

-rw-r--r--    1 root    root               49 Nov 11  2005 /usr/share/doc/packages/multipath-tools/AUTHOR

-rw-r--r--    1 root    root            25284 Nov 11  2005 /usr/share/doc/packages/multipath-tools/COPYING

-rw-r--r--    1 root    root              195 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/ChangeLog

-rw-r--r--    1 root    root               15 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/README

-rw-r--r--    1 root    root             9238 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/multipath.conf.annotated

-rw-r--r--    1 root    root             1499 Jun 30 16:25 /usr/share/doc/packages/multipath-tools/multipath.conf.synthetic

-rw-r--r--    1 root    root              424 Jun 30 16:26 /usr/share/man/man8/devmap_name.8.gz

-rw-r--r--    1 root    root              544 Jun 30 16:26 /usr/share/man/man8/kpartx.8.gz

-rw-r--r--    1 root    root             2048 Jun 30 16:26 /usr/share/man/man8/mpath_prio_alua.8.gz

-rw-r--r--    1 root    root              979 Jun 30 16:26 /usr/share/man/man8/multipath.8.gz

-rw-r--r--    1 root    root              489 Jun 30 16:26 /usr/share/man/man8/multipathd.8.gz

drwx------    2 root    root                0 Jun 30 16:26 /var/cache/multipath

 

 

小技巧

存储添加映射或者做了修改,主机不用重新启动的方法

  echo 1 > /sys/class/fc_host/host1/issue_lip

  echo 1 > /sys/class/fc_host/host2/issue_lip

  echo "- - -" > /sys/class/scsi_host/host1/scan

  echo "- - -" > /sys/class/scsi_host/host2/scan

 

重启服务,让配置文件生效的方法:

   1.     Stop the multipathd service.

   2.     Clear old multipath bindings by entering

/sbin/multipath -F

   3.      Create new multipath bindings by entering

/sbin/multipath -v2 -l

Start the multipathd service. //更改配置文件后需要做上面的操作才可以让配置文件的更改生效。

 

如果连接一切都正常,但是suse在操作系统下看不到磁盘。这时可能需要重新启动存储系统。

<!--