7.3 多重路徑管理工具

SUSE Linux Enterprise Server 10 及更高版本中的多重路徑支援以 Linux 2.6 核心的設備對應程式多重路徑模組及 multipath-tools 使用者空間套件為基礎。使用多設備管理 (MDADM,mdadm) 公用程式可以檢視多重路徑設備的狀態。

7.3.1 設備對應程式多重路徑模組

設備對應程式多重路徑 (DM-MP) 模組為 Linux 提供了多重路徑功能。DM-MPIO 是在 SUSE Linux Enterprise Server 11 中進行多重路徑的較好解決方案。它是該產品提供的唯一一個多重路徑選項,Novell® 與 SUSE 均對其完全支援。

DM-MPIO 可自動設定多重路徑子系統的多種設定。每個設備最多可設定 8 個路徑。模組支援主動/被動 (一個主動路徑,其他均為被動路徑) 或主動/主動 (所有路徑均為主動路徑,使用輪替式負載平衡) 組態。

DM-MPIO 框架可以採用以下兩種方式進行擴充:

DM-MPIO 的使用者空間元件會自動探查路徑並進行分組,還會自動重新測試路徑,以便在先前失敗的路徑恢復正常時,能自動重新啟用該路徑。這樣會將管理員對生產環境的關注需求降到最低。

DM-MPIO 防範的是設備路徑中的失敗,而不是設備本身的失敗。如果其中一個主動路徑遺失 (例如網路卡損壞或光纖纜線被移開),則 I/O 會重新導向到其餘的路徑。如果組態為主動/被動模式,則路徑會容錯移轉到其中一個被動路徑。如果您使用的是輪替式負載平衡組態,則流量會分流到其餘的正常路徑。如果所有主動路徑都失敗,則必須喚醒非主動的次要路徑,因此需經過大約 30 秒的延遲之後才會開始容錯移轉。

如果磁碟陣列有多個儲存處理器,請確保 SAN 交換器已連線到您要存取的 LUN 所屬的儲存處理器。在大多數磁碟陣列中,所有 LUN 都屬於兩個儲存處理器,因此兩個連線都處於主動模式。

附註: 在有些磁碟陣列中,儲存陣列透過儲存處理器來管理流量,因此每次只會顯示一個儲存處理器。一個處理器為主動,另外一個為被動,直到發生了失敗。如果您連接到錯誤的儲存處理器 (路徑為被動的處理器),則可能找不到所需的 LUN,或雖然找到了 LUN,但在嘗試存取時會發生錯誤。

表 7-1 儲存陣列的多重路徑 I/O 功能

儲存陣列的功能

描述

主動/被動控制器

只有一個控制器處於主動狀態,並服務所有的 LUN。次要控制器處於待機狀態。次要控制器也會將 LUN 提供給多重路徑元件,以便作業系統瞭解備援路徑的情況。如果主要控制器失敗,則由次要控制器接管其工作並服務所有 LUN。

在某些陣列中,可將 LUN 指定給不同的控制器。將指定的 LUN 指定給要做為其主動控制器的控制器。每次當一個控制器為任何指定的 LUN 執行磁碟 I/O 時,另一個控制器就為該 LUN 保持待機狀態。另外的那個控制器也會提供路徑,但無法執行磁碟 I/O。使用該 LUN 的伺服器會連接到 LUN 的指定控制器。如果一組 LUN 的主要控制器失敗,則由次要控制器接管其工作並服務所有 LUN。

主動/主動控制器

兩個控制器共享所有 LUN 的負載,可以處理任何指定 LUN 的磁碟 I/O。如果一個控制器失敗,另一個控制器便會自動處理所有流量。

載入平衡

設備對應程式多重路徑驅動程式會自動對通過所有主動路徑的流量進行負載平衡控制。

控制器容錯移轉

主動控制器容錯移轉到被動 (或待機) 控制器時,設備對應程式多重路徑驅動程式會自動啟動主機與待機之間的路徑,使其成為主要路徑。

開機/根設備支援

SUSE Linux Enterprise Server 10 及更高版本提供對根 (/) 設備的多重路徑支援。主機伺服器必須連接到開機設備目前的主動控制器與儲存處理器。

SUSE Linux Enterprise Server 11 及更高版本提供了對 /boot 設備的多重路徑支援。

設備對應程式多重路徑會偵測每個路徑,查看有無多重路徑設備做為獨立的 SCSI 設備。SCSI 設備名稱採用的格式為 /dev/sdN,其中 N 是為設備自動產生的字母,從 a 開始,並隨著設備的建立依序發佈,例如 /dev/sda/dev/sdb,依此類推。如果設備數目超過 26 個,則字母將會重複,這樣,/dev/sdz 之後的設備將命名為 /dev/sdaa/dev/sdab,依此類推。

如果有多個路徑未自動偵測到,則您可以在 /etc/multipath.conf 檔案中手動設定。在您建立並設定 multipath.conf 檔案之前,該檔案並不存在。如需更多資訊,請參閱節 7.4.5, 建立並設定 /etc/multipath.conf 檔案

7.3.2 多重路徑 I/O 管理工具

multipath-tools 使用者空間套件會自動探查路徑,並對其進行分組。它會週期性地自動測試路徑,這樣,先前失敗的路徑在恢復正常後,便可自動重新啟用。這樣會將管理員對生產環境的關注需求降到最低。

表 7-2 multipath-tools 套件中的工具

工具

描述

multipath

對系統進行掃描,找出多重路徑設備並進行組合。

