rhel 6 對映多路徑(DM Multipath)配置及管理
第 1 章 裝置對映器多路徑
11
第 1 章 裝置對映器多路徑
裝置對映器多路徑( DM-Multipath) 可讓您將服務器節點和存儲陣列間的多個 I/O 路徑配置為一個單一設
備。 這些 I/O 路徑是可包含獨立電纜、 交換機以及控制器的物理 SAN 連接。 多路徑集合了 I/O 路徑, 並生成
由這些整合路徑組成的新裝置。
本章提供了紅帽企業版 Linux 6 初始發行本中不包括的 DM-Multipath 新功能概述。 之後, 本章還提供 DMMultipath 及其組件的高級概述以及 DM-Multipath 設置概述。
1.1. 新的和更改的功能
本小節列出紅帽企業版 Linux 6 初始及後續版本中 DM-Multipath 新的和更改的功能。
1.1.1. 紅帽企業版 Linux
6.0 中新的和更改的功能
紅帽企業版 Linux 6.0 包括以下文件和功能更新及更改。
在紅帽企業版 Linux 6 發行本中, 更改了基本故障切換配置的初始 DM-Multipath 設置過程。 您現在可以
創建 DM-Multipath 配置檔案並使用 mpathconf 配置工具啟用 DM-Multipath, 該工具還可載入
device-mapper-multipath, 啟動 multipathd 守護進程並將 chkconfig 設定為在重啟時自動
啟動該守護進程。
有關新設置過程的詳情請參考 第 3.1 節 “設置 DM-Multipath”。 有關 mpathconf 命令的詳情請參考
mpathconf(5) man page。
紅帽企業版 Linux 6 發行本提供設定 multipath 裝置的新模式, 與 find_multipaths 配置檔案引數一
同使用。 在舊版紅帽企業版 Linux 中, multipath 總是嘗試為每個沒有明確放入黑名單的路徑創建
multipath 裝置。 但在紅帽企業版 Linux
6 中, 如果將 find_multipaths 配置引數設定為 yes, 那麼
multipath 將只在滿足以下三個條件之一時創建裝置:
至少有兩個沒有列入黑名單的路徑使用同一 WWID。
用戶使用 multipath 命令指定裝置強制手動生成該裝置。
路徑擁有與之前創建的多路徑裝置相同的 WWID( 即使該多路徑裝置目前不存在) 。 如果您之前在沒
有設定 find_multipaths 引數的情況下創建了多路徑裝置, 那麼有關步驟請參考 第 4.2 節 “配置
檔案黑名單”。
這個功能可讓大多數用戶自動選擇正確的路徑創建多路徑裝置, 而無需編輯黑名單。
有關 find_multipaths 配置引數的詳情請參考 第 4.3 節 “配置檔案默認設置”。
紅帽企業版 Linux 6 發行本提供兩個新的路徑選擇程式演算法, 它們可決定下一個 I/O 操作要使用的路徑,
即 queue-length 和 service-time。 queue-length 演算法查看該路徑未完成的 I/O 數量以便決定
下一個要使用的路徑。 service-time 演算法查看未完成的 I/O 數量以及該路徑的相關流量以便決定下一
個要使用的路徑。 有關配置檔案中的路徑選擇程式引數詳情請參考 第 4 章 DM-Multipath 配置檔案。
在紅帽企業版 Linux 6 發行本中, 優先權功能不再能調出程式, 而是與路徑檢查程式功能一樣動態共享對
象。 已使用 prio 引數替換 prio_callout 引數。 有關支援的 prio 功能詳情請參考 第 4 章 DMMultipath 配置檔案。
在紅帽企業版 Linux 6 中, 更改了 multipath 命令的輸出格式。 有關 multipath 命令輸出的詳情請
參考 第 5.7 節 “多路徑命令輸出”。
在紅帽企業版 Linux 6 發行本中, 多路徑 bindings 檔案的位置為 /etc/multipath/bindings。
紅帽企業版 Linux 6 發行本在 multipath.conf 檔案中提供三個新的默認參
數:checker_timeout、 fast_io_fail_tmo 和 dev_loss_tmo。 有關引數詳情請參考 第 4 章
DM-Multipath 配置檔案。
當將多路徑配置檔案中的 user_friendly_names 選項設定為 yes 時, 則多路徑裝置的名稱格式為
mpathn。 在紅帽企業版 Linux
6 發行本中, n 是字母字元, 因此多路徑裝置的名稱就可能是 mpatha 或
者 mpathb。 在之前的發行本中, n 是整數值。
紅帽企業版 Linux
6 裝置對映多路徑
12
1.1.2. 紅帽企業版 Linux
6.1 中新的和更改的功能
紅帽企業版 Linux 6.1 中包括以下文件和功能更新和更改。
該文件現在包含新的一章, 第 5.2 節 “將 root 檔案系統從單一路徑裝置移動到多路徑裝置中”。
該文件現在包含新的一章, 第 5.3 節 “將 swap 檔案系統從單一路徑裝置移動到多路徑裝置中”。
1.1.3. 紅帽企業版 Linux
6.2 中新的和更改的功能
紅帽企業版 Linux 6.2 包括以下文件和功能更新及更改。
紅帽企業版 Linux 6.2 發行本提供新的 multipath.conf 引數 rr_min_io_rq, 該引數位於
multipath.conf 檔案的 defaults、 devices 和 multipaths 部分。 紅帽企業版 Linux 6.2 不再
使用 rr_min_io 引數。 有關 rr_min_io_rq 引數的詳情請參考 第 4 章 DM-Multipath 配置檔案。
現在可以將 dev_loss_tmo 配置檔案引數設定為無限大, 這樣就將實際 sysfs 變量設定為
2147483647 秒, 或者 68 年。 有關這個引數的詳情請參考 第 4 章 DM-Multipath 配置檔案。
已更新 第 5.2 節 “將 root 檔案系統從單一路徑裝置移動到多路徑裝置中” 描述的進程。
1.1.4 . 紅帽企業版 Linux
6.3 中新的和更改的功能
紅帽企業版 Linux 6.3 包括以下文件和功能更新及更改。
queue_without_daemon 配置檔案引數默認值已改為 no。
max_fds 配置檔案引數默認值已改為 no。
現在可在 multipath.conf 配置檔案的 defaults, multipaths 和 devices 部分配置
user_friendly_names 配置檔案引數。
multipath.conf 配置檔案的 defaults 部分支援新的 hwtable_regex_match 引數。
有關配置檔案引數詳情請參考 第 4 章 DM-Multipath 配置檔案。
1.1.5. 紅帽企業版 Linux
6.4 中新的和更改的功能
紅帽企業版 Linux 6.4 包括以下文件和功能更新及更改。
multipath.conf 配置檔案的 defaults 部分和 devices 部分支援新的
retain_attached_hardware_handler 引數和新的 detect_prio 引數。 有關該配置詳情請參考
第 4 章 DM-Multipath 配置檔案。
這個文件現在包括新的一節 第 3.4 節 “在 initramfs 檔案系統中設置啟動 Multipath”。
1.2. DM-Multipath 概述
可使用 DM-Multipath 提供:
冗餘
DM-Multipath 可在主動/被動配置中提供出錯冗餘。 在主動/被動配置中, 只有一半的路徑在每次 I/O 時都
使用。 如果 I/O 路徑的任意元素( 電纜、 交換機或者控制器) 出現故障, 就會將 DM-Multipath 切換到備
用路徑。
改進的效能
可將 DM-Multipath 配置為主動/主動模式, 其中將 I/O 以輪叫調度演算法方式分佈到所有路徑中。 在有些配
置中, DM-Multipath 可在 I/O 路徑中檢測負載並動態重新平衡負載。
圖 1.1 “帶一個 RAID 裝置的主動/被動多路徑配置” 演示在服務器和 RAID 裝置之間有兩個 I/O 路徑的主動/被
動配置。 這裡服務器中有兩個 HBA, 兩個 SAN 交換機以及兩個 RAID 控制器。
第 1 章 裝置對映器多路徑
13
圖 1.1. 帶一個 RAID 裝置的主動/被動多路徑配置
在這個配置中, 一個 I/O 路徑通過 hba1、 SAN1 以及控制器 1。 另一個 I/O 路徑通過 hba2、 SAN2 以及控制
器 2。 在這個配置中有很多地方可能出現故障:
HBA 故障
FC 電纜故障
SAN 交換機故障
陣列控制器埠故障
如果配置了 DM-Multipath, 在所有這些地方出現故障時都會使 DM-Multipath 切換到備用 I/O 路徑。
圖 1.2 “帶兩個 RAID 裝置的主動/被動多路徑配置” 演示更復雜的主動/被動配置, 其中服務器中有兩個
HBA、 兩個 SAN 交換機以及兩個 RAID 裝置, 每個帶兩個 RAID 控制器。
紅帽企業版 Linux
6 裝置對映多路徑
14
圖 1.2. 帶兩個 RAID 裝置的主動/被動多路徑配置
在 圖 1.2
“帶兩個 RAID 裝置的主動/被動多路徑配置” 演示的示例中, 每個 RAID 裝置有兩個 I/O 路徑( 與
圖 1.1 “帶一個 RAID 裝置的主動/被動多路徑配置” 中顯示的示例相同) 配置了 DM-多路徑, I/O 路徑中任意
點到任意 RAID 裝置發生錯誤時, DM-多路徑都會為那個裝置切換到備用 I/O 路徑。
圖 1.3 “帶一個 RAID 裝置的主動/主動多路徑配置” 演示在服務器中有兩個 HBA、 一個 SAN 交換機以及兩個
RAID 控制器的主動/主動配置。 在服務器和存儲裝置間有四條 I/O 路徑:
hba1 到控制器 1
hba1 到控制器 2
hba2 到控制器 1
hba2 到控制器 2
在這個配置中, 可將 I/O 分佈到那四條路徑中。
圖 1.3. 帶一個 RAID 裝置的主動/主動多路徑配置
1.3. 存儲陣列支援
默認情況下, DM-Multipath 支援大多數常用的、 支援 DM-Multipath 的存儲陣列。 您可在
multipath.conf.defaults 檔案中找到這些支援的裝置。 如果您的存儲陣列支援 DM-Multipath 且未在
這個檔案中默認設置, 您可能需要將其新增到 DM-Multipath 配置檔案 multipath.conf 中。 有關 DMMultipath 配置檔案的詳情請參考 第 4 章 DM-Multipath 配置檔案。
有些存儲陣列需要特殊的 I/O 錯誤和路徑切換處理。 這些都需要獨立的硬體處理器核心模塊。
1.4. DM-Multipath 組件
表 1.1 “DM-Multipath 組件” 描述了 DM-Multipath 組件。
第 2 章 多路徑裝置
15
表 1.1. DM-Multipath 組件
組件 描述
dm-multipath 核心模塊 為路徑和路徑組群重新指定 I/O 並支援出錯冗餘。
mpathconf 程式 配置並啟用裝置對映器多路徑
multipath 命令 列出並配置 multipath 裝置。 通常使用 /etc/rc.sysinit 啟動, 還
可以在新增塊裝置時使用 udev 程式啟動。
multipathd 守護進程 監視器路徑, 如果路徑故障並返回, 它可能會啟動路徑組群切換。 可
為多路徑裝置提供互動修改。 對 /etc/multipath.conf 檔案的任
何修改都必須啟動它。
kpartx 命令 為裝置中的分割槽生成裝置對映器裝置。 這個命令對帶 DM-MP 的 DOS
分割槽是很必要的。 kpartx 在其自身軟件包中就存在, 但 devicemapper-multipath 軟件包要依賴它。
1.5. DM-Multipath 設置概述
DM-Multipath 包含適用於常見多路徑配置已編譯的默認設置。 安裝 DM-multipath 通常很簡單。
以下是為您的系統配置 DM-multipath 的基本步驟:
1. 安裝 device-mapper-multipath rpm。
2. 使用 mpathconf 命令創建配置檔案並啟用多路徑。 如果您不需要編輯該配置檔案, 您還可以使用這
個命令啟動多路徑守護進程。
3. 如需要, 請編輯 multipath.conf 配置檔案, 修改默認值並儲存更新的檔案:
4. 啟動多路徑守護進程。
有關多路徑配置的詳細安裝說明示例請參考 第 3 章 設置 DM-Multipath。
紅帽企業版 Linux
6 裝置對映多路徑
16
第 2 章 多路徑裝置
沒有 DM-Multipath, 從服務器節點到存儲控制器的所有路徑都將被系統視為獨立的裝置, 即使連接相同服務
器節點到相同存儲控制器的 I/O 路徑也不例外。 DM-Multipath 提供了邏輯管理 I/O 路徑的方法, 即在基礎設
備的頂部生成單一多路徑裝置。
2.1. 多路徑裝置識別符
每個多路徑裝置都有一個全球識別符( WWID) , 它是一個全球唯一的無法更改的號碼。 默認情況下會將多
路徑裝置的名稱設定為它的 WWID。 另外, 您還可以在多路徑配置檔案中設置 user_friendly_names
選項, 該選項可將別名設為格式為 mpathn 的節點唯一名稱。
例如:當將有兩個 HBA 的節點使用一個不分割槽 FC 切換附加到有兩個埠的存儲控制器中時, 可看到四個設
備:/dev/sda、 /dev/sdb、 dev/sdc 和 /dev/sdd。 DM-Multipath 生成有唯一 WWID 的單一裝置, 該
裝置可將 I/O 根據多路徑配置重新路由到那四個基礎裝置。 當將 user_friendly_names 配置設定為
yes, 會將該多路徑裝置的名稱設定為 mpathn。
當在 DM-Multipath中新增新裝置時, 這些新裝置會位於 /dev 目錄的兩個不同位
置:/dev/mapper/mpathn 和 /dev/dm-n。
/dev/mapper 中的裝置是在引導過程中生成的。 可使用這些裝置訪問多路徑裝置, 例如在生成邏輯卷
時。
所有 /dev/dm-n 格式的裝置都只能是作為內部使用, 請不要使用它們。
有關多路徑配置默認的詳情, 包括 user_friendly_names 配置選項, 請參考 第 4.3 節 “配置檔案默認設
置”。
您還可以使用多路徑配置檔案 multipaths 部分的 alias 選項將多路徑裝置名稱設為您選擇的名稱。 有
關多路徑配置檔案 multipaths 部分的詳情請參考 第 4.4 節 “多路徑裝置配置屬性”。
2.2. 在叢集中保持多路徑裝置名稱一致
當將 user_friendly_names 配置選項設為 yes 時, 該多路徑裝置的名稱對於節點來說是唯一的, 但不
保證對使用多路徑裝置的所有節點都一致。 同樣, 如果您為 multipath.conf 配置檔案的 multipaths
部分中的裝置設定 alias 選項, 該名稱不會自動在叢集的所有節點中保持一致。 如果您使用 LVM 在多路徑
裝置中創建邏輯裝置, 這不應是問題。 但如果您需要將您的多路徑裝置名稱在叢集中的每個節點上都保持一
致, 請不要將 user_friendly_names 選項設定為 yes, 且不要為那些裝置配置別名。 默認情況下, 如
果您不將 user_friendly_names 設定為 yes, 或者為某個裝置配置別名, 則裝置名稱將是該裝置的
WWID, 它是不會變的。
如果您要系統定義的用戶友好名稱在叢集的所有節點中都一致, 您可按照以下步驟操作:
1. 在一臺機器中設定所有多路徑裝置。
2. 運行以下命令在其他機器中禁用所有 multipath 裝置:
# service multipathd stop
# multipath -F
3. 將第一臺機器中的 /etc/multipath/bindings 檔案複製到叢集中的其它所有機器中。
4. 使用以下命令在叢集的其他機器中重新 multipathd 守護進程:
# service mutipathd start
第 3 章 設置 DM-Multipath
17
如果您新增新裝置, 您將需要重複這個過程。
同樣, 如果您為某個裝置配置別名以便在叢集的節點中使其保持一致, 您應確定 /etc/multipath.conf
檔案對於叢集中的每個節點都是一樣的, 步驟如下:
1. 為機器 multipath.conf 檔案中的多路基功能裝置配置別名。
2. 運行以下命令在其他機器中禁用所有 multipath 裝置:
# service multipathd stop
# multipath -F
3. 將第一臺機器中的 /etc/multipath.conf 檔案複製到叢集中的其它所有機器中。
4. 使用以下命令在叢集的其他機器中重新 multipathd 守護進程:
# service mutipathd start
當您新增新裝置時, 您將需要重複這個過程。
2.3. 多路徑裝置屬性
除 user_friendly_names 和 alias 選項外, multipath 裝置有大量屬性。 您可以為具體 multipath 裝置
修改這些屬性, 方法是在 multipath 配置檔案的 multipaths 部分為那個裝置創建一個條目。 有關
multipath 配置檔案 multipaths 部分的詳情請參考 第 4.4 節 “多路徑裝置配置屬性”。
2.4. 邏輯卷中的多路徑裝置
生成多路徑裝置後, 多路徑裝置的名稱可以與您生成一個 LVM 物理卷時使用的物理裝置名稱相同。 例如:
如果多路徑名稱為 /dev/mapper/mpatha, 以下命令可將 /dev/mapper/mpatha 標記為一個物理
卷。
pvcreate /dev/mapper/mpatha
您可以如在使用其它 LVM 物理裝置一樣在創建 LVM 卷組時使用得到的 LVM 物理卷。
注意
如果您要在配置了分割槽的整個裝置中創建 LVM 物理卷, pvcreate 命令將會失敗。 請注意:如果您
不具體指定每個塊裝置, Anaconda 和 Kickstart 安裝程式會生成空分割槽表。 您可以使用 kpartx -d
和 fdisk 命令刪除現有分割槽。 如果您的系統有大於 2 TB 的塊裝置, 您可使用 parted 命令刪除分
區。
當您創建一個使用主動/被動多路徑陣列的 LVM 邏輯卷作為基礎物理裝置時, 您應該在 lvm.conf 中新增過
濾器, 這樣可以排除構成多路徑裝置的磁盤。 這是因為如果陣列在接收 I/O 時自動將主動路徑改為被動路
徑, 不過濾掉這些裝置, 無論何時 LVM 掃描被動路徑時, 多路徑將執行出錯冗餘並進行出錯切換。 對於需
要使用命令啟用被動路徑的主動/被動陣列, LVM 會在發生這種情況時給出警告資訊。
要過濾 LVM 配置檔案( lvm.conf) 中的所有 SCSI 裝置, 請在該檔案的 devices 部分新增以下過濾器。
filter = [ "r/block/", "r/disk/",
"r/sd.*/", "a/.*/" ]
紅帽企業版 Linux
6 裝置對映多路徑
18
第 3 章 設置 DM-Multipath
本章提供了配置 DM-Multipath 的分步示例, 其中包括以下步驟:
基本 DM-Multipath 設置
忽略本地磁盤
在配置檔案中新增更多裝置
在 initramfs 檔案系統中啟動 Multipath
3.1. 設置 DM-Multipath
在您的系統中安裝 DM-Multipath 前, 請確定您的系統已經進行了升級, 其中包括對 device-mappermultipath 軟件包的升級。
您可使用 mpathconf 程式設置多路徑, 它可創建多路徑配置檔案 /etc/multipath.conf。
如果 /etc/multipath.conf 檔案已存在, mpathconf 程式將會編輯該檔案。
如果 /etc/multipath.conf 檔案不存在, mpathconf 程式將使用 /usr/share/doc/devicemapper-multipath-0.4.9/multipath.conf 檔案作為起始檔案。
如果 /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf 檔案不存在,
則 mpathconf 程式將從頭開始創建 /etc/multipath.conf 檔案。
如果您不需要編輯 /etc/multipath.conf 檔案, 您可以運行以下命令為基本故障切換配置設定 DMMultipath。 這個命令可啟用多路徑配置檔案並啟動 multipathd 守護進程。
# mpathconf --enable --with_multipathd
y
如果您需要在啟動 multipathd 守護進程前編輯 /etc/multipath.conf 檔案, 請使用以下步驟為基本
故障切換配置設置 DM-Multipath。
1. 運行帶 --enable 選項的 mpathconf 命令:
# mpathconf --enable
有關您可能需要的 mpathconf 命令的其它選項, 請參考 mpathconf man page, 或者運行帶 --
help 選項的 mpathconf 命令。
# mpathconf --help
usage: /sbin/mpathconf <command>
Commands:
Enable: --enable
Disable: --disable
Set user_friendly_names (Default n): --user_friendly_names <y|n>
Set find_multipaths (Default n): --find_multipaths <y|n>
Load the dm-multipath modules on enable (Default y): --with_module <y|n>
start/stop/reload multipathd (Default n): --with_multipathd <y|n>
chkconfig on/off multipathd (Default y): --with_chkconfig <y|n>
2. 必要時請編輯 /etc/multipath.conf 檔案。 DM-Multipath 的默認設置會編譯到系統中, 且無需在
/etc/multipath.conf 檔案中明確指出。
path_grouping_policy 的默認值是設為 failover, 因此在這個示例中您不需要編輯
/etc/multipath.conf 檔案。 有關在配置檔案中將默認值改為其它數值的詳情請參考 第 4 章
第 3 章 設置 DM-Multipath
19
DM-Multipath 配置檔案。
在您系統配置檔案的初始默認部分配置您的系統以便多路徑裝置的名稱格式為 mpathn。 如果沒有這
個設置, 多路徑裝置的名稱將會是該裝置 WWID 別名。
3. 需要時儲存配置檔案並退出編輯器。
4. 執行以下命令:
# service multipathd start
因為在配置檔案中將 user_friendly_name 值設為 yes, 那麼生成的多路徑裝置將為
/dev/mapper/mpathn。 有關將裝置名稱設定為您選擇的別名的方法, 請參考 第 4 章 DM-Multipath 配置
檔案。
如果您不想使用用戶友好的名稱, 您可以運行以下命令:
# mpathconf --enable
--user_friendly_names n
注意
如果您在啟動 multipath 守護進程後發現需要編輯 multipath 配置檔案, 則必須執行 service
multipathd reload 命令方可使更改生效。
3.2. 在生成多路徑裝置時忽略邏輯磁盤
有些機器在其內部磁盤中有本地 SCSI 卡。 不建議在這些裝置中使用 DM-Multipath。 如果您將
find_multipaths 配置引數設定為 yes, 則您不一定要將這些裝置列入黑名單。 有關
find_multipaths 配置引數的詳情請參考 第 4.3 節 “配置檔案默認設置”。
如果您沒有將 find_multipaths 配置引數設定為 yes, 則您可以使用以下步驟修改多路徑配置檔案以便
在配置多路徑時忽略本地磁盤。
1. 確定哪些磁盤是內部磁盤並將其列入黑名單。
在這個示例中, /dev/sda 是內部磁盤。 請注意:因為在默認多路徑配置檔案中已經對其進行了配
置, 所以執行 multipath -v2 會在多路徑對映中顯示本地磁盤 /dev/sda。
有關 multipath 命令輸出的詳情請參考 第 5.7 節 “多路徑命令輸出”。
紅帽企業版 Linux
6 裝置對映多路徑
20
# multipath -v2
create: SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1 undef
WINSYS,SF2372
size=33 GB features="0" hwhandler="0" wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 0:0:0:0 sda 8:0 [---------
device-mapper ioctl cmd 9 failed: Invalid argument
device-mapper ioctl cmd 14 failed: No such device or address
create: 3600a0b80001327d80000006d43621677 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:0 sdb 8:16 undef ready running
`- 3:0:0:0 sdf 8:80 undef ready running
create: 3600a0b80001327510000009a436215ec undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:1 sdc 8:32 undef ready running
`- 3:0:0:1 sdg 8:96 undef ready running
create: 3600a0b80001327d800000070436216b3 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:2 sdd 8:48 undef ready running
`- 3:0:0:2 sdg 8:112 undef ready running
create: 3600a0b80001327510000009b4362163e undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:3 sdd 8:64 undef ready running
`- 3:0:0:3 sdg 8:128 undef ready running
2. 為防止裝置對映器將 /dev/sda 與其多路徑對應, 請編輯 /etc/multipath.conf 檔案的
blacklist 部分, 使其包括該裝置。 雖然您可以使用 devnode 類型將 sda 裝置列入黑名單, 但那並不
安全, 因為重啟時無法保證 /dev/sda 是同一個名稱。 要將單獨的裝置列入黑名單, 您可以使用那個
裝置的 WWID 將其列入黑名單。
請注意:在 multipath -v2 命令的輸出中, /dev/sda 裝置的 WWID 是 SIBMESXSST336732LC____F3ET0EP0Q000072428BX1。 要將這個裝置列入黑名單, 請在
/etc/multipath.conf 檔案中新增以下內容。
blacklist {
wwid SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1
}
3. 在您更新 /etc/multipath.conf 檔案後, 您必須手動讓 multipathd 守護進程重新載入該文
件。 以下命令可重新載入更新的 /etc/multipath.conf 檔案。
# service multipathd reload
4. 運行以下命令刪除多路徑裝置:
# multipath -f
SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1
5. 要查看是否刪除了該裝置, 您可以運行 multipath -ll 命令顯示當前的多路徑配置。 有關
multipath -ll 命令的詳情請參考 第 5.8 節 “使用多路徑命令進行多路徑查詢”。
要確定被列入黑名單的裝置沒有被重新新增回來, 您可以運行 multipath 命令, 如下所示。 如果您
第 4 章 DM-Multipath 配置檔案
21
沒有指定 -v 選項, 則 multipath 命令默認詳細等級為 v2。
# multipath
create: 3600a0b80001327d80000006d43621677 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:0 sdb 8:16 undef ready running
`- 3:0:0:0 sdf 8:80 undef ready running
create: 3600a0b80001327510000009a436215ec undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:1 sdc 8:32 undef ready running
`- 3:0:0:1 sdg 8:96 undef ready running
create: 3600a0b80001327d800000070436216b3 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:2 sdd 8:48 undef ready running
`- 3:0:0:2 sdg 8:112 undef ready running
create: 3600a0b80001327510000009b4362163e undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:3 sdd 8:64 undef ready running
`- 3:0:0:3 sdg 8:128 undef ready running
3.3. 配置存儲裝置
默認情況下, DM-Multipath 包括對大多數支援 DM-Multipath 的通用存儲陣列的支援。 默認配置值請參考
multipath.conf.defaults 檔案, 其中包括支援的裝置。
如果您需要新增一個在默認情況下不支援的存儲裝置作為已知多路徑裝置, 請編輯
/etc/multipath.conf 檔案並插入正確的裝置資訊。
例如:要新增有關 HP Open-V 系列的資訊, 其條目示例如下, 其中 %n 為裝置名稱:
devices {
device {
vendor "HP"
product "OPEN-V."
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
}
}
有關配置檔案 devices 部分的詳情請參考 第 4.5 節 “配置檔案裝置”。
3.4. 在 initramfs 檔案系統中設置啟動 Multipath
您可以在 initramfs 檔案系統中設定啟動 multipath。 配置 multipath 後, 您可以使用該 multipath 配置文
件重建 initramfs 檔案系統, 方法是執行帶以下選項的 dracut 命令。
# dracut --force --add multipath
--include /etc/multipath /etc/multipath
如果您在 initramfs 檔案系統中運行 multipath, 並更改 multipath 配置檔案, 則必須重建 initramfs
紅帽企業版 Linux
6 裝置對映多路徑
22
檔案系統方可使更改生效。
第 4 章 DM-Multipath 配置檔案
23
第 4 章 DM-Multipath 配置檔案
默認情況下, DM-Multipath 為大多數多路徑的使用提供配置值。 另外, DM-Multipath 支援大多數常見的、 支
持 DM-Multipath 的存儲陣列。 默認配置值和支援的裝置請參考 /usr/share/doc/device-mappermultipath-0.4.9/multipath.conf.defaults 檔案。
您可以編輯 /etc/multipath.conf 覆蓋 DM-Multipath 的默認配置。 如果有必要, 您還可以默認配置文
件不支援的存儲陣列。
注意
您可以在 initramfs 檔案系統中運行 set up multipathing。 如果您在 initramfs 檔案系統中運
行 multipath, 並可以更改 multipath 配置檔案, 您必須重建 initramfs 檔案系統以便使更改生效。
有關使用 multipath 重建 initramfs 檔案系統的下個詳情請參考 第 3.4 節 “在 initramfs 檔案系統中
設置啟動 Multipath”。
本章提供瞭解析和修改 multipath.conf 檔案的詳情。 它包含以下小節:
配置檔案概述
配置檔案黑名單
配置檔案默認
配置檔案多路徑
配置檔案裝置
在多路徑配置檔案中, 您只需要指定需要的配置, 或者您想要修改的在 multipath.conf.defaults 文
件中指定的默認值。 如果檔案中有和您的環境不相關的部分或者您不需要更改默認值, 您可以將其注釋出
來, 因為它們在檔案的起始部分。
配置檔案使用正則表達式描述語法。
配置檔案的注釋版本請參考 /usr/share/doc/device-mapper-multipathd-
0.4.9/multipath.conf.annotated。
4.1. 配置檔案概述
多路徑配置檔案可分為以下幾個部分:
blacklist
不被視為多路徑的具體裝置列表。
blacklist_exceptions
根據 blacklist 部分中的引數列出不在黑名單中的多路徑裝置。
defaults
DM-Multipath 的常規默認設置。
multipaths
各個獨立多路徑裝置的特性設置。 這些數值覆蓋了在配置檔案的 defaults 和 devices 部分中指
定的數值。
紅帽企業版 Linux
6 裝置對映多路徑
24
devices
各個存儲控制器的設置。 這些數值覆蓋了在配置檔案的 defaults 部分指定的數值。 如果您要使
用不是默認支援的存儲陣列, 您可能需要為您的陣列創建 devices 子部分。
當系統決定多路徑裝置的屬性時, 首先它會檢查多路徑設置, 然後是每個裝置的設置, 然後才是多路徑系統
默認設置。
4.2. 配置檔案黑名單
多路徑配置檔案的 blacklist 部分指定在系統配置多路徑裝置時不能使用的裝置。 黑名單中的裝置將無法
分組到多路徑裝置中。
在舊版紅帽企業版 Linux 中, multipath 總是嘗試為每個沒有明確放入黑名單的路徑創建 multipath 裝置。 但
在紅帽企業版 Linux 6 中, 如果將 find_multipaths 配置引數設定為 yes, 那麼 multipath 將只在滿足以
下三個條件之一時創建裝置:
至少有兩個沒有列入黑名單的路徑使用同一 WWID。
用戶可使用 multipath 命令手動強制創建該裝置。
有與之前創建的多路徑裝置相同 WWID 的路徑( 即使那個多路徑裝置目前不存在) 。 無論何時, 創建多
路徑裝置後, 多路徑會記住該裝置的 WWID, 以便在它看到有使用那個 WWID 的路徑時即自動再次創建
該裝置。 這可允許您讓多路徑自動選擇正確的路徑以便創建多路徑裝置而無需編輯多路徑黑名單。
如果您之前創建了一個 multipath 裝置而沒有使用 find_multipaths 引數, 然後您隨後將該引數設定
為 yes, 您需要刪除所有裝置的 WWID, 您不想從 /etc/multipath/wwids 檔案中將其創建為
multipath 裝置。 以下顯示示例 /etc/multipath/wwids 檔案。 WWID 由斜線( /) 括起來:
# Multipath wwids, Version : 1.0
# NOTE: This file is automatically maintained by multipath and multipathd.
# You should not need to edit this file in normal circumstances.
##
Valid WWIDs:
/3600d0230000000000e13955cc3757802/
/3600d0230000000000e13955cc3757801/
/3600d0230000000000e13955cc3757800/
/3600d02300069c9ce09d41c31f29d4c00/
/SWINSYS SF2372 0E13955CC3757802/
/3600d0230000000000e13955cc3757803/
如將 find_multipaths 引數設定為 yes, 則您只需要將那些您不想使其具有多路徑功能的多路徑裝置列
入黑名單, 通常不需要將裝置列入黑名單。
如果您需要將裝置列入黑名單, 您可以根據以下條件進行選擇:
根據 WWID, 如 第 4.2.1 節 “根據 WWID 將裝置列入黑名單” 所述
根據裝置名稱, 如 第 4.2.2 節 “根據裝置名稱將裝置列入黑名單” 所述
根據裝置類型, 如 第 4.2.3 節 “根據裝置類型將其加入黑名單” 所述
默認情況下, 各種裝置類型都是列在黑名單中的, 即使您將配置檔案的初始黑名單部分注釋出來也是如此。
詳情請參考 第 4.2.2 節 “根據裝置名稱將裝置列入黑名單”。
4 .2.1. 根據 WWID 將裝置列入黑名單
您可根據全球識別符將單獨的裝置列入黑名單, 即在配置檔案的 blacklist 部分加入 wwid 條目。
第 4 章 DM-Multipath 配置檔案
25
以下示例顯示了在配置檔案中可將 WWID 為 26353900f02796769 的裝置列入黑名單的行。
blacklist {
wwid 26353900f02796769
}
4 .2.2. 根據裝置名稱將裝置列入黑名單
您可以根據裝置名稱將裝置類型列入黑名單, 以便在配置檔案 blacklist 部分的 devnode 條目中指定不
要將它們分組到多路徑裝置中。
以下實例顯示該配置檔案中的可以將所有 SCSI 裝置放入黑名單的行, 因為它將所有 sd* 裝置放入黑名單。
blacklist {
devnode "^sd[a-z]"
}
您可以使用配置檔案 blacklist 部分的 devnode 條目指定要列入黑名單的每個裝置, 而不是指定具體類
型的所有裝置, 我們不推薦使用後一種情況。 除非根據 udev 規則的靜態對映, 我們無法保證在重啟後每個
裝置的名稱是一樣的。 例如:重啟後, 某個裝置的名稱可能從 /dev/sda 變為 /dev/sdb。
默認情況下, 以下 devnode 條目是編譯到默認黑名單中的。 這些條目中加入黑名單中的裝置一般不支援
DM-Multipath。 要在這些裝置中啟用多路徑, 您可能需要在配置檔案的 blacklist_exceptions 部分指
定這些裝置, 如 第 4.2.4 節 “黑名單之外的裝置” 所述。
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
4 .2.3. 根據裝置類型將其加入黑名單
您可以在配置檔案的 blacklist 部分與 device 一同指定具體裝置類型。 以下實例將所有 IBM DS4200
和 HP 裝置放入黑名單。
blacklist {
device {
vendor "IBM"
product "3S42" #DS4200 Product 10
}d
evice {
vendor "HP"
product "*"
}
}
4 .2.4 . 黑名單之外的裝置
您可使用配置檔案的 blacklist_exceptions 部分為被默認加入黑名單的裝置啟用多路徑。
例如:如果您有大量裝置, 但只有一個需要多路徑( WWID 為
3600d0230000000000e13955cc3757803) , 您不需要將您想要使用多路徑的裝置之外的每個裝置單獨
加入黑名單, 您只需要將所有裝置都加入黑名單, 然後在 /etc/multipath.conf 檔案中新增以下行以便
只允許您想要使用多路徑的裝置:
紅帽企業版 Linux
6 裝置對映多路徑
26
blacklist {
wwid "*"
} b
lacklist_exceptions {
wwid "3600d0230000000000e13955cc3757803"
}
當在配置檔案的 blacklist_exceptions 指定裝置時, 您必須以指定黑名單的相同方法來指定例外情
況。 例如:在 devnode 黑名單條目中指定的裝置無法使用 WWID 將其指定為例外情況, 即使列入黑名單的
裝置和該 WWID 關聯也不行。 同樣, devnode 例外也只適用於 devnode 條目, 而 device 例外只適用於
device 條目。
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/dev/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.conf 配置檔案 defaults 部分設置的屬性。 這些值
會被 DM-Multipath 使用, 除非用 multipath.conf 配置檔案的 devices 和 multipaths 部分指定的
屬性將其覆蓋。
第 4 章 DM-Multipath 配置檔案
27
注意
從紅帽企業版 Linux 6.0 開始棄用 mode、 uid 和 gid 引數。 device-mapper 裝置的權限( 包括
multipath 對映) 由 udev 規則設定。 /usr/share/doc/device-mapper-version 中有一個模
板檔案, 名為 12-dm-permissions.rules, 您可以使用它並將其放在 /etc/udev/rules.d
目錄中使其生效。
紅帽企業版 Linux
6 裝置對映多路徑
28
表 4 .1. 多路徑配置默認設置
屬性 描述
polling_interval 以秒為單位指定兩次路徑檢查之間的間隔。 對正常工作的路徑, 兩次
檢查間的間隔會逐漸增加到 polling_interval 的四倍。 默認值為
5。
udev_dir 生成 udev 裝置節點的目錄, 默認值為 /dev。
multipath_dir 儲存動態共享對象的目錄。 默認值依系統而定, 通常為
/lib/multipath。
find_multipaths
定義設定多路徑裝置的模式。 如果將這個引數設定為 yes, 那麼多路
徑將不會嘗試為每個不在黑名單中的路徑創建裝置。 反之, 多路徑將
只在滿足以下三給條件之一時創建裝置:
- 至少有兩個沒有列入黑名單的路徑使用同一 WWID。
- 用戶通過使用 multipath 命令指定裝置強制創建該裝置。
- 路徑擁有與之前創建的多路徑裝置相同的 WWID。 無論何時使用
find_multipaths 組件創建多路徑裝置後, 多路徑都會記住該裝置
的 WWID 以便在再次看到使用那個 WWID 的路徑時自動創建裝置。 這
可讓您自動選擇正確的所路徑創建多路徑裝置而無需編輯多路徑黑名
單。 如果之前您在沒有設定 find_multipaths 引數的情況下創建
了多路徑裝置, 有關步驟請查看 第 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
指定用於未指定路徑的默認路徑分組策略, 可能的值包括:
failover:每個優先組群有一個路徑。
multibus:所有有效路徑在一個優先組群中。
group_by_serial:每個檢測到的系列號有一個優先組群。
group_by_prio:每個優先組群有一個路徑優先值。 優先權根據指
定為 global、 per-controller 或者 per-multipath 選項的調用程式決
第 4 章 DM-Multipath 配置檔案
29
定。
group_by_node_name:每個目標節點名有一個優先組。 目標節點
名儲存在 /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:為 Compaq/HP 控制程式在啟用/等待模式中生成路徑優先
權。
hds:為 Hitachi HDS Modular 存儲陣列生成路徑優先權。
默認值為 const。
features 多路徑裝置的默認額外功能。 現有的唯一功能是
queue_if_no_path, 其功能與將 no_path_retry 設為 queue
一致。 有關使用這個功能可能出現問題的詳情, 請參考 第 5.6 節 “有
queue_if_no_path 功能的問題”。
path_checker
指定用於決定路徑狀態的默認方法, 可能的值包括:
readsector0:讀取該裝置的第一扇區。
tur:在該裝置中執行 TEST UNIT READY。
emc_clariion:查詢 EMC Clariion 具體 EVPD 頁面 0xCO 以便決
定路徑。
hp_sw:為使用 Active/Standby 韌體的 HP 存儲陣列檢查路徑狀態。
rdac:為 LSI/Engenio RDAC 存儲控制器檢查路徑狀態。
紅帽企業版 Linux
6 裝置對映多路徑
30
directio:使用直接 I/O 讀取第一個扇區。
默認值為 directio。
failback
管理路徑組群出錯切換。
immediate 值指定立即恢復到包含活躍路徑的最高級別路徑組群。
manual 值指定不需要立即恢復, 只有在操作者幹預的情況下會發生
恢復。
followover 值指定當路徑組的第一個路徑成為活躍路徑時應執行自
動恢復。 這可讓節點在另一個節點請求故障修復時不會自動恢復。
大於 0 的數字值指定推遲出錯切換, 以秒錶示。
默認值為 manual。
rr_min_io 指定切換到當前路徑組的下一個路徑前路由到該路徑的 I/O 請求數。
這個設置值用於運行核心為 2.6.31 之前的系統。 使用新版本的系統應
使用 rr_min_io_rq。 默認值為 1000。
rr_min_io_rq 使用 request-based device-mapper-multipath 指定切換到當前路徑組
的下一個路徑前路由到該路徑的 I/O 請求數。 這個設置值用於運行當
前核心的系統。 在使用核心 2.6.31 版本之前的系統應使用
rr_min_io。 默認值為 1。
rr_weight 如果將其設為 priorities, 就不會在調用 selector 選擇下一個
路徑前向路徑發送 rr_min_io 請求, 而是由 rr_min_io 乘以路徑
優先權決定發送的請求數, 即由 prio 功能決定。 如果將其設定為
uniform, 則所有路徑都有相同的加權。 默認值為 uniform。
no_path_retry
這個屬性的數字值指定系統在禁用隊列前應該試圖使用失敗的路徑的
次數。
fail 值說明立即失敗, 無需排隊。
queue 表示固定路徑前排隊不會停止。
默認值為 0。
user_friendly_names 如果將其設為 yes, 即指定該系統應該使用檔案
/etc/multipath/bindings 為該多路徑分配一個持久且唯一的別
名, 格式為 mpathn。 如果設定為 no, 即指定該系統應使用 WWID
作為該多路徑的別名。 在這兩種情況下, 您在這裡指定的數值將被您
在配置檔案 multipaths 部分指定的具體裝置別名覆蓋。 默認值為
no。
queue_without_daemon 如果將其設定為 no, multipathd 守護進程將在其關閉時禁用所有
裝置排隊。 默認值為 no。
flush_on_last_del 如果將其設定為 yes, multipathd 守護進程將在刪除了最後一個到
某個裝置的路徑時禁用查詢。 默認值為 no。
max_fds 設定 multipath 可以開啟的檔案提示符以及 multipathd 守護進程的
最大值。 這與 ulimit -n 命令效果一致。 從紅帽企業版 Linux 6.3 開
始, 默認值為 max, 該值將該系統限制到
/proc/sys/fs/nr_open。 對其較早的版本, 如果沒有設定這個
第 4 章 DM-Multipath 配置檔案
31
值, 則使用調用進程作為開啟檔案提示符的最大值, 通常為 1024。 安
全起見, 如果該數值大於 1024, 應將其設定為路徑最大值+32。
checker_timeout 執行帶明確超時設定的 SCSI 命令的路徑檢查程式的超時時間。 默認
值採用 sys/block/sdx/device/timeout 中指定的值。
fast_io_fail_tmo 在 FC 遠程埠發現問題後, 無法在那個遠程埠裝置中執行 I/O 前
SCSI 層要等待的時間。 默認值應小於 dev_loss_tmo 值。 將其設定
為 off 則會禁用超時。 默認值由該操作系統決定。
dev_loss_tmo 在 FC 遠程埠發現問題後, 到從該系統中刪除它之前 SCSI 層要等待
的時間。 將其設定為無限, 則會將其設定為 2147483647 秒, 或者
68 年。 默認值由該操作系統決定。
hwtable_regex_match
( 紅帽企業版 Linux 6.3 發行本及之後的版本) 控制 multipath 如何使
用內嵌裝置配置整合該配置檔案 devices 部分的裝置配置。
multipath.conf 檔案 devices 部分中的每個裝置配置都可以創
建其自己的裝置配置, 也可以修改內嵌裝置配置。 在紅帽企業版 Linux
6.3 之前, 如果某用戶裝置配置中的銷售商、 產品以及修訂字串與內
嵌裝置配置完全匹配, 則該用戶配置中的選項就可以修改內嵌配置。
否則該用戶的裝置配置就將被視為一個新配置。
如果將 hwtable_regex_match 設定為 yes, 則使用正則表達式匹
配。 銷售商、 產品以及修訂字串都是正則表達式。 該用戶的這些選
項的裝置配置值與內嵌裝置配置值匹配。 這個匹配還可以同樣的方式
用於實際裝置的銷售商、 產品以及修訂字串是否與裝置配置字串
匹配以便決定為該裝置使用哪個配置。 如果用戶裝置配置匹配, 那麼
就使用該用配置中的選項修改內嵌配置。 否則該用戶的裝置配置就將
被視為一個新配置。
retain_attached_hw_han
dler
( 紅帽企業版 Linux 6.4 及之後的版本) 如果將這個引數設定為 yes,
且 scsi 層已為該路徑裝置附加可硬體控制程式碼, multipath 將不會強制該
裝置使用 mutipath.conf 檔案指定的 hardware_handler。 如
果該 scsi 層沒有附加硬體控制程式碼, multipath 將繼續使用其配置的硬體
控制程式碼。 默認值為 no。
detect_prio ( 紅帽企業版 Linux 6.4 及之後的版本) 如果將這個引數設定為
yes, multipath 將首先檢查該裝置是否支援 ALUA, 如果支援, 則自
動為該裝置分配 alua 排序器。 如果該裝置不支援 ALUA, 則按管用
方法確定排序器。 默認值為 no。
4.4. 多路徑裝置配置屬性
表 4.2 “多路徑屬性” 顯示您可以在 multipath.conf 配置檔案的 multipaths 部分為每個具體多路徑設
備設定的屬性。 這些屬性只可用於指定的多路徑。 這些默認設置可由 DM-Multipath 使用並覆蓋在
multipath.conf 檔案的 defaults 和 devices 部分設定的屬性。
紅帽企業版 Linux
6 裝置對映多路徑
32
表 4 .2. 多路徑屬性
屬性 描述
wwid 指定 multipath 屬性採用的多路徑裝置的 WWID。 這個引數在
multipath.conf 檔案的這個部分是必須的。
alias 指定使用 multipath 屬性的多路徑裝置的符號名稱。 如果您使用的
是 user_friendly_names, 請必要將其設定為 mpathn, 這樣可
能會與自動分配的用戶友好名稱衝突, 進而給出不正確的裝置節點名
稱。
path_grouping_policy
指定用於未指定路徑的默認路徑分組策略, 可能的值包括:
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 的總量除以每個路徑的相對流量決定的。
failback
管理路徑組群出錯切換。
immediate 值指定立即恢復到包含活躍路徑的最高級別路徑組群。
manual 值指定不需要立即恢復, 只有在操作者幹預的情況下會發生
恢復。
followover 值指定當路徑組的第一個路徑成為活躍路徑時應執行自
動恢復。 這可讓節點在另一個節點請求故障修復時不會自動恢復。
大於 0 的數字值指定推遲出錯切換, 以秒錶示。
prio
指定要獲得路徑優先值所需調用的默認程式及引數。 例如:SPC-3 中
的 ALUA 字節提供了一個可改變的 prio 值。 可能的值包括:
const:為所有路徑設定優先權 1。
emc:為 EMC 陣列生成路徑優先權。
第 4 章 DM-Multipath 配置檔案
33
alua:根據 SCSI-3 ALUA 設置生成路徑優先權。
tpg_pref:根據 SCSI-3 ALUA 設置生成路徑優先權, 使用首選埠
字節。
ontap:為 NetApp 陣列生成路徑優先權。
rdac:為 LSI/Engenio RDAC 控制程式生成路徑優先權。
hp_sw:為 Compaq/HP 控制程式在啟用/等待模式中生成路徑優先
權。
hds:為 Hitachi HDS Modular 存儲陣列生成路徑優先權。
no_path_retry
這個屬性的數字值指定系統在禁用隊列前應該試圖使用失敗的路徑的
次數。
fail 值說明立即失敗, 無需排隊。
queue 表示固定路徑前排隊不會停止。
rr_min_io 指定切換到當前路徑組的下一個路徑前路由到該路徑的 I/O 請求數。
這個設置值用於運行核心為 2.6.31 之前的系統。 使用新版本的系統應
使用 rr_min_io_rq。 默認值為 1000。
rr_min_io_rq 使用 request-based device-mapper-multipath 指定切換到當前路徑組
的下一個路徑前路由到該路徑的 I/O 請求數。 這個設置值用於運行當
前核心的系統。 在使用核心 2.6.31 版本之前的系統應使用
rr_min_io。 默認值為 1。
rr_weight 如果將其設為 priorities, 就不會在調用 selector 選擇下一個
路徑前向路徑發送 rr_min_io 請求, 而是由 rr_min_io 乘以路徑
優先權決定發送的請求數, 即由 prio 功能決定。 如果將其設定為
uniform, 則所有路徑都有相同的加權。
flush_on_last_del 如果將其設定為 yes, multipathd 將在刪除最後一個到某個裝置的路
徑時禁用排隊。
user_friendly_names 如果將其設為 yes, 即指定該系統應該使用檔案
/etc/multipath/bindings 為該多路徑分配一個持久且唯一的別
名, 格式為 mpathn。 如果設定為 no, 即指定該系統應使用 WWID
作為該多路徑的別名。 在這兩種情況下, 您在這裡指定的數值將被您
在配置檔案 multipaths 部分指定的具體裝置別名覆蓋。
以下示例顯示在配置檔案中為兩個特定多路徑裝置指定的多路徑屬性。 第一個裝置的 WWID 為
3600508b4000156d70001200000b0000, 符號名稱為 yellow。
示例中第二個多路徑裝置的 WWID 為 1DEC_____321816758474, 符號名稱為 red。 在這個示例
中, rr_weight 屬性被設為 priorities。
紅帽企業版 Linux
6 裝置對映多路徑
34
multipaths {
multipath {
wwid 3600508b4000156d70001200000b0000
alias yellow
path_grouping_policy multibus
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}m
ultipath {
wwid 1DEC_____321816758474
alias red
rr_weight priorities
}
}
4.5. 配置檔案裝置
表 4.3 “裝置屬性” 顯示您可以為 multipath.conf 配置檔案 devices 部分的每個獨立存儲裝置設定的屬
性。 這些屬性可由 DM-Multipath 使用, 除非使用 multipath.conf 檔案 multipaths 部分為包含該設
備的路徑指定的屬性覆蓋這個值。 這些屬性覆蓋了在 multipath.conf 檔案 defaults 部分設定的屬
性。
默認情況下, 在多路徑配置中包括很多支援多路徑的裝置。 這些裝置默認支援值列在
multipath.conf.defaults 檔案中。 您可能不需要為這些裝置修改默認值, 但如果您想要修改默認
值, 您可以通過在想要更改默認值的裝置的配置檔案中新增一個條目來更改默認值。 您可以為該裝置複製
multipath.conf.defaults 檔案中的裝置配置默認值, 並覆蓋那些您想要更改的值。
要在配置檔案的這個部分新增沒有默認自動配置的裝置, 您需要設定 vendor 和 product 引數。 您可在
/sys/block/device_name/device/vendor 和 /sys/block/device_name/device/model 檔案
中找到這些值, 其中 device_name 是要進行多路徑操作的裝置, 示例如下:
# cat /sys/block/sda/device/vendor
WINSYS
# cat /sys/block/sda/device/model
SF2372
要指定的附加引數要視具體裝置而定。 如果裝置是主動/主動模式, 您通常不需要設置附加引數。 您可能想要
將 path_grouping_policy 設為 multibus。 其它您可能需要設定的引數有 no_path_retry 和
rr_min_io, 詳見 表 4.3
“裝置屬性”。
如果裝置是主動/被動模式, 但它會自動將路徑切換到被動路徑, 那麼您需要將檢查器功能改為不需向路徑發
送 I/O 來測試其是否工作( 否則, 您的裝置將一直進行出錯冗餘) 的功能。 這幾乎意味著您將
path_checker 設為 tur。 這對所有支援 Test Unit Ready 命令的 SCSI 裝置都適用。
如果該裝置需要一個特殊的命令切換路徑, 那麼為多路徑配置此裝置需要硬體處理器核心模塊。 當前的硬體
處理器是 emc。 如果這樣還不能滿足您的裝置, 則您可能無法為多路徑配置該裝置。
第 4 章 DM-Multipath 配置檔案
35
表 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
指定用於未指定路徑的默認路徑分組策略, 可能的值包括:
failover = 每個優先組群有一個路徑
multibus = 所有有效路徑在一個優先組群中
group_by_serial = 每個檢測到的系列號有一個優先組群
group_by_prio = 每個路徑優先值有一個優先組群
group_by_node_name = 每個目標節點名有一個優先組群
getuid_callout 指定默認程式和引數調用獲得唯一路基功能識別程式。 需要絕對路
徑。
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 頁面 0xCO 以便決
紅帽企業版 Linux
6 裝置對映多路徑
36
定路徑。
hp_sw:為使用 Active/Standby 韌體的 HP 存儲陣列檢查路徑狀態。
rdac:為 LSI/Engenio RDAC 存儲控制器檢查路徑狀態。
directio:使用直接 I/O 讀取第一個扇區。
features 多路徑裝置的額外功能。 現有的唯一功能是 queue_if_no_path,
它與將 no_path_retry 設為 queue 一致。 有關使用這個功能可能
出現問題的詳情, 請參考 第 5.6 節 “有 queue_if_no_path 功能的問
題”。
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:為 Compaq/HP 控制程式在啟用/等待模式中生成路徑優先
權。
hds:為 Hitachi HDS Modular 存儲陣列生成路徑優先權。
failback
管理路徑組群出錯切換。
immediate 值指定立即恢復到包含活躍路徑的最高級別路徑組群。
manual 值指定不需要立即恢復, 只有在操作者幹預的情況下會發生
恢復。
followover 值指定當路徑組的第一個路徑成為活躍路徑時應執行自
動恢復。 這可讓節點在另一個節點請求故障修復時不會自動恢復。
大於 0 的數字值指定推遲出錯切換, 以秒錶示。
rr_weight 如果將其設為 priorities, 就不會在調用 selector 選擇下一個
路徑前向路徑發送 rr_min_io 請求, 而是由 rr_min_io 乘以路徑
優先權決定發送的請求數, 即由 prio 功能決定。 如果將其設定為
uniform, 則所有路徑都有相同的加權。
no_path_retry
這個屬性的數字值指定系統在禁用隊列前應該試圖使用失敗的路徑的
次數。
fail 值說明立即失敗, 無需排隊。
第 5 章 DM-Multipath 管理及故障排除
37
queue 表示固定路徑前排隊不會停止。
rr_min_io 指定切換到當前路徑組的下一個路徑前路由到該路徑的 I/O 請求數。
這個設置值用於運行核心為 2.6.31 之前的系統。 使用新版本的系統應
使用 rr_min_io_rq。 默認值為 1000。
rr_min_io_rq 使用 request-based device-mapper-multipath 指定切換到當前路徑組
的下一個路徑前路由到該路徑的 I/O 請求數。 這個設置值用於運行當
前核心的系統。 在使用核心 2.6.31 版本之前的系統應使用
rr_min_io。 默認值為 1。
fast_io_fail_tmo 在 FC 遠程埠發現問題後, 無法在那個遠程埠裝置中執行 I/O 前
SCSI 層要等待的時間。 默認值應小於 dev_loss_tmo 值。 將其設定
為 off 則會禁用超時。
dev_loss_tmo 在 FC 遠程埠發現問題後, 到從該系統中刪除它之前 SCSI 層要等待
的時間。 將其設定為無限, 則會將其設定為 2147483647 秒, 或者
68 年。
flush_on_last_del 如果將其設定為 yes, multipathd 守護進程將在刪除了最後一個到
某個裝置的路徑時禁用排隊。
user_friendly_names 如果將其設為 yes, 即指定該系統應該使用檔案
/etc/multipath/bindings 為該多路徑分配一個持久且唯一的別
名, 格式為 mpathn。 如果設定為 no, 即指定該系統應使用 WWID
作為該多路徑的別名。 在這兩種情況下, 您在這裡指定的數值將被您
在配置檔案 multipaths 部分指定的具體裝置別名覆蓋。 默認值為
no。
retain_attached_hw_han
dler
( 紅帽企業版 Linux 6.4 及之後的版本) 如果將這個引數設定為 yes,
且 scsi 層已為該路徑裝置附加可硬體控制程式碼, multipath 將不會強制該
裝置使用 mutipath.conf 檔案指定的 hardware_handler。 如
果該 scsi 層沒有附加硬體控制程式碼, multipath 將繼續使用其配置的硬體
控制程式碼。
detect_prio ( 紅帽企業版 Linux 6.4 及之後的版本) 如果將這個引數設定為
yes, multipath 將首先檢查該裝置是否支援 ALUA, 如果支援, 則自
動為該裝置分配 alua 排序器。 如果該裝置不支援 ALUA, 則按管用
方法確定排序器。
以下示例顯示了多路徑配置檔案的 device 條目。
# }
# device {
# vendor "COMPAQ "
# product "MSA1000 "
# path_grouping_policy multibus
# path_checker tur
# rr_weight priorities
# }
#}
紅帽企業版 Linux
6 裝置對映多路徑
38
第 5 章 DM-Multipath 管理及故障排除
本章提供了在運行的系統中管理 DM-Multipath 的資訊, 其中包括以下部分:
重新定義在線多路徑裝置大小
將 root 裝置動單一路徑裝置移動到多路徑裝置中
將 swap 裝置動單一路徑裝置移動到多路徑裝置中。
多路徑守護進程
大量 LUN 造成的問題
有 queue_if_no_path 功能的問題
multipath 命令輸出
使用 multipath 命令進行多路徑查詢
multipath 命令選項
用 dmsetup 命令進行多路徑查詢
使用 multipathd 互動控制檯進行故障排除
5.1. 重新定義在線多路徑裝置大小
如果您要重新定義在線多路徑裝置, 請按以下步驟操作。
1. 重新定義您的物理裝置大小。
2. 使用以下命令查找 LUN 的路徑:
# multipath -l
3. 重新定義您的路徑大小。 對於 SCSI 裝置, 在 rescan 檔案中寫入 1 以便讓 SCSI 驅動器重新掃描,
如以下命令:
# echo 1 > /sys/block/device_name/device/rescan
4. 運行重新定義多路徑大小的命令重新定義您的多路徑裝置大小:
# multipathd -k'resize map mpatha'
5. 重新定義檔案系統大小( 假設沒有使用 LVM 或者 DOS 分割槽) :
# resize2fs /dev/mapper/mpatha
5.2. 將 root 檔案系統從單一路徑裝置移動到多路徑裝置中
如果您在單一路徑裝置中安裝您的系統, 並後來在 root 檔案系統中新增了另一個路徑, 則您需要將您的 root
檔案系統移動到多路徑裝置中。 本小節記錄了從單一路徑移動到多路徑裝置的過程。
安裝 device-mapper-multipath 軟件包後執行以下步驟:
1. 執行以下命令創建 /etc/multipath.conf 配置檔案, 載入多路徑模塊並為 multipathd 將
chkconfig 設定為 on:
# mpathconf --enable
有關 mpathconf 命令輸出的詳情請參考 第 3.1 節 “設置 DM-Multipath”。
第 5 章 DM-Multipath 管理及故障排除
39
2. 編輯 /etc/multipath.conf 檔案的 blacklist 和 blacklist_exceptions 部分, 如
第 4.2 節 “配置檔案黑名單” 所述。
3. 要確定您正確設定了配置檔案, 您可以運行 /sbin/multipath 命令, 使用 -v3 選項查看該多路徑
守護進程是否嘗試為您的 root 裝置創建多路徑裝置。 該命令會失敗, 因為 root 裝置正在使用中, 但
該命令的輸出應該顯示該 root 裝置所在路徑列表。
您應該可在命令輸出中看到有以下格式的行:
WWID H:B:T:L devname MAJOR:MINOR
例如:如果在 sda 或者它的一個分割槽中設定您的 root 檔案系統, 您可在輸出中看到類似如下的行:
===== paths list =====
...
1ATA WDC WD800JD-75MSA3 WD-WMAM9F 1:0:0:0 sda
8:0
...
在之後的輸出結果中, 您應該可以看到分配給多路經裝置的 root 裝置:
time | devname: ownership set to mpathdev
例如:輸出結果顯示如下:
Jun 14 06:48:21 | sda: ownership set to mpatha
您將看到一條說明告訴您無法使用該命令的以下格式創建多路經裝置:
time | mpathdev: domap (0) failure for create/reload map
如上面的示例所示, 您可以在命令輸出中看到以下行:
Jun 14 06:48:21 | mpatha: domap (0) failure for create/reload map
4. 要使用 multipath 重建 initramfs 檔案系統, 請使用附帶以下選項的 dracut 命令:
# dracut --force --add multipath
--include /etc/multipath /etc/multipath
5. 如果您的 root 裝置不是 LVM 卷, 且使用裝置名稱掛載, 則您需要邊界 fstab 檔案切換為適當的多路
徑裝置名稱。 如果您的 root 裝置是 LVM 裝置或者使用 UUID 或者其它屬性掛載, 就不需要這個步
驟。
a. 使用第三步中描述的步驟運行代 -v3 選項 /sbin/multipath 命令確定 root 裝置的 WWID。
b. 在 /etc/multipath.conf 檔案中為 root 裝置設定別名。
multipaths {
multipath {
wwid WWID_of_root_device
alias rootdev
}
}
c. 編輯 /etc/fstab 並使用帶這個多路徑裝置的 root 裝置替換舊的裝置路徑。
例如:如果您在 /etc/fstab 檔案中有以下條目:
紅帽企業版 Linux
6 裝置對映多路徑
40
/dev/sda1 / ext4 defaults 1 1
您可將該條目更改如下:
/dev/mapper/rootdev / ext4 defaults 1 1
如果您要編輯 /etc/fstab 檔案, 您還需要編輯 /etc/grub/grub.conf 檔案, 並將 root 引數從
root=/dev/sda1 改為 root=/dev/mapper/rootdev。
您編輯 grub.conf 檔案前條目應類似如下。
title Red Hat Enterprise Linux FoundationServer
(2.6.32-71.24.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.24.1.el6.x86_64 ro root=/dev/sda1
rd_NO_LUKS
rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us
console=ttyS0,115200n8 crashkernel=auto
initrd /initramfs-2.6.32-71.24.1.el6.x86_64.img
您編輯 grub.conf 檔案後條目應類似如下。
title Red Hat Enterprise Linux FoundationServer
(2.6.32-71.24.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-71.24.1.el6.x86_64 ro
root=/dev/mapper/rootdev
rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16
KEYTABLE=us console=ttyS0,115200n8 crashkernel=auto
initrd /initramfs-2.6.32-71.24.1.el6.x86_64.img
6. 關閉機器。
7. 配置 FC 開關以便可在該機器中看到其它路徑。
8. 引導機器。
9. 查看 root 檔案系統( '/') 是否在多路徑裝置中。
5.3. 將 swap 檔案系統從單一路徑裝置移動到多路徑裝置中
默認情況下將 swap 裝置設定為邏輯卷。 只要您在由該邏輯卷組組成的物理卷中配置多路徑。 就不要求在將
其配置為多路徑裝置時有任何特殊配置。 如果您的 swap 裝置不是 LVM 卷, 且使用裝置名稱掛載該卷, 您
就需要編輯 fstab 檔案將其轉換為適當的多路徑裝置名稱。
1. 運行 /sbin/multipath 命令使用 -v3 選項確定 swap 裝置的 WWID 號。 該命令的輸出應該在路徑
列表中顯示該 swap 裝置。
您可以在該命令輸出中看到有以下格式的行, 它顯示 swap 裝置:
WWID H:B:T:L devname MAJOR:MINOR
例如:如果在 sda 或者它的分割槽中設置 swap 檔案系統, 您會在輸出中看到類似如下的行:
===== paths list =====
...
1ATA WDC WD800JD-75MSA3 WD-WMAM9F 1:0:0:0 sda
8:0
...
2. 在 /etc/multipath.conf 檔案中為 swap 裝置配置別名。
第 5 章 DM-Multipath 管理及故障排除
41
multipaths {
multipath {
wwid WWID_of_swap_device
alias swapdev
}
}
3. 編輯 /etc/fstab 並使用帶這個多路徑裝置的 root 裝置替換舊的裝置路徑。
例如:如果您在 /etc/fstab 檔案中有以下條目:
/dev/sda2 swap ext4 defaults 0 0
您可將該條目更改如下:
/dev/mapper/swapdev swap ext4 defaults 0 0
5.4. 多路徑守護進程
如果您在進行多路徑配置時遇到問題, 您應該確定多路徑守護進程正在運行, 如 第 3 章 設置 DM-Multipath
所述。 必須運行 multipathd 守護進程以便使用多路徑裝置。
5.5. 大量 LUN 造成的問題
當在某個節點中新增大量 LUN 時, 使用多路徑裝置可明顯延長 udev 裝置過濾器為其生成裝置節點所用的
時間。 如果您遇到過這個問題, 您可在 /etc/udev/rules.d/40-multipath.rules 檔案中刪除以下
行解決這個問題:
KERNEL!="dm-[0-9]*", ACTION=="add",
PROGRAM=="/bin/bash -c '/sbin/lsmod |
/bin/grep ^dm_multipath'", RUN+="/sbin/multipath -v0 %M:%m"
這行會在每次向該節點中新增塊裝置時讓 udev 裝置管理器運行 multipath。 雖然刪除了這一
行, multipathd 守護進程仍將自動生成多路徑裝置, 在引導過程中仍將為帶多路徑根檔案系統的節點調
用 multipath。 唯一的改變就是沒有運行 multipathd 守護進程不再自動生成多路徑裝置, 對大多數多
路徑用戶來說應該不是個問題。
5.6. 有 queue_if_no_path 功能的問題
如果在 /etc/multipath.conf 檔案中指定 features "1 queue_if_no_path", 那麼所有采用 I/O
操作的進程都將被掛起直到恢復了一個或者多個路徑。 要避免這種情況, 請在 /etc/multipath.conf 文
件中設定 no_path_retry N 引數( 其中 N 是該系統應該重試某個路徑的次數) 。
當您設定 no_path_retry 引數時, 還要從 /etc/multipath.conf 檔案中刪除 features "1
queue_if_no_path" 選項。 但如果您使用默認編譯為 features "1
queue_if_no_path" 選項的多
路徑裝置( 很多 SAN 裝置都是如此) , 則您必須新增 features "0" 覆蓋這個默認設置。 您可以將
/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf.defaults 中您裝置
的現有 devices 部分複製到 /etc/multipath.conf 並進行編輯以便適應您的需要。
如果您需要使用 features "1
queue_if_no_path" 選項, 且您遇到過這裡提到的問題, 請使用
dmsetup 命令為特定 LUN 編輯運行時策略( 就是說對該特定 LUN 來說所有路徑都不可用) 。 例如:如果
您想要將多路徑裝置 mpath2 的策略從 "queue_if_no_path" 改為 "fail_if_no_path", 請執行以
下命令。
紅帽企業版 Linux
6 裝置對映多路徑
42
dmsetup message mpathc 0 "fail_if_no_path"
請注意:您必須指定 mpathn 別名而不是該路徑。
5.7. 多路徑命令輸出
當您生成、 修改或者列出多路徑裝置時, 您會獲得一個當前裝置組成的列印輸出, 格式如下。
對於每個多路徑裝置:
action_if_any: alias (wwid_if_different_from_alias)
dm_device_name_if_known
vendor,product size=size features='features' hwhandler='hardware_handler'
wp=write_permission_if_known
對與每個路徑組群:
-+- policy='scheduling_policy'
prio=prio_if_known
status=path_group_status_if_known
對於每個路徑:
`- host:channel:id:lun
devnode major:minor dm_status_if_known path_status
online_status
例如, 多路徑命令的輸出可能是如下形式:
3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 7:0:0:0 sdf 8:80 active ready running
如果該路徑已經啟用並準備好執行 I/O, 那麼路徑的狀態就是 ready 或者 ghost。 如果該路徑無法使用,
則狀態為 faulty 或者 shaky。 路徑的狀態由 multipathd 守護進程根據在 /etc/multipath.conf
檔案中定義的通訊間隔進行週期性更新。
dm 狀態和路徑的狀態相似, 但從核心來看, dm 有兩個狀態:failed( 類似 faulty) 和 active( 涵蓋
所有其它路徑狀態) 。 少數情況下, 裝置的路徑狀態和 dm 狀態會暫時不同。
online_status 的可能值為 running 和 offline。 offline 意味著這個 SCSI 裝置已被禁用。
注意
當生成或者修改一個多路徑裝置時, 路徑組群狀態、 dm 裝置名稱、 寫入權限和 dm 狀態是未知的。
另外, 功能也不一定正確。
5.8. 使用多路徑命令進行多路徑查詢
您可以使用 multipath 命令的 -l 和 -ll 選項來顯示現有多路徑配置。 -l 選項顯示從 sysfs 以及裝置
對映器中收集的多路徑拓補資訊。 -ll 選項顯示 -l 顯示的所有資訊以及該系統額外可用的其它組件。
修訂記錄
43
當顯示多路徑配置時, 您可以使用 multipath 命令的 -v 選項指定三種詳細等級。 指定為 -v0 時沒有輸
出。 指定為 -v1 則只輸出生成或者更新的路徑名稱。 指定 -v2 將輸出所有檢測到的路徑、 多路徑和裝置映
射。
以下示例顯示了 multipath -l 命令的輸出。
# multipath -l
3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 7:0:0:0 sdf 8:80 active ready running
以下示例顯示了 multipath -l1 命令的輸出。
# multipath -ll
3600d0230000000000e13955cc3757801 dm-10 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 19:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 18:0:0:1 sdh 8:112 active ready running
3600d0230000000000e13955cc3757803 dm-2 WINSYS,SF2372
size=125G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 19:0:0:3 sde 8:64 active ready running
`- 18:0:0:3 sdj 8:144 active ready running
5.9. 多路徑命令選項
表 5.1 “有用的 multipath 命令選項” 描述了一些您可能會用到的 multipath 命令選項。
表 5.1. 有用的 multipath 命令選項
選項 描述
-l 顯示來自 sysfs 和裝置對映器的當前多路徑配置。
-ll 顯示來自 sysfs 、 裝置對映器以及系統中的其它可用組件的當前多路徑配
置。
-f device 刪除命名的多路徑裝置。
-F 刪除所有不使用的多路經裝置。
5.10. 使用 dmsetup 命令確定裝置對映器條目
您可以使用 dmsetup 找出哪個裝置對映器條目與多路徑的裝置對映。
以下命令顯示所有裝置對映器裝置及其主、 副號碼。 副號碼確定 dm 裝置的名稱。 例如:副號碼 3 與多路徑
的裝置 /dev/dm-3 對映。
紅帽企業版 Linux
6 裝置對映多路徑
44
# dmsetup ls
mpathd (253:4)
mpathep1 (253:12)
mpathfp1 (253:11)
mpathb (253:3)
mpathgp1 (253:14)
mpathhp1 (253:13)
mpatha (253:2)
mpathh (253:9)
mpathg (253:8)
VolGroup00-LogVol01 (253:1)
mpathf (253:7)
VolGroup00-LogVol00 (253:0)
mpathe (253:6)
mpathbp1 (253:10)
mpathd (253:5)
5.11. 使用 multipathd 互動控制檯進行故障排除
multipathd -k 命令是一個 multipathd 守護進程的互動介面。 執行此命令將進入互動的多路徑控制
臺。 執行此命令後, 您可以輸入 help 來獲得可用的命令列表。 您可以輸入互動命令, 或者您還可以輸入
CTRL-D 退出。
multipathd 互動控制檯可用來在您的系統有問題時進行故障排除。 例如:以下命令會在退出控制檯前顯
示多路徑配置, 其中包括默認配置。
# multipathd -k
> > show config
> > CTRL-D
以下命令確定多路徑已經識別了所有對 multipath.conf 的修改。
# multipathd -k
> > reconfigure
> > CTRL-D
使用以下命令組確定路徑檢查器工作正常。
# multipathd -k
> > show paths
> > CTRL-D
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-1783411/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux配置和管理裝置對映多路徑multipathLinux
- redhat multipath多路徑 DMRedhat
- multipath多路徑配置
- LINUX 多路徑對映Multipath與正規表示式Linux
- linux多路徑multipath配置Linux
- Redhat7 Udev繫結(DM multipath)多路徑裝置Redhatdev
- linux iscsi multipath多路徑及名稱持久化配置Linux持久化
- Linux Multipath多路徑配置與使用案例Linux
- linux之 multipath 多路徑Linux
- Redhat5.4 Linux多路徑dm-multipath之multi-path詳解RedhatLinux
- centos上iscsi+multipath多路徑儲存配置手冊CentOS
- RHEL5 multipath多路徑聚合到RAC的RAW裝置繫結中不能用raw raw1 /dev/dm-*來實現dev
- 使用OpenFiler來模擬儲存配置RAC中ASM共享盤及多路徑(multipath)的測試ASM
- Oracle Linux 7.8 多路徑(Multipath)+Udev繫結磁碟OracleLinuxdev
- 【多路徑】EMC儲存多路徑軟體配置
- 儲存-配置多路徑
- RedHat 5.4上iscsi+multipath多路徑儲存配置獲取裝置的wwidRedhat
- Linux磁碟對映DMLinux
- Linux平臺的多路徑軟體multipath的使用案例Linux
- Linux 下配置多路徑Linux
- Linux環境iSCSI儲存及多路徑功能配置Linux
- linux redhat 6.5 多路徑配置LinuxRedhat
- Configuring Multipath Devices on RHEL6/OL6 (文件 ID 1538626.1)dev
- 多路徑時99-oracle-asmdevices.rules的配置OracleASMdev
- 記錄下物理機bond配置及物理機多路徑配置
- Nginx埠對映配置Nginx
- 華為儲存多路徑
- LINUX LOG(多路徑)Linux
- linux_unix_aix_hp_solaris multi path多路徑配置LinuxAI
- C# 資料操作系列 - 6 EF Core 配置對映關係C#
- MyBatis(四) 對映器配置(自動對映、resultMap手動對映、引數傳遞)MyBatis
- Linux平臺上配置Oracle ASMLib和磁碟多路徑LinuxOracleASM
- 多路徑軟體介紹
- RHEL6 或CentOS 6配置共享儲存--使用iSCSICentOS
- RHEL及CentOS網路配置詳解CentOS
- IP對映原理及怎樣把內網IP對映外網內網
- DM7使用dmrestore執行並行對映檔案還原REST並行
- DM7使用DMRMAN對資料庫執行指定對映檔案還原資料庫