默认情况下,multipath已经支持大部分常见的存储型号(可见multipath.conf.defaults),但不同的multipath版本可能都有些不同。这时,建议参考存储的官方文档,但有时候,同一台机器上如果连接了一个以上的存储时,可能默认规则并不完全适用。这时我们可以给特定的存储定制多路径符合的策略。
配置文件的模板默认位于/usr/share/doc/device-mapper-multipath-x.x.x/multipath.conf(x为multipath的实际版本号),配置multipath配置文件时,可以将该文件复制于/etc/multipath.conf,然后,在进行定制配置。
配置Linux (suse and redhat;redhat7以上不适用,详见下一篇)
vi /etc/multipath.conf
defaults { user_friendly_names yes polling_interval 30 } devices { device { vendor "NETAPP" product "LUN.*" path_grouping_policy "group_by_prio" path_checker "tur" features "3 queue_if_no_path pg_init_retries 50" hardware_handler "1 alua" prio "alua" failback "immediate" rr_weight "uniform" rr_min_io 128 dev_loss_tmo "infinity" retain_attached_hw_handler "yes" detect_prio "yes" path_selector "round-robin 0" no_path_retry 18 } } blacklist { device { vendor ".*" } } blacklist_exceptions { device { vendor "^NETAPP" } }
一、配置文件字段
1)defaults:全局属性的默认设置。
2)multipaths:多路径相关配置
3)devices:存储设备相关配置。
4)blacklist:黑名单,multipath会忽略黑名单中的设备。
5)blacklist_exceptions:免除黑名单,加入黑名单内,但包含在这里的设备不会被忽略,是多路径管理的设备列表。
二、配置文件字段详细
1、defaults可用属性
1)polling_interval:路径检查的时间间隔,单位秒(s)。
2)max_polling_interval:路径检查的最大时间间隔,默认为polling_interval的4倍,单位秒(s)。
3)multipath_dir:多路径共享库的路径,具体与系统相关,默认为/lib/multipath或/lib64/multipath。
4)find_multipaths:默认值no,这将为黑名单外的所有设备创建多路径设备。如置为yes,则将为3种场景创建多路径设备:
不在黑名单的两个路径的wwid相同;用户手动强制创建;一个路径的wwid与之前已经创建的多路径设备相同。
5)verbosity:信息输出等级,最低为0,最高为6,默认为2。
6)path_selector:路径选择算法,其中,“round-robin 0”表示在多个路径间不断循环;“queue-length 0”表示选择当前处理IO数最少的路径;
“service-time 0”表示选择IO服务时间最短的路径。
7)path_grouping_policy:路径分组策略,其中,“failover” 表示一条路径一个组(默认值);“multibus”表示所有路径在一个组;
“group_by_serial”表示根据序列号分组;“group_by_prio”表示根据优先级分组;“group_by_node_name”表示根据名字分组。
8)uid_attribute:用udev的哪个属性唯一标识一个设备,默认值为ID_SERIAL。
9)prio:路径优先级获取方法,其中,“const”返回1(默认值);“emc”为emc盘阵生成优先级;“alua”基于SCSI-3 ALUA配置生成优先级;
“ontap”为NetAPP盘阵生成优先级;“rdac”为LSI/Engenio/NetApp E-Series RDAC控制器生成优先级;“hp_sw”根据Compaq/HP控制器
active/standby模式生成优先级;
“hds”为日立HDS模块化阵列生成优先级;“random”随机生成优先级,其值在1到10间;“weightedpath”根据正则表达式及prio_args
参数值生成优先级。
10)prio_args:计算优先级函数的参数。
11)features:指定使用Device Mapper的特性,其中,“queue_if_no_path”表示没有可用路径时,将请求加入队列;“no_partitions”表示禁止
使用kpartx生成分区。
12)path_checker:路径检查方法,其中,“readsector0”表示通过读取设备的第一扇区来决定路径状态,已废弃,用directio替代;“tur”表示
运行“TEST UNIT READY”命令来决定路径状态;“emc_clariion”表示执行“EMC Clariion specific EVPD page 0xC0”来决定路径的状态;
“hp_sw”表示检查惠普Active/Standby盘阵;
“rdac”表示检查“LSI/Engenio/NetApp E-Series RDAC”存储控制器的状态;“direction”表示用DirectIO读取设备的第一个扇区。
13)failback:恢复路径的方法,其中,“Immediate”表示立即恢复到包含活动路径的高优先级路径组;“manual”表示手动恢复(默认值);
“followover”表示只有路径组的第一条路径可用时才恢复;“values>0”表示延迟恢复。
14)rr_min_io:切换到当前路径组中下一条路径前进行的IO数,仅用于2.6.31的核心版本号,默认值为1000。
15)rr_min_io_rq:切换到当前路径组中下一条路径前进行IO数,仅用于2.6.31及以后的核心版本号,默认值为1。
16)no_path_retry:禁用队列前系统重试的次数,“fail”表示直接返回错误,“queue”表示全部加入队列,默认值为0。
17)user_friendly_names:如为yes,则用/etc/multipath/bindings中的设置命名;如为no,则使用wwid命名(可被multipaths中的设置覆盖),
默认值为no。
18)max_fds:multipathd和multipath可打开的最大文件描述符数。
19)checker_timeout:路径检查的超时时间,单位秒(s),默认值为/sys/block/sd<x>/device/timeout值。
20)fast_io_fail_tmo:SCSI IO错误超时,应比dev_loss_tmo小,为off则禁用超时。
21)dev_loss_tmo:SCSI设备移除超时,Linux下的默认为为300,单位秒(s)。
22)queue_without_daemon:如置为no,如multipathd没启动,则禁止所有设备的IO加入队列。
23)bindings_file:设置了user_friendly_names时,名称绑定文件的路径,默认值为/etc/multipath/bindings。
24)wwids_file:wwids跟踪文件路径,默认为/etc/multipath/wwids。
25)log_checker_err:路径检查出错时的日志记录方式,默认为always。
26)reservation_key:为mpathpersist命令指定的key。
27)retain_attached_hw_handler:是否继续使用hardware_handler,默认为no。
28)detect_prio:如置为yes,则首先尝试使用alua检测,默认为no。
29)hw_str_match:如置为yes,则优先使用字符串匹配名称、厂商等信息,默认为no。
30)force_sync:如置为yes,则强制使用同步模式检查路径,默认为no。
31)deferred_remove:如置为yes,则延迟删除没有路径的设备,默认为no。
32)config_dir:指定配置文件的目录,如不为“”,则按照字母排序搜索目录中的*.conf文件,像使用/etc/multipath.conf一样对其进行读取,
默认为/etc/multipath/conf.d。
33)delay_watch_checks:如大于0,则只有连续delay_watch_checks检查路径有效时,才认为有效,默认为no。
34)delay_wait_checks: 如大于0,经过delay_watch_check检查有效后,延迟delay_wait_checks次检查后,才正式重新启用,默认为no。
35)missing_uev_msg_delay:当一个新的设备被创建后,在延迟missing_uev_msg_delay秒后开始接受udev信息,默认值是30。
2、multipaths配置,multipaths单独配置单条路径,每条路径单独使用multipath子节,其可包含如下属性:
1)wwid:路径WWID(必选),可用命令/lib/udev/scsi_id -g -u /dev/sdX获取。
2)alias:设备别名。
3)path_grouping_policy
4)path_selector
5)prio
6)prio_args
7)failback
8)rr_weight
9)flush_on_last_del
10)no_path_retry
11)rr_min_io
12)rr_min_io_q
13)features
14)reservation_key
15)deferred_remove
16)delay_watch_checks
17)delay_wait_checks
3、devices配置,devices节中每个device子节用于描述一个设备,其主要属性如下:
1)vendor:生产商(必选)。
2)product:产品型号。
3)revision:版本号。
4)product_blacklist:产品型号黑名单。
5)alias_prefix:设备名称前缀,默认为mapth。
6)hardware_handler:硬件相关操作的型号,主要有:
"emc":Hardware handler for EMC storage arrays.
"rdac":Hardware handler for LSI/Engenio/NetApp E-Series RDAC storage controller.
"hp_sw":Hardware handler for Compaq/HP storage arrays in active/standby mode.
"alua":Hardware handler for SCSI-3 ALUA compatible arrays.
4、blacklist配置,blacklist内的设备将会被多路径忽略,有三种格式:
1)wwid后跟设备的WWID;
2)devnode后跟设备名称的正则表达式;
3)device设备描述,为一个子节(Subsection),其需包含vendor、product,详细可参考devices节的描述。
blacklist_exceptions语法与blacklist相同,表示取消对blacklist中设备的忽略。