管理 SMB 多重通道

適用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows 10

SMB 多重通道是伺服器訊息區 (SMB) 3.0 通訊協定的一部分,可提高網路效能以及檔案伺服器的可用性。

SMB 多重通道可讓檔案伺服器同時使用多個網路連線。 當 SMB 3.0 用戶端和 SMB 3.0 伺服器之間有多個路徑可用時,可協助彙總網路頻寬和網路容錯。 這可讓伺服器應用程式充分利用所有可用的網路頻寬,並使其在網路失敗時更具復原性。

SMB 多重通道提供下列功能:

  • 增加輸送量。 檔案伺服器可以透過使用高速網路介面卡或多張網路介面卡的多個連線,同時傳輸額外的資料。

  • 網路容錯。 當用戶端同時使用多個網路連線時,即使網路連線中斷,用戶端仍可繼續使用,而不會中斷。

  • 自動設定。 SMB 多重通道會自動探索多個可用的網路路徑,並視需要動態新增連線。

SMB 多重通道的需求

由於預設會啟用 SMB 多重通道,因此您不需要安裝其他角色、角色服務或功能。 當識別出設定時,SMB 用戶端會自動偵測並使用多個網路連線。 不過,SMB 多重通道有下列需求:

  • 至少兩部執行 Azure Stack HCI、Windows Server 或 Windows 10 作業系統的電腦。

  • 至少有下列其中一項設定:

    • 多個網路介面卡

    • 一或多個支援接收端調整 (RSS) 的網路介面卡

    • 組合起來的多個網路介面卡 (請參閱 NIC 組合)

    • 一或多個支援遠端直接記憶體存取 (RDMA) 的網路介面卡

設定 SMB 多重通道

本節說明使用網路介面卡陣列部署 SMB 多重通道的一些設定選項。 這些設定只是範例設定。 還有許多其他可行設定未涵蓋在本主題中。

單一支援 RSS 的網路介面卡

在這個典型設定中,SMB 用戶端和 SMB 伺服器是使用單一 10 gigabit 乙太網路 (10 GbE) 網路介面卡來設定。 如果部署 SMB 時沒有 SMB 多重通道,而且只有建立一個 SMB 工作階段,則 SMB 會建立單一 TCP/IP 連線。 在只有單一 CPU 核心的情況下,此設定本身會導致壅塞,尤其是在執行許多小型 I/O 作業時。 因此,效能瓶頸的可能性相當重要。

大部分目前的網路介面卡都提供稱為「接收端調整 (RSS)」的功能,可讓多個連線自動分散到多個 CPU 核心。 但是,如果您使用單一連線,RSS 就無法提供協助。 當您使用 SMB 多重通道搭配支援 RSS 的網路介面卡時,SMB 會為該特定工作階段建立多個 TCP/IP 連線。 如果需要多個小型 I/O 作業,此設定可避免單一 CPU 核心的潛在瓶頸。

多個網路介面卡

在此設定中,SMB 用戶端和 SMB 伺服器是使用多個 10 GbE 網路介面卡來設定。 如果部署 SMB 時沒有 SMB 多重通道,而且只有建立一個 SMB 工作階段,SMB 會使用其中一個可用的網路介面卡來建立單一 TCP/IP 連線。 在此情況下,無法彙總多個網路介面卡的頻寬;例如,當您使用 1-GbE 網路介面卡時,無法達到每秒 2 gigabits (Gbps)。 如果選取的網路介面卡已中斷連線或停用,也可能會失敗。

使用 SMB 多重通道部署 SMB 時,如果網路介面卡支援 RSS,則 SMB 會為單一工作階段建立多個 TCP/IP 連線,而且每個介面至少有一個或多個連線。 這項設定可讓 SMB 使用可用的合併網路介面卡頻寬,讓 SMB 用戶端在網路介面卡失敗時仍能繼續進行,而不會中斷。

NIC Teaming

Azure Stack HCI 和 Windows Server 支援使用稱為 NIC 組合的功能,將多個網路介面卡合併成一個網路介面卡的能力。 雖然組合一律會提供容錯功能,但是在部署 SMB 時若沒有 SMB 多重通道,SMB 就只會為每個組合建立一個 TCP/IP 連線。 這項設定會導致參與的 CPU 核心數目和組合頻寬的最大使用量有所限制。

