Red Hat Training

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

4.5. 配置檔案裝置

表格 4.3, “裝置屬性” 顯示了 multipath.conf 配置檔案的 devices 部份中,您可為各個儲存裝置所設定的屬性。這些屬性會由 DM Multipath 所使用,除非它們被(包含了裝置的路徑所屬的)multipath.conf 配置檔案的 multipaths 一節中所指定的屬性覆寫。這些屬性會蓋過設定於 multipath.conf 檔案的 defaults 一節中的屬性。
就預設值,許多支援 multipath 的裝置皆包含在一個 multipath 配置中。欲取得更多有關於預設配置值(包括受支援的裝置)上的相關資訊,請執行下列指令之一。
# multipathd show config
# multipath -t 
您也許不用修改這些裝置的值,但如果您打算修改的話,您可覆寫這些預設值,方法是在配置檔案中為一項裝置寫入一條項目,覆蓋過這些值。您可從 multipathd show config 指令顯示的輸出複製某個裝置的裝置配置預設值,並覆寫您所希望改變的值。
若要在配置檔案的本節中,新增一項就預設值不會自動配置的裝置,您需要設定 vendorproduct 參數。您可以尋找 /sys/block/device_name/device/vendor/sys/block/device_name/device/model,以取得這些值,其中 device_name 代表需 multipath 的裝置,如以下範例所示:
# cat /sys/block/sda/device/vendor
WINSYS  
# cat /sys/block/sda/device/model
SF2372
需指定的額外參數取決於您的裝置。若裝置為 active/active,那麼您一般不需要設置額外的參數。您可能需要將 path_grouping_policy 設為 multibus。其它您可能會需要設置的參數包括 no_path_retryrr_min_io,如〈表格 4.3, “裝置屬性”〉中所述。
若裝置為 active/passive,但會自動將 I/O 切換至 passive 路徑,那麼您便需要將檢查功能改變為不會發送 I/O 至路徑,以測試它是否能成功運作(否則,您的裝置將會持續進入備援狀態)。這意味著您幾乎總是要將 path_checker 設為 tur;這對所有支援 Test Unit Ready 指令的 SCSI 裝置(大部分皆支援)來說皆通用。
若裝置需要特殊的指令來切換路徑,那麼為這項裝置配置 multipath,便需要硬體 kernel 處理模組。目前可用的硬體處理程式為 emc。若這對於您的裝置來說不夠用,您可能無法為裝置配置 multipath。

表格 4.3. 裝置屬性

