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 {
#       udev_dir                /dev
#       polling_interval        5
#       path_selector           "round-robin 0"
#       path_grouping_policy    failover
#       getuid_callout          "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
#	prio			const
#	path_checker		directio
#	rr_min_io		1000
#	rr_weight		uniform
#	failback		manual
#	no_path_retry		fail
#	user_friendly_names	no
#}
要覆蓋任何參數的預設值,您可以複製這範本裡的相關資訊至 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 兩節裡所指定的屬性覆蓋過去。

注意

由 RHEL 6.0 發行版起,modeuid 以及 gid 參數已淘汰。device-mapper 裝置(包括 mulitpath 對映)的權限,乃透過 udev 規則設置。/usr/share/doc/device-mapper-version 中有個範本檔案名為 12-dm-permissions.rules,並且您可使用它而將它放置在 /etc/udev/rules.d 目錄中,使其生效。

表格 4.1. Multipath 配置預設值

屬性描述
polling_interval 以秒為單位指定兩條路徑之間的檢查的時間間隔。對於正確運作的路徑來說,檢查程序之間的時間間隔會逐漸增加(4 * polling_interval)。預設值為 5。
udev_dir 建立了 udev 裝置節點的目錄。預設值為 /dev
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
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
getuid_callout
指定欲調用的預設程式和引數,以取得獨一無二的路徑識別元。需要絕對路徑。
預設值為 /lib/udev/scsi_id --whitelisted --device=/dev/%n
prio
指定欲調用的預設函式,以取得路徑優先值。舉例來說,SPC-3 中的 ALUA 位元提供了一組可供利用的 prio 值。可使用的值包含了:
const:將所有路徑的優先值設為 1。
emc:為 EMC 陣列產生路徑優先權。
alua:根據 SCSI-3 ALUA 設定產生路徑優先權。
tpg_pref;根據 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.6, “queue_if_no_path 功能上的問題”〉。
retain_attached_hw_handler:(適用 RHEL 6.4 以上)如果此參數設為 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_regex_match
(適用 RHEL 6.3 以上)可控制 multipath 如何將裝置配置由配置檔案的 devices 部分,與內建的裝置配置整合。
multipath.conf 檔案的 devices 部分中的各項裝置配置皆會建立自己的裝置配置,或是修改內建的裝置配置。在先前的 RHEL 6.3 中,若使用者裝置配置中的供應商、產品以及修訂字串,皆與內建裝置配置的字串完全相符的話,內建配置將由使用者配置中的選項進行修改。否則,使用者的裝置配置將會被視為新的配置。
hwtable_regex_match 設為了 yes,則使用正規表示式來代替。供應商、產品,以及修訂字串皆屬於正規表示式。這些選項的使用者裝置配置值,會與內建的裝置配置值進行比對。這項比對與實際裝置之供應商、產品和修訂字串,以及裝置配置字串的比對方式相同,以查看裝置應使用哪項配置。若使用者的裝置配置相符,則內建配置將由使用者配置中的選項進行修改。否則,使用者的裝置配置將會被視為新的配置。
retain_attached_hw_handler (適用 RHEL 6.4 以上)如果此參數設為 yes,並且 scsi 層已經設為路徑裝置的硬體處理程式,那麼 multipath 不會強迫裝置使用 multipath.conf 檔案所指定的 hardware_handler。如果 scsi 層並未連結硬體處理程式,multipath 會繼續如常使用其配置的硬體處理程式。預設值為 no
detect_prio (適用 RHEL 6.4 以上)如果設為 yes,multipath 會先檢查裝置是否支援 ALUA,如果支援的話,multipath 會自動指定裝置為 alua 優先程式。如果裝置不支援 ALUA,multipath 會如常決定優先程式。預設值為 no
replace_wwid_whitespace (適用 RHEL 6.5 以上)如果設為 yes,所有使用此預設 getuid_callout 參數的裝置會變為納入 --replace-whitespace
reload_readwrite (適用 RHEL 6.5 以上)如果設為 yesmultipathd daemon 會聆聽路徑裝置的變更事件,如果裝置變成可讀寫,就會重新載入 multipath 裝置。
force_sync (適用 RHEL 6.6 以上)如果設為 yes,這會避免路徑檢查程式在非同步模式中執行。