使用 SMB 多重通道部署 SMB 時,SMB 會為單一工作階段建立多個 TCP/IP 連線,以在 CPU 核心間達到更佳的平衡,並更有效地使用可用的頻寬。 NIC 組合繼續提供容錯移轉功能,其運作速度會比使用 SMB 多重通道本身更快。 我們也建議使用 NIC 組合,因為這會提供容錯移轉功能給其他不依賴 SMB 的工作負載,因為這些工作負載無法受益於 SMB 多重通道的容錯移轉功能。

如果您針對儲存空間直接存取流量使用一組專用的網路介面卡,有時使用 Azure Stack HCI 來組合這些儲存體網路介面卡純粹是選擇性的,並不提供任何顯著的優點或缺點。

重要

如果您想要使用網路介面卡的 RDMA 功能,在 Windows Server 2012 R2 和較舊版本上,請勿使用 NIC 組合。 在這些作業系統上,支援 RDMA 的網路介面卡組合一律會回報為非支援 RDMA,因為組合會停用網路介面卡的 RDMA 功能。

單一或多個支援 RDMA 的網路介面卡

SMB 多重通道會偵測網路介面卡的 RDMA 功能,此功能可以執行 SMB 直接傳輸功能,稱為透過 RDMA 的 SMB 直接傳輸。 如果沒有 SMB 多重通道,SMB 會搭配支援 RDMA 的網路介面卡使用一般 TCP/IP 連線,其中所有網路介面卡都會提供與新 RDMA 堆疊並存存在的 TCP/IP 堆疊。

使用 SMB 多重通道部署 SMB 時,SMB 會偵測網路介面卡的 RDMA 功能,並為該單一工作階段建立多個 RDMA 連線,每個介面都有兩個 RDMA 連線。 這項設定可讓 SMB 利用支援 RDMA 的網路介面卡所提供的高輸送量、低延遲和低 CPU 使用率。 當您使用多個 RDMA 介面時,也會提供容錯能力。

重要

建立 RDMA 連線之後,就不會再使用原始通訊協定交涉的 TCP/IP 連線。 但是,如果有不同的 RDMA 連線失敗,就會維持該連線。

SMB 多重通道、支援 RDMA 的網路介面卡和 NIC 組合相容性

下表摘要說明當您合併 SMB 多重通道、RDMA (SMB 直接傳輸) 和 NIC 組合時,可用的不同功能。

組態 Throughput 適用於 SMB 的容錯 適用於非 SMB 的容錯 較低的 CPU 使用率
單一網路介面卡 (沒有 RSS) *
多個網路介面卡 (沒有 RSS) ** *
多個網路介面卡 (沒有 RSS) 與 NIC 組合 ** ** *
單一網路介面卡具有 RSS *
多個網路介面卡具有 RSS ** *
多個網路介面卡具有 RSS 和 NIC 組合 ** ** *
單一支援 RDMA 的網路介面卡 * *
多個支援 RDMA 的網路介面卡 *** * *
多個支援 RDMA 的網路介面卡具有 NIC 組合 *** ** * *

如果您執行的是 Windows Server 2016 或更新版本,理想的解決方案是使用多個支援 RDMA 的網路介面卡,並結合 NIC 組合與 SMB 多重通道。 這種組合可提供最佳的輸送量,為使用 SMB 和其他通訊協定的應用程式提供容錯功能,並且對 CPU 的影響最低。

如上所述,在 Windows Server 2012 R2 或較舊版本上使用支援 RDMA 的網路介面卡時,NIC 組合並不是很好的選擇,因為會停用網路介面卡的 RDMA 功能。

沒有 SMB 多重通道的範例設定

如果您打算使用沒有 RSS 的單一網路介面卡,您就不會受益於多個網路連線,因此不會使用 SMB 多重通道。 此外,如果您打算使用不同速度的網路介面卡,SMB 多重通道會自動選取最快的網路介面卡。 這是因為 SMB 多重通道同時使用相同類型的網路介面卡 (例如 RDMA、RSS 或其他項目),並且有相同的速度。 較慢的網路介面卡會閒置。

停用 SMB 多重通道

一般來說,您不需要停用 SMB 多重通道。 但是,如果您想要停用 SMB 多重通道 (例如在測試環境中),請使用下列 Windows PowerShell 程序。

首先,開啟 PowerShell 工作階段以連線到其中一部伺服器:

Enter-PSSession <server-name>