屬性描述
vendor 指定儲存裝置的製造商名稱,供 device 屬性使用;例如 COMPAQ
product 指定 device 屬性所使用的儲存裝置之產品名稱,例如 HSV110 (C)COMPAQ
revision 指定儲存裝置的產品修訂識別子。
product_blacklist 指定常規表示式,藉由產品名稱將裝置納入黑名單。
hardware_handler
指定用來在切換路徑群組或處理 I/O 錯誤時,進行硬體特屬動作的模組。可能的值包含了:
1 emc:EMC 儲存裝置陣列的硬體處理程式。
1 alua:SCSI-3 ALUA 陣列的硬體處理程式。
1 hp_sw:Compaq/HP 控制器的硬體處理程式。
1 rdac:LSI/Engenio RDAC 控制器的硬體處理程式。
path_grouping_policy
指定預設路徑群組政策,以套用至未指定的 multipath。可用的值包含了:
failover = 每個優先群組一條路徑
multibus = 所有合於規定的路徑歸類在一個優先群組
group_by_serial = 每個偵測到的序號一個優先群組
group_by_prio = 每個路徑優先值一個優先群組
group_by_node_name = 每個目標節點名稱一個優先群組
path_selector
指定用來決定下一項 I/O 作業時,該使用何路徑的預設演算法則。有效的值包含了:
round-robin 0:在路徑群組中的所有路徑之間進行循環,並將相同的 I/O 數量傳送至各個路徑。
queue-length 0:將下個 I/O 量傳送至含有最少未處理之 I/O 請求數量的路徑。
service-time 0:將下個 I/O 量傳送至含有最短預估服務時間的路徑,這是透過將未處理的 I/O 總數,除以各個路徑的傳輸量來取得的。
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 的磁區。
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 會繼續如常使用其配置的硬體處理程式。
pg_init_retries n:重試路徑群組的初始化過程,最多 n 次,其中 1 <= n <= 50。
pg_init_delay_msecs n:路徑群組初始化重試之間,等待 n 毫秒,其中 0 <= n <= 60000。
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 儲存裝置陣列產生路徑優先權。
failback
管理路徑群組的容錯回復。
immediate 值可指定即刻容錯回復至包含了已啟用路徑的最高優先權之路徑群組。
manual 這個值指定容錯回復不會即刻發生,只有在運算子干預時,容錯回復才會發生。
followover 值指定當某個路徑群組中的第一條路徑啟用時,自動容錯回復便會進行。這會避免當有個節點請求容錯回復時,另一個節點自動進行容錯回復。
超過零的數值表示遞延的容錯回復,單位為秒數。
rr_weight 如果設為 priorities,那麼與其在調用 path_selector 以選擇路徑之前發送 rr_min_io 請求至一條路徑上,此請求數量會取決於 rr_min_io 乘以路徑的優先值,如 prio 函式所決定。若設為了 uniform,所有路徑的權重皆會相等。
no_path_retry
這個屬性是用數字表示,它指定了系統在停用佇列之前,應試圖使用失效路徑的次數。
fail 表示立即失效,不進入佇列。
queue 值代表排程不應停止,直到路徑修正為止。
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。
fast_io_fail_tmo 在一個 FC 遠端連接埠上偵測到問題後,SCSI 層在使該遠端連接埠上的裝置 I/O 失效前,所會等待的秒數。這個值應比 dev_loss_tmo 的值還要小。把這設為 off 將會停用逾時。
dev_loss_tmo 當在一個 FC 遠端連接埠上偵測到錯誤時,SCSI 層將該連接埠由系統移除之前,所等待的秒數。將此設為無限制,會將其設為 2147483647 秒,或 68 年。
flush_on_last_del 若設為 yes,當連上裝置的最後一條路徑被刪除時,multipathd daemon 便會停用佇列功能。
user_friendly_names 如果設為 yes,這表示系統應該使用 /etc/multipath/bindings 檔案來指定一個永續性且獨一無二的別名供 multipath 使用,格式為 mpathn。若設為 no,則表示系統應使用 WWID 來作為 multipath 的別名。無論是何種情況,在此所進行的設定,會被您在配置檔案的 multipaths 部份中,所指定的任何裝置特屬別名取代。預設值為 no
retain_attached_hw_handler 如果此參數設為 yes,並且 SCSI 層已經設為路徑裝置的硬體處理程式,那麼 multipath 不會強迫裝置使用 multipath.conf 檔案所指定的 hardware_handler。如果 SCSI 層並未連結硬體處理程式,multipath 會繼續如常使用其配置的硬體處理程式。預設值為 no
detect_prio 若設為 yes,multipath 會先檢查裝置是否支援 ALUA,如果支援的話,multipath 會自動指定裝置為 alua 優先程式。如果裝置不支援 ALUA,multipath 會如常決定優先程式。
delay_watch_checks (Red Hat Enterprise Linux Release 7.2 與更新版本)若設為了大於零的值,multipathd daemon 將會以指定的檢查次數來監視近期成為有效的路徑。若這些路徑在被監視時再度失效,當它們下次成為有效時,在通過連續的檢測(透過 delay_wait_checks 指定)前,都不會再被使用。這能避免信賴度低的路徑在重新啟用後被即刻使用。
delay_wait_checks (Red Hat Enterprise Linux 發行版 7.2 與更新版本)若設為一個大於 0 的值,當一個近期重新啟用的裝置在指定次數的檢測(透過 delay_watch_checks 指定)進行中再次失效時,下次它再重新啟用時便會被標記和延緩,並且在它通過了 delay_wait_checks 中所指定得檢測次數之前,它將不會被使用。
deferred_remove若設為 yes,當最後的路徑裝置被移除後,multipathd 將會進行一項延期的移除,而非正常的移除程序。這可確保當進行正常移除時,若有 multipath 裝置正被使用中而移除程序失敗的情況下,裝置將會在最後一個使用者關閉裝置時被自動移除。
以下範例顯示了 multipath 配置檔案中,device 一節。
#	}
#	device {
#		vendor			"COMPAQ  "
#		product			"MSA1000         "
#		path_grouping_policy	multibus
#		path_checker		tur
#		rr_weight		priorities
#	}
#}