默認情況下,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中設備的忽略。