Linux

Linux 多路徑:如何配置單個多匯流排路徑組

  • May 17, 2019

我剛剛將功能正常的 Ubuntu 16.04 主機升級到 18.04,現在遇到了多路徑問題。

軟體包版本:* multipath-tools 0.7.4-2ubuntu3 * open-iscsi 2.0.874-5ubuntu2.7

我有一個 Dell PowerVault MD3860i,它有四個通往主機的路徑。升級前是multipath -ll這樣的:

backupeng (3600a098000b5efae00000e9a5b9b58f5) dm-2 DELL,MD38xxi
size=8.0T features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
 |- 3:0:0:1 sdb 8:16 active ready running
 |- 4:0:0:1 sdc 8:32 active ready running
 |- 5:0:0:1 sdd 8:48 active ready running
 `- 6:0:0:1 sde 8:64 active ready running

現在看起來像這樣:

backupeng (3600a098000b5efae00000e9a5b9b58f5) dm-2 DELL,MD38xxi
size=8.0T features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 5:0:0:1 sdd 8:48 active ready running
| `- 6:0:0:1 sde 8:64 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
 |- 3:0:0:1 sdb 8:16 active ready running
 `- 4:0:0:1 sdc 8:32 active ready running

我的/etc/multipath.conf樣子是這樣的:

defaults {
   user_friendly_names yes
   path_selector "round-robin 0"
   path_grouping_policy multibus
}

multipaths {
   multipath {
       wwid 3600a098000b5efae00000e9a5b9b58f5
       alias backupeng
   }
}

出於性能原因,我需要將所有路徑都放在同一個路徑組中,就像以前一樣。我的理解是path_grouping_policy multibus應該這樣做。在過去的幾個小時裡,我嘗試重新啟動 multipathd,從頭開始在主機上設置 iscsi 和多路徑配置,等等。

我可以粘貼multipathd -k->的完整輸出,show config但我在那裡看到的內容與我的 multipath.conf 文件一致。我還能提供其他資訊嗎?

您是否實際測量過性能並發現性能下降?您實際上可能會發現它有所改進,儘管差異可能不是很大。

Dell PowerVault MD3860i 似乎是一種主動/被動(也稱為非對稱或 ALUA)式儲存系統:它有兩個儲存控制器,並且每個磁碟在任何給定時間都被認為是其中一個控制器“擁有”。如果通過目前不“擁有”磁碟的控制器訪問磁碟,則會觸發所有權切換,從而為磁碟 I/O 操作增加一些額外的延遲。

因此,最好只使用使用目前擁有被訪問磁碟的控制器的路徑。

您的新multipath -ll輸出表明正在使用該協議dm-multipath從儲存系統接收 ALUA 資訊。rdac也就是說,儲存控制器告訴dm-multipath它目前應該使用哪些路徑。該rdac協議是 LSI/Engenio/NetApp 儲存控制器及其 OEM 使用的較舊協議,並且很好理解。還有其他類似的特定於供應商的協議,SCSI-3 ALUA 將成為傳達此資訊的新標準方式,儘管並非所有儲存系統都使用它。

您將預設path_grouping_policy 設置為multibus,但它很可能被編譯為multipath-tools. (特定節拍一般:適用devicemultipath部分中的任何設置都將覆蓋該defaults部分中設置的值。)

這些內置預設值是與儲存設備製造商合作實施的;顯然multipath-toolsUbuntu 16.04 中的版本還沒有 Dell PowerVault MD3860i 的特定預設值,但在 Ubuntu 18.04 中它有。

您可以使用 . 查看這些內置預設值sudo multipath -t。對於您的儲存系統,相關的設置組可能如下所示:

   device {
           vendor "DELL"
           product "(MD34xx|MD38xx)"
           product_blacklist "Universal Xport"
           path_grouping_policy "group_by_prio"
           path_checker "rdac"
           features "2 pg_init_retries 50"
           hardware_handler "1 rdac"
           prio "rdac"
           failback "immediate"
           no_path_retry 30
   }

path_grouping_policymultibus適用於真正的主動/主動儲存系統,它允許您不受限制地使用任何和所有路徑。這些往往是更大、更高層的儲存產品。

您可以自己編寫device { ... }overrides { ... }阻止multipath.conf以覆蓋這些設置,但僅當您從儲存供應商那裡獲得特定資訊時,或者如果您有測試結果證明您實際上比供應商更了解,您才應該在生產中這樣做和dm-multipath開發人員。

引用自:https://serverfault.com/questions/967687