multipathd

等待映射事件,然後執行 multipath

devmap-name

udev 提供有意義的設備名稱以進行設備映射 (devmaps)。

kpartx

將線性 devmaps 映射到多重路徑設備中的分割區,這樣能夠建立對設備中各分割區的多重路徑監控。

對於不同的伺服器架構,套件的檔案清單可能會有所不同。有關 multipath-tools 套件中包含的檔案清單,請造訪「SUSE Linux Enterprise Server Technical Specifications」>「Package Descriptions」網頁,找到您的架構並選取Packages Sorted by Name,然後搜尋「multipath-tools」以找到適用於該架構的套件清單。

您也可以透過查詢套件本身來確定 RPM 檔案的檔案清單:使用 rpm -qlrpm -qpl 指令選項。

  • 若要查詢已安裝的套件,請輸入

    rpm -ql <package_name>
    
  • 若要查詢未安裝的套件,請輸入

    rpm -qpl <URL_or_path_to_package>
    

若要檢查是否已安裝 multipath-tools 套件,請執行以下操作:

  1. 在終端機主控台提示符下輸入以下指令:

    rpm -q multipath-tools
    

    如果已安裝,回應內容會重複該套件名稱並提供版本資訊,例如:

    multipath-tools-04.7-34.23
    

    如果未安裝,則回應內容為:

    package multipath-tools is not installed
    

7.3.3 對多重路徑設備使用 MDADM

Udev 是預設的設備處理器,該系統可透過 Worldwide ID (而不是設備節點名稱) 自動識別設備。這解決了 MDADM 與 LVM 的先前版本中組態檔案 (mdadm.conflvm.conf) 無法正確辨識多重路徑設備的問題。

與 LVM2 一樣,MDADM 也要求透過 ID 而非設備節點路徑存取設備。因此,應使用如下指令設定 /etc/mdadm.conf 中的 DEVICE 項目:

DEVICE /dev/disk/by-id/*

若您使用的是使用者易記名稱,請按照以下方式指定路徑,以便在設定多重路徑之後僅掃描設備對應程式名稱:

DEVICE /dev/disk/by-id/dm-uuid-.*-mpath-.*

若要驗證是否已安裝 MDADM:

  1. 在終端機主控台提示符處輸入以下指令,確定是否已安裝 mdadm 套件:

    rpm -q mdadm
    

    如果已安裝,回應內容會重複該套件名稱並提供版本資訊。例如:

    mdadm-2.6-0.11
    

    如果未安裝,則回應內容為:

    package mdadm is not installed
    

如需修改 /etc/lvm/lvm.conf 檔案的資訊,請參閱節 7.2.3, 在多重路徑設備上使用 LVM2

7.3.4 Linux multipath(8) 指令

使用 Linux multipath(8) 指令可以設定並管理多重路徑設備。

multipath(8) 指令的一般語法為:

multipath [-v verbosity] [-d] [-h|-l|-ll|-f|-F] [-p failover | multibus | group_by_serial | group_by_prio| group_by_node_name ] 

一般範例

multipath

設定所有多重路徑設備。

multipath 設備名稱

設定特定的多重路徑設備。

使用 /dev/sdb (顯示於 udev 的 $DEVNAME 變數中) 等設備節點名稱取代 devicename,或採用 major:minor 格式。

multipath -f

選擇性隱藏多重路徑映射及其映射設備的分割區。

multipath -d

顯示潛在的多重路徑設備,但不建立任何設備,也不更新設備映射 (試執行)。

multipath -v2 -d

設定多重路徑設備並顯示其多重路徑映射資訊。multipath -v2 -d 中的 -v2 選項只顯示本地磁碟。

multipath -v2 設備名稱

設定某個特定的多重路徑設備並顯示其多重路徑映射資訊。使用 -v2 選項可僅顯示本地磁碟。

multipath -v3 -d

設定多重路徑設備並顯示其多重路徑映射資訊。使用 -v3 選項會顯示完整路徑清單。

multipath -v3 設備名稱

設定某個特定的多重路徑設備並顯示其多重路徑映射資訊。使用 -v3 選項會顯示完整路徑清單。

multipath -ll

顯示所有多重路徑設備的狀態。

multipath -ll 設備名稱

顯示指定多重路徑設備的狀態。

multipath -F

衝洗所有未使用的多重路徑設備映射。這會取消解析多個路徑,但不會刪除設備。

multipath -F 設備名稱

衝洗指定多重路徑設備之未使用的多重路徑設備映射。這會取消解析多個路徑,但不會刪除該設備。

multipath -p [ failover | multibus | group_by_serial | group_by_prio | group_by_node_name ]

透過指定表 7-3 中所述的其中一個群組規則選項,來設定群組規則:

表 7-3 multipath -p 指令的群組規則選項

規則選項

描述

failover

每個優先程度群組對應一個路徑。每次只能使用一個路徑。

multibus

所有路徑都在一個優先程度群組中。

group_by_serial

每個偵測到的 SCSI 序號 (控制器節點全球號碼) 對應一個優先程度群組。

group_by_prio

每個路徑優先程度值對應一個優先程度群組。優先程度相同的路徑位於同一個優先程度群組中。優先程度由註標程式決定,在 /etc/multipath.conf 組態檔案中指定為 global、per-controller 或 per-multipath 選項。

group_by_node_name

每個目標節點名稱對應一個優先程度群組。目標節點名稱取自 /sys/class/fc_transport/target*/node_name 位置。