若要在伺服器端停用 SMB 多重通道,請使用下列 Cmdlet:

Set-SmbServerConfiguration -EnableMultiChannel $false

若要在用戶端停用 SMB 多重通道,請使用下列 Cmdlet:

Set-SmbClientConfiguration -EnableMultiChannel $false

注意

在用戶端或伺服器上停用 SMB 多重通道會讓這兩個系統無法使用此功能。

重新啟用 SMB 多重通道

如果您已停用 SMB 多重通道,而且想要重新啟用,請使用下列程序。

若要在伺服器端重新啟用 SMB 多重通道,請使用下列 Cmdlet:

Set-SmbServerConfiguration -EnableMultiChannel $true

若要在用戶端重新啟用 SMB 多重通道,請使用下列 Cmdlet:

Set-SmbClientConfiguration -EnableMultiChannel $true

注意

您必須在用戶端和伺服器上重新啟用 SMB 多重通道,才能再次開始使用。

測試 SMB 多重通道

本節說明用於測試 SMB 多重通道的一些案例,包括比較使用與不使用 SMB 多重通道複製檔案,以及刻意導致網路介面卡在檔案複製作業期間失敗。

比較使用與不使用 SMB 多重通道複製檔案

若要測量 SMB 多重通道所提供的增加輸送量,請執行下列測試。 在每次測試之前重新啟動伺服器和用戶端,以確保其在類似的情況下運作。

  1. 使用先前所述的設定來設定 SMB 多重通道。

  2. 使用 SMB 多重通道測量執行長時間執行檔案複製作業所需的時間量。

  3. 停用 SMB 多重通道。 如需相關指示,請參閱停用 SMB 多重通道

  4. 測量不使用 SMB 多重通道執行相同檔案複製作業所需的時間量。

  5. 重新啟用 SMB 多重通道。 如需相關指示,請參閱重新啟用 SMB 多重通道

  6. 比較這兩個結果。

重要

若要避免快取的效能影響,請先複製超過可用記憶體大小的大量資料。 然後再次執行複製作業,並且以第一個複製作業作為準備工作。 只對第二個複製作業計時。

使其中一個網路介面卡在使用 SMB 多重通道進行檔案複製期間失敗

若要確認 SMB 多重通道的容錯移轉功能:

  1. 請確定 SMB 多重通道會在多個網路介面卡設定中運作。

  2. 執行長時間執行的檔案複製作業。

  3. 當檔案複製作業正在執行時,請將其中一個纜線中斷連線,或停用其中一個網路介面卡,以模擬其中一個網路路徑的故障。

  4. 確認檔案複製繼續使用剩餘的網路介面卡,並在沒有任何檔案複製錯誤的情況下運作。

請確定沒有其他工作負載使用已中斷連線的網路連線路徑。 這項預防措施可避免工作負載中沒有利用 SMB 多重通道的可能失敗。

確認 SMB 多重通道可正常運作

您可以使用下列程序來確認 SMB 多重通道是否正常運作。

  1. 若要確認網路介面卡設定是否正確,請在 SMB 伺服器和 SMB 用戶端的 Windows PowerShell 中輸入下列資訊。

    Get-NetAdapter
    Get-NetAdapterRSS
    Get-NetAdapterRDMA
    Get-NetAdapterHardwareInfo
    
  2. 若要確認是否已啟用 SMB 多重通道,請確認 SMB 正確地識別網路介面卡,且已正確識別網路介面卡的 RSS 和 RDMA 功能,請執行下列動作:

    在 SMB 用戶端上,於 Windows PowerShell 中輸入下列內容:

    Get-SmbClientConfiguration | Select EnableMultichannel
    Get-SmbClientNetworkInterface
    

    在 SMB 伺服器上,於 Windows PowerShell 中輸入下列內容:

    Get-SmbServerConfiguration | Select EnableMultichannel
    Get-SmbServerNetworkInterface
    
  3. 在 SMB 用戶端上,執行長時間執行的檔案複製作業,以建立與 SMB 伺服器的進行中工作階段。 當複製作業正在執行時,請在 Windows PowerShell 中輸入下列內容,以確認連線使用正確的 SMB 版本,且 SMB 多重通道可以運作。

    Get-SmbConnection
    Get-SmbMultichannelConnection
    Get-SmbMultichannelConnection -IncludeNotSelected
    

後續步驟

如需相關資訊,另請參閱: