7.2 規劃多重路徑

7.2.1 多重路徑準則

使用本節中的準則規劃多重路徑 I/O 解決方案。

先決條件

  • 多重路徑在設備層級進行管理。

  • 您用於多重路徑設備的儲存陣列必須支援多重路徑。如需詳細資訊,請參閱節 7.2.9, 多重路徑的受支援儲存陣列

  • 只有在伺服器中的主機匯流排配接器和區塊儲存設備的主機匯流排控制器之間存在多重實體路徑時,才需要設定多重路徑。應按伺服器所見為邏輯設備設定多重路徑。

廠商提供的多重路徑解決方案

對於某些儲存陣列,廠商提供了自己的多重路徑軟體來管理陣列之實體和邏輯設備的多重路徑。在這種情況下,您應根據廠商的指示設定那些設備的多重路徑。

磁碟管理任務

請先執行以下磁碟管理任務,再嘗試為具有多路徑的實體或邏輯設備設定多重路徑:

  • 使用協力廠商工具將實體磁碟分割為數個較小的邏輯磁碟。

  • 使用協力廠商工具分割實體磁碟或邏輯磁碟。如果您變更正在執行系統中的分割區,則設備對應程式多重路徑 (DM-MP) 模組將不會自動偵測並反映這些變更。DM-MPIO 必須重新啟始化,這通常需要重新開機。

  • 使用協力廠商 SAN 陣列管理工具建立並設定硬體 RAID 設備。

  • 使用協力廠商 SAN 陣列管理工具建立邏輯設備,例如 LUN。指定陣列所支援的邏輯設備類型由陣列廠商決定。

軟體 RAID

Linux 軟體 RAID 管理軟體在多重路徑的最上層執行。對於每個具有多重 I/O 路徑的設備和要用於軟體 RAID 的設備來說,您必須先設定多重路徑的設備,然後才能嘗試建立軟體 RAID 設備。無法自動探查多重路徑設備。軟體 RAID 無法知曉多重路徑管理是否於後台執行。

高可用性解決方案

用於進行叢集的高可用性解決方案通常在多重路徑伺服器的最上層執行。例如,用於透過多重路徑最上層上執行的 LAN 鏡像複製設備的分散式複製區塊設備 (DRBD) 高可用性解決方案。對於每個具有多重 I/O 路徑的設備和要用於 DRDB 解決方案的設備來說,您必須先設定多重路徑的設備,然後才能設定 DRDB。

磁碟區管理器

磁碟區管理 (如 LVM2 和 EVMS) 在多重路徑最上層執行。必須先設定設備的多重路徑,然後才能使用 LVM2 或 EVMS 在其上建立區段管理員和檔案系統。

虛擬化環境

在虛擬化環境中使用多重路徑時,將在主機伺服器環境中控制多重路徑。請先設定設備的多重路徑,然後才能將其指派給虛擬訪客機器。

7.2.2 使用多重路徑設備的 By-ID 名稱

如果您要直接使用整個 LUN (例如,若您使用 SAN 功能分割您的儲存區),可為 mkfsfstab、您的應用程式等使用 /dev/disk/by-id/xxx 名稱。

/etc/multipath.conf 檔案中啟用了使用者易記名稱選項,則您可以使用 /dev/disk/by-id/dm-uuid-.*-mpath-.* 設備名稱,因為此名稱是設備 ID 的別名。如需更多資訊,請參閱在 /etc/multipath.conf 中設定易記名稱或別名

7.2.3 在多重路徑設備上使用 LVM2

LVM2 預設不辨識多重路徑設備。若要使 LVM2 將多重路徑設備辨識為可用的實體磁碟區,您必須修改 /etc/lvm/lvm.conf。重要的是,要修改為使其不掃描與使用實體路徑,而只透過多重路徑 I/O 層存取多重路徑 I/O 儲存區。若您使用的是使用者易記名稱,請務必指定路徑,以便在設定多重路徑之後僅掃描設備 (/dev/disk/by-id/dm-uuid-.*-mpath-.*) 的設備對應程式名稱。

