Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3. 配置檔案的預設值

/etc/multipath.conf 配置檔案包括 defaults(預設值)一節,可以將 user_friendly_names 設為 yes,語法如下。
defaults {
        user_friendly_names yes
}
這會覆蓋 user_friendly_names 參數的預設值。
這配置檔案包括了所有預設設定的範本。這一部份如下所示,已被設為註解。
#defaults {
#       polling_interval        10
#       path_selector           "round-robin 0"
#       path_grouping_policy    multibus
#       uid_attribute           ID_SERIAL
#       prio                    alua
#       path_checker            readsector0
#       rr_min_io               100
#       max_fds                 8192
#       rr_weight               priorities
#       failback                immediate
#       no_path_retry           fail
#       user_friendly_names     yes
#}
若要覆蓋任何參數的預設值,您可將此範本裡的相關資訊複製至 defaults 一節裡,並拿掉註解符號。舉例來說,要覆蓋 path_grouping_policy 的原有參數 multibus,使其成為 failover,請將範本中相對應的部份複製至配置檔案的 defaults 一節裡,拿掉註解符號,如同以下顯示:
defaults {
        user_friendly_names     yes
        path_grouping_policy    multibus
}
表格 4.1, “Multipath 配置預設值” 描述了 multipath.conf 配置檔案中,defaults 一節裡所設定的屬性。DM Multipath 會使用這些值,除非它們被 multipath.conf 檔案中的 devicesmultipaths 兩節裡所指定的屬性覆蓋過去。

表格 4.1. Multipath 配置預設值

