很多存储厂商都有自己的多路径软件,像EMC的powerpath、华为有UltraPath,不过考虑到通用性和兼容性可能还是系统自带的multipath使用的是最多的。multipath除了兼容性比较好,配置也比较简单。

multipath.conf的配置分为:defaults、blacklist、blacklist_exceptions、devices、multipaths几部分。defaults一般做全局性的配置,比如轮询策略、使用名称、权重策略等;blacklist一般做屏蔽的设备列表(不在多路径的输出中显示);blacklist_exceptions用于配置屏蔽例外的,一般也不做配置;devices项是针对不对品牌和型号的设备进行的调优配置,需要注意blacklist项里有也device配置,不过是针对屏蔽策略的;multipaths是最关键部分,一般只配置别名、wwid。

一、multipath.conf配置

multipath.conf的默认配置一般如下:

 1defaults {
 2  polling_interval 10
 3# alias_prefix "mpath"
 4  user_friendly_names no
 5}
 6blacklist {
 7  # black local disk
 8  wwid  3600508b1001c27907eca5c5df3253752
 9  wwid  3600508b1001caad1587d7d457eaf7045
10  devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
11  devnode "^hd[a-z]"
12  devnode "^cciss"
13#       device {
14#               vendor "IBM"
15#               product "S/390.*"
16#       }
17}
18#devices {
19#       device {
20#               vendor "(COMPAQ|HP)"
21#               product "(MSA|HSV)1.0.*"
22#               path_grouping_policy "group_by_prio"
23#               path_checker "hp_sw"
24#               features "1 queue_if_no_path"
25#               hardware_handler "1 hp_sw"
26#               prio "hp_sw"
27#               rr_weight "uniform"
28#               no_path_retry 12
29#               rr_min_io 100
30#       }
31#       device {
32#               vendor "SUN"
33#               product "SUN_6180"
34#               path_grouping_policy "group_by_prio"
35#               path_checker "rdac"
36#               features "0"
37#               hardware_handler "1 rdac"
38#               prio "rdac"
39#               failback "immediate"
40#               rr_weight "uniform"
41#               no_path_retry "queue"
42#               rr_min_io 1000
43#               rr_min_io_rq 1
44#       }
45#}
46multipaths {
47        multipath {
48           wwid 360060e80059559000000955900000400
49           alias mpatha
50        }
51        multipath {
52           wwid 360060e80059559000000955900000401
53           alias mpathb
54        }
55}

二、重载多路径配置

可以使用如下命令进行重载配置:

1# multipath -F
2# multipath -v4
3• Or
4# service multipathd reload
5# systemctl reload multipathd

执行完成后,可以通过如下命令查看多路径状态:

1[root@node11 ~]# multipath -ll
2mpatha (36001405a9666f29ccff4826813817c21) dm-3 LIO-ORG ,vdb
3size=5.0G features='0' hwhandler='0' wp=rw
4|-+- policy='service-time 0' prio=1 status=active    #在线且正在使用的链路
5| `- 2:0:0:0 sdb 8:16 active ready running
6`-+- policy='service-time 0' prio=1 status=enabled    #在线备用链路
7  `- 3:0:0:0 sda 8:0  active ready running

三、负责均衡配置

默认情况下,在默认配置中不匹配的型号,都使用的是主备模式,像一些国外比较知名的存储可以在defults配置中找到其默认是有策略的,所以可能查看到的是多主负载均衡模式。多路径负载均衡算法path_selector 有如下这些:

  • round-robin 0 #轮询
  • queue-length 0 #最少连接
  • service-time 0 #根据未完成的IO数量选择下一组IO的路径

负载均衡配置既可以在全局中配置,也可以在单条链路中配置,这里以单条链路配置为例,如下:

 1multipaths {
 2       multipath {
 3               wwid                    36001405a9666f29ccff4826813817c21 #通过scsi_id获得
 4               alias                   data_disk    #磁盘别名
 5               path_grouping_policy    multibus
 6               path_selector           "round-robin 0"    #负载均衡模式
 7               failback                manual
 8               rr_weight               priorities
 9               no_path_retry           5
10       }
11}

重启后再查看链路情况如下:

1[root@node11 ~]# multipath -ll
2data_disk (36001405a9666f29ccff4826813817c21) dm-3 LIO-ORG ,vdb
3size=5.0G features='1 queue_if_no_path' hwhandler='0' wp=rw
4`-+- policy='round-robin 0' prio=1 status=active
5  |- 4:0:0:0 sda 8:0  active ready running
6  `- 5:0:0:0 sdb 8:16 active ready running