若要修改多重路徑的 /etc/lvm/lvm.conf,請使用以下方法:

  1. 在文字編輯器中開啟 /etc/lvm/lvm.conf 檔案。

    如果 /etc/lvm/lvm.conf 不存在,您可以在終端機主控台提示符處輸入以下指令,根據目前的 LVM 組態建立該檔案:

    lvm dumpconfig > /etc/lvm/lvm.conf
    
  2. 變更 /etc/lvm/lvm.conf 中的 filtertypes 項目,如下所示:

    filter = [ "a|/dev/disk/by-id/.*|", "r|.*|" ]
    types = [ "device-mapper", 1 ]
    

    這樣可讓 LVM2 只掃描 by-id 路徑,而拒絕其他所有項目。

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

    filter = [ "a|/dev/disk/by-id/dm-uuid-.*-mpath-.*|", "r|.*|" ]
    
  3. 如果您也在非多重路徑設備上使用 LVM2,請對 filtertypes 進行必要的調整以符合您的設定。否則,在修改 lvm.conf 檔案以啟用多重路徑後,使用 pvscan 將無法顯示其他 LVM 設備。

    您只想將使用 LVM 設定的設備包含到 LVM 快取中,因此請務必明確指定過濾器應包含哪些其他非多重路徑設備。

    例如,如果本地磁碟為 /dev/sda,且所有 SAN 設備都為 /dev/sdb 及以上,則在過濾器中按如下方式指定本地路徑和多重路徑:

    filter = [ "a|/dev/sda.*|", "a|/dev/disk/by-id/.*|", "r|.*|" ]
    types = [ "device-mapper", 253 ]
    
  4. 儲存檔案。

  5. 將 dm-multipath 新增至 /etc/sysconfig/kernel:INITRD_MODULES

  6. 新增一個 initrd 以確保設備對應程式多重路徑服務已使用變更後的設定載入。在終端機主控台提示符處輸入以下指令:

    mkinitrd -f multipath
    
  7. 重新開機伺服器以套用變更。

7.2.4 將 mdadm 用於多重路徑設備

mdadm 工具要求以 ID 而非設備節點路徑存取設備。因此,應使用如下指令設定 /etc/mdadm.conf 中的 DEVICE 項目:

DEVICE /dev/disk/by-id/*

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

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

7.2.5 將 --noflush 用於多重路徑設備

在多重路徑設備上執行時,應始終使用 --noflush 選項。

例如,在執行表格重新載入的程序檔中,應使用 --noflush 選項進行恢復,以確保所有重要 I/O 不會被衝洗,因為您需要多重路徑拓樸資訊。

load
resume --noflush

7.2.6 根設備為多重路徑設備時的 SAN 逾時設定

所有路徑都已失敗並已從系統移除時,多重路徑設備上包含根目錄 (/) 的系統可能會停止,因為系統會收到儲存子系統 (例如光纖通道儲存陣列) 發出的 dev_loss_tmo 逾時通知。

如果系統設備設定了多個路徑,且多重路徑 no_path_retry 設定處於啟用狀態,您應相應地修改儲存子系統的 dev_loss_tmo 設定,以確保在所有路徑失效的情況下不會移除任何設備。強烈建議您將 dev_loss_tmo 的值設為等於或大於多重路徑中 no_path_retry 設定的值。

建議按如下方式設定儲存子系統的 dev_los_tmo

<dev_loss_tmo> = <no_path_retry> * <polling_interval>

其中,以下定義適用於多重路徑值:

  • no_path_retry 定義多重路徑 I/O 嘗試多少次後路徑視為遺失並停止將 I/O 排入佇列。

  • polling_interval 是執行路徑檢查的時間間隔 (以秒為單位)。

每個多重路徑值都應在 /etc/multipath.conf 組態檔案中設定。如需更多資訊,請參閱節 7.4.5, 建立並設定 /etc/multipath.conf 檔案

7.2.7 分割多重路徑設備

如果正在升級,則對多重路徑設備處理方式的行為變更可能會影響您的組態。

SUSE Linux Enterprise Server 11

在 SUSE® Linux Enterprise Server 11 中,當啟動多重路徑時,預設多重路徑設定依賴 udev 來覆寫 /dev/disk/by-id 目錄中的現存符號連結。在您啟動多重路徑之前,該連結透過使用設備的 scsi-xxx 名稱來指向 SCSI 設備。當多重路徑正在執行時,該符號連結則透過使用設備的 dm-uuid-xxx 名稱來指向設備。這樣可確保不論多重路徑是否啟動,/dev/disk/by-id 路徑中的符號連結始終指向同一設備。由於 lvm.confmd.conf 等組態檔案會自動指向正確的設備,所以無須對其進行修改。

SUSE Linux Enterprise Server 10

在 SUSE Linux Enterprise Server 10 中,使用 kpartx 軟體在 /etc/init.d/boot.multipath 中將符號連結新增至所有新建立磁碟分割區之 multipath.conf 組態檔案的 /dev/dm-* 行中,且不需要重新開機。這樣會觸發 udevd 以填寫 /dev/disk/by-* 符號連結。其主要優點是您可以使用新參數呼叫 kpartx,而無需重新開機伺服器。

SUSE Linux Enterprise Server 9

在 SUSE Linux Enterprise Server 9 中,無法分割多重路徑 I/O 設備自身。如果基礎實體設備已進行分割,則多重路徑 I/O 設備將反映這些分割區,且該層會提供 /dev/disk/by-id/<name>p1 ... pN 設備,讓您可透過多重路徑 I/O 層存取分割區。因此,需要在啟用多重路徑 I/O 之前分割設備。如果變更正在執行之系統中的磁碟分割,則 DM-MPIO 不會自動偵測並反映這些變更。必須重新啟始化設備,通常需要重新開機。

7.2.8 多重路徑 I/O 的受支援結構

多重路徑驅動程式與工具支援以下七種受支援的處理器結構:IA32、AMD64/EM64T、IPF/IA64、p-Series (32 位元 與 64 位元)、z-Series (31 位元與 64 位元)。

7.2.9 多重路徑的受支援儲存陣列

多重路徑驅動程式與工具支援大部分儲存陣列。儲存多重路徑設備的儲存陣列必須支援多重路徑,這樣才能使用多重路徑驅動程式與工具。一些儲存陣列廠商會提供其自己的多重路徑管理工具。請參閱廠商的硬體文件以決定所需設定。

為多重路徑自動偵測儲存陣列

multipath-tools 套件會自動偵測以下儲存陣列:

  • 3PARdata VV
  • Compaq* HSV110
  • Compaq MSA1000
  • DDN SAN MultiDirector
  • DEC* HSG80
  • EMC* CLARiiON* CX
  • EMC Symmetrix*
  • FSC CentricStor*
  • Hewlett Packard* (HP*) A6189A
  • HP HSV110
  • HP HSV210
  • HP Open
  • Hitachi* DF400
  • Hitachi DF500
  • Hitachi DF600
  • IBM 3542
  • IBM ProFibre 4000R
  • NetApp*
  • SGI* TP9100
  • SGI TP9300
  • SGI TP9400
  • SGI TP9500
  • STK OPENstorage DS280
  • Sun* StorEdge 3510
  • Sun T4

一般說來,大多數其他儲存陣列應該都可使用。自動偵測到儲存陣列後,會套用多重路徑的預設設定。如果您需要非預設設定,則必須手動建立並設定 /etc/multipath.conf 檔案。如需更多資訊,請參閱節 7.4.5, 建立並設定 /etc/multipath.conf 檔案

對支援多重路徑的 IBM zSeries* 設備進行的測試表明,應將 dev_loss_tmo 參數設定為 90 秒,將 fast_io_fail_tmo 參數設定為 5 秒。若您使用的是 zSeries 設備,則必須手動建立並設定 /etc/multipath.conf 檔案來指定這些值。如需更多資訊,請參閱在 /etc/multipath.conf 中為 zSeries 設定預設設定值

未自動偵測到的硬體需要在 /etc/multipath.conf 檔案的 DEVICES 區段中設定適當項目。在此狀況下,您必須手動建立並設定組態檔案。如需更多資訊,請參閱節 7.4.5, 建立並設定 /etc/multipath.conf 檔案

請考慮以下警告:

  • 並非所有自動偵測到的儲存陣列都已在 SUSE Linux Enterprise Server 上經過測試。如需更多資訊,請參閱經測試支援多重路徑的儲存陣列

  • 某些儲存陣列可能需要特定的硬體處理器。硬體處理器是在切換路徑群組與處理 I/O 錯誤時執行硬體特定動作的核心模組。如需更多資訊,請參閱需要特定硬體處理器的儲存陣列

  • 修改 /etc/multipath.conf 檔案後,必須執行 mkinitrd 在系統中重新建立 INITRD,然後重新開機以使變更生效。

經測試支援多重路徑的儲存陣列

下列儲存陣列已經過 SUSE Linux Enterprise Server 測試:

  • EMC
  • Hitachi
  • Hewlett-Packard/Compaq
  • IBM
  • NetApp
  • SGI

大多數其他廠商提供的儲存陣列應該也可使用。請參閱廠商文件獲取指導原則。如需 multipath-tools 套件可辨識的預設儲存陣列清單,請參閱為多重路徑自動偵測儲存陣列

需要特定硬體處理器的儲存陣列

從一個路徑到另一個路徑的容錯移轉時需要特殊指令的儲存陣列,或需要特殊非標準錯誤處理的儲存陣列,可能都需要額外的延伸支援。因此,設備對應程式多重路徑服務已配備用於硬體處理器的插入程式。例如,已針對 EMC CLARiiON CX 陣列系列提供一個此類處理器。

重要: 請參閱硬體廠商文件,以確定是否必須安裝硬體處理器以用於設備對應程式多重路徑。

multipath -t 指令可顯示需要使用特定硬體處理器進行特殊處理之儲存陣列的內部表格。所顯示的清單不是受支援儲存陣列的完整清單。它列出的僅僅是需要特殊處理的陣列,以及 multipath-tools 開發人員在開發該工具期間有存取權限的陣列。

重要: 真正支援主動/主動多重路徑的陣列不需要特殊處理,因此 multipath -t 指令不會列出此類陣列。

multipath -t 表格中的清單內容並不表示已在該特定硬體上進行 SUSE Linux Enterprise Server 測試。如需經過測試的儲存陣列清單,請參閱經測試支援多重路徑的儲存陣列