屬性描述
polling_interval 以秒為單位指定兩條路徑之間的檢查時間間隔。對於正確運作的路徑來說,檢查程序之間的時間間隔會逐漸增加(4 * polling_interval)。預設值為 5。
multipath_dir 存放動態共享物件的目錄。預設值根據系統而定,一般為 /lib/multipath
find_multipaths
定義用來設定 multipath 裝置的模式。若此參數設為 yes 的話,multipath 將不會試圖為各個非黑名單中的路徑建立裝置。multipath 只會在滿足了下列三種條件之一的情況下,建立裝置:
- 至少兩個擁有相同 WWID、非黑名單中的路徑。
- 使用者透過 multipath 指令指定裝置,以手動式強制建立裝置。
- 一條擁有與先前建立之 multipath 裝置相同 WWID 的路徑。每當有個 multipath 裝置在設置了 find_multipaths 的情況下被建立時,multipath 便會記得該裝置的 WWID,如此一來每當它看見含有該 WWID 的路徑時,它便會自動地再次建立該裝置。這能讓 multipath 自動地選擇正確的路徑,在無須編輯 multipath 黑名單的情況下,製成 multipath 裝置。若您先前在未設置 find_multipaths 參數的情況下建立了 multipath 裝置,欲取得相關程序指示,請參閱〈節 4.2, “配置檔案的黑名單”〉。
預設值為 no。然而,從 Red Hat Enterprise Linux 7 起,mpathconf 所建立的預設 multipath.conf 檔案將會啟用 find_multipaths
verbosity 預設資料詳細等級。愈大的值便會增加資料詳細度的等級。有效的等級範圍為 0 到 6 之間。預設值為 2
path_selector
指定用來決定下一項 I/O 作業時,該使用何路徑的預設演算法則。有效的值包含了:
round-robin 0:在路徑群組中的所有路徑之間進行循環,並將相同的 I/O 數量傳送至各個路徑。
queue-length 0:將下個 I/O 量傳送至含有最少未處理之 I/O 請求數量的路徑。
service-time 0:將下個 I/O 量傳送至含有最短預估服務時間的路徑,這是透過將未處理的 I/O 總數,除以各個路徑的傳輸量來取得的。
預設值為 round-robin 0
path_grouping_policy
指定預設路徑群組政策,以套用至未指定的 multipath。可用的值包含了:
failover:每個優先群組 1 條路徑。
multibus:1 個優先群組中的所有有效路徑。
group_by_serial:每個偵測到的序號 1 個優先群組。
group_by_prio:每個路徑優先值 1 個優先群組。優先權取決於被指定為全域、各別控制器,或各別 multipath 選項的 callout 程式。
group_by_node_name:一個目標節點名稱 1 個優先群組。目標節點名稱可由 /sys/class/fc_transport/target*/node_name 中取得。
預設值為 failover
prio
指定欲調用的預設函式,以取得路徑優先值。舉例來說,SPC-3 中的 ALUA 位元提供了一組可供利用的 prio 值。可使用的值包含了:
const:將所有路徑的優先值設為 1。
emc:為 EMC 陣列產生路徑優先權。
alua:根據 SCSI-3 ALUA 設定產生路徑優先權。
ontap:為 NetApp 陣列產生路徑優先權。
rdac:為 LSI/Engenio RDAC 控制器產生路徑優先權。
hp_sw:為 active/standby 模式的 Compaq/HP 控制器產生路徑優先權。
hds:為 Hitachi HDS Modular 儲存裝置陣列產生路徑優先權。
預設值為 const
features
multipath 裝置的預設額外特性,格式為:"number_of_features_plus_arguments feature1 ..."。
features 可能的值為:
唯一存在的功能為 queue_if_no_path,這與將 no_path_retry 設為 queue 相同。欲查看使用此功能時所可能發生的問題,請參閱〈節 5.7, “queue_if_no_path 功能上的問題”〉。
retain_attached_hw_handler:如果此參數設為 yes,並且 SCSI 層已經設為路徑裝置的硬體處理程式,那麼 multipath 不會強迫裝置使用 multipath.conf 檔案所指定的 hardware_handler。如果 SCSI 層並未連結硬體處理程式,multipath 會繼續如常使用其配置的硬體處理程式。預設值為 no
pg_init_retries n:重試路徑群組的初始化過程,最多 n 次,其中 1 <= n <= 50。
pg_init_delay_msecs n:路徑群組初始化重試之間,等待 n 毫秒,其中 0 <= n <= 60000。
path_checker
指定用來判斷路徑狀態的預設方式。可用的值包含了:
readsector0:讀取裝置的第一個磁區。
tur:發送一項 TEST UNIT READY 指令至裝置。
emc_clariion:查詢 EMC Clariion 專屬的 EVPD 分頁 0xC0 以判斷路徑。
hp_sw:檢查含有 Active/Standby 軔體之 HP 儲存裝置陣列的路徑狀態。
rdac:檢查 LSI/Engenio RDAC 儲存控制器的路徑狀態。
directio:讀取第一個含有直接 I/O 的磁區。
預設值為 directio
failback
管理路徑群組的容錯回復。
immediate 值可指定即刻容錯回復至包含了已啟用路徑的最高優先權之路徑群組。
manual 這個值指定容錯回復不會即刻發生,只有在運算子干預時,容錯回復才會發生。
followover 值指定當某個路徑群組中的第一條路徑啟用時,自動容錯回復便會進行。這會避免當有個節點請求容錯回復時,另一個節點自動進行容錯回復。
超過零的數值表示遞延的容錯回復,單位為秒數。
預設值為 manual
rr_min_io 指定欲路由轉送至某路徑的 I/O 請求數量(在切換至目前路徑群組中的下個路徑之前)。這項設定僅適用於執行比 2.6.31 還要舊的 kernel 的系統上。較新的系統應使用 rr_min_io_rq。預設值為 1000。
rr_min_io_rq 使用基於請求的 device-mapper-multipath 來指定欲路由轉送至某路徑的 I/O 請求數量(在切換至目前路徑群組中的下個路徑之前)。這項設定應使用於執行最新 kernel 的系統上。在執行比 2.6.31 還要舊的 kernel 的系統上,請使用 rr_min_io,預設值為 1。
rr_weight 如果設為 priorities,那麼與其在調用 path_selector 以選擇下個路徑之前發送 rr_min_io 請求至某個路徑,這項請求數量會相當於 rr_min_io 乘以路徑的優先順序;這乃透過 prio 功能所決定。若設為 uniform,所有的路徑皆會擁有相等的權重。預設值為 uniform
no_path_retry
這個屬性是用數字表示,它指定了系統在停用佇列之前,應試圖使用失效路徑的次數。
fail 表示立即失效,不進入佇列。
queue 值代表排程不應停止,直到路徑修正為止。
預設值為 0。
user_friendly_names 如果設為 yes,這表示系統應該使用 /etc/multipath/bindings 檔案來指定一個永續性且獨一無二的別名給 multipath 使用,格式為 mpathn。若設為 no,則表示系統應使用 WWID 來作為 multipath 的別名。無論是何種情況,在此所進行的設定,會被您在配置檔案的 multipaths 部份中,所指定的任何裝置特屬別名取代。預設值為 no
queue_without_daemon 若設為了 no,當 multipathd daemon 關閉時,它將會停用所有裝置的排程。預設值為 no
flush_on_last_del 若設為 yes,當連上裝置的最後一條路徑被刪除時,multipathd daemon 便會停用佇列功能。預設值為 no
max_fds 設置 multipath 以及 multipathd daemon 所能開啟的最大數量 open file descriptor。這與 ulimit -n 指令相等。由 RHEL 6.3 發行版起,預設值乃 max,並透過 /proc/sys/fs/nr_open 來將系統設為最大值。在較早的發行版中,若未進行這項設置,open file descriptor 的最大值將會由調用程序取得;一般乃 1024。若該數量大於 1024,為安全起見,應設為路徑的最大值加 32。
checker_timeout 使優先權設定程式與路徑檢查程式發出 SCSI 指令和明確逾時(秒)的逾時功能。預設值乃透過 sys/block/sdx/device/timeout 取得。
fast_io_fail_tmo 當在一個 FC 遠端連接埠上偵測到錯誤時,SCSI 層在傳輸失效 I/O 給該遠端連接埠上的裝置之前,所等待的秒數。此數值應比 dev_loss_tmo 的值還要小。若將此設為 off 將會停用逾時功能。預設值是由 OS 所決定的。
dev_loss_tmo 當在一個 FC 遠端連接埠上偵測到錯誤時,SCSI 層將該連接埠由系統移除之前,所等待的秒數。將此設為無限制,會將其設為 2147483647 秒,或 68 年。預設值乃透過 OS 所決定的。
hwtable_string_match
multipath.conf 檔案的 devices 部分中的各項裝置配置皆會建立自己的裝置配置,或是修改內建的裝置配置。若將 hwtable_string_match 設為 yes,而若使用者裝置配置中的供應商、產品以及修訂字串,皆與內建裝置配置的字串完全相符的話,內建配置將由使用者配置中的選項進行修改。否則,使用者的裝置配置將會被視為新的配置。若 hwtable_string_match 設為 no,則會使用一項正規表示式比對來替代字串比對。
hwtable_string_match 就預設值會設為 no
retain_attached_hw_handler 如果此參數設為 yes,並且 SCSI 層已經設為路徑裝置的硬體處理程式,那麼 multipath 不會強迫裝置使用 multipath.conf 檔案所指定的 hardware_handler。如果 SCSI 層並未連結硬體處理程式,multipath 會繼續如常使用其配置的硬體處理程式。預設值為 no
detect_prio 若設為 yes,multipath 會先檢查裝置是否支援 ALUA,如果支援的話,multipath 會自動指定裝置為 alua 優先程式。如果裝置不支援 ALUA,multipath 會如常決定優先程式。預設值為 no
reload_readwrite 若設為 yesmultipathd daemon 會監聽路徑裝置的變更事件,如果裝置變成可讀寫,就會重新載入 multipath 裝置。
uid_attribute 提供一項獨特的路徑識別子。預設值為 ID_SERIAL
force_sync (適用 RHEL 7.1 或以上)如果設為 yes,這會避免路徑檢查程式在非同步模式下執行。
delay_watch_checks (Red Hat Enterprise Linux Release 7.2 與更新版本)若設為了大於零的值,multipathd daemon 將會以指定的檢查次數來監視近期成為有效的路徑。若這些路徑在被監視時再度失效,當它們下次成為有效時,在通過連續的檢測(透過 delay_wait_checks 指定)前,都不會再被使用。這能避免信賴度低的路徑在重新啟用後被即刻使用。預設值為 no
delay_wait_checks(Red Hat Enterprise Linux 發行版 7.2 與更新版本)若設為一個大於 0 的值,當一個近期重新啟用的裝置在指定次數的檢測(透過 delay_watch_checks 指定)進行中再次失效時,下次它再重新啟用時便會被標記和延緩,並且在它通過了 delay_wait_checks 中所指定得檢測次數之前,它將不會被使用。預設值為 no
ignore_new_boot_devs(Red Hat Enterprise Linux 發行版 7.2 與更新版本)若設為了 yes,當節點早期開機時依然在 initramfs 檔案系統中的時候,multipath 不會建立任何 WWID 不存在 /etc/multipath/wwidsinitramfs copy 中的裝置。這項功能可用來在安裝時進行啟動,否則 multipath 將會試圖在當時透過 udev 規則顯示、但未宣告的裝置上自行進行設置。這項參數可設為 yesno。若未設置的話,預設值將會是 no
retrigger_triesretrigger_delay(Red Hat Enterprise Linux 發行版 7.2 與更新版本)若 udev 無法完整處理原始的 uevent 而使得 multipath 無法使用裝置,retrigger_triesretrigger_delay 參數會被結合使用來令 multipathd 重新啟動這些 uevent。若裝置未完整設定,retrigger_tries 參數可被用來設置 multipath 嘗試重新啟動一項 uevent 的次數。retrigger_delay 參數則用來設置重新嘗試之間的間隔(秒)。這兩項選項皆接受大於或等於零的數字。將 retrigger_tries 參數設為零會停用重新嘗試。將 retrigger_delay 參數設為零會使 uevent 在下個路徑檢查的循環中重新發送。若未設置 retrigger_tries 參數,它將會被預設為 3。若未設置 retrigger_delay 參數,它則會被預設為 10。
new_bindings_in_boot(Red Hat Enterprise Linux 發行版 7.2 與更新版本)new_bindings_in_boot 這個參數主要用來防止 multipath 在 initramfs 檔案系統中提供一組 user_friendly_name(早已由正規檔案系統中的綁定檔案所提供),這會產生問題因為 initramfs 檔案系統中的 user_friendly_names 綁定僅會在 initramfs 檔案系統重新建立時,才會與正規檔案系統中的綁定同步。當此參數設為 no 時,multipath 將不會在 initramfs 檔案系統中建立新的綁定。若一項裝置在 /etc/multipath/bindingsinitramfs 副本中不存在綁定,multipath 將會使用其 WWID 作為別名,而非提供一組 user_friendly_name。在啟動程序後續進行時,當節點掛載了正規檔案系統後,multipath 便會提供一組 user_friendly_name 給裝置。此參數能設為 yesno。若未設置的話,預設值將會是 no
deferred_remove若設為 yes,當最後的路徑裝置被移除後,multipathd 將會進行一項延期的移除,而非正常的移除程序。這可確保當進行正常移除時,若有 multipath 裝置正被使用中而移除程序失敗的情況下,裝置將會在最後一個使用者關閉裝置時被自動移除。預設值為 no
log_checker_err若設為 once,multipathd 便會以等級 2 的詳細程度紀錄第一項路徑檢查程式錯誤。之後所有的錯誤皆會以等級 3 的詳細程度紀錄,直到裝置復原。若設為 always,multipathd 總是會以等級 2 的詳細程度紀錄路徑檢查程式錯誤。預設值為 always