SMB 直接傳輸
Windows Server 包含稱為伺服器訊息塊 (SMB) Direct 的功能,其支援使用具有遠端直接記憶體取 (RDMA) 功能的網路適配器。 具有 RDMA 的網路介面卡可以以較低的延遲全速運行,而不影響 CPU 使用率。 針對 Hyper-V 或 Microsoft SQL Server 等工作負載,此功能可讓遠端檔伺服器類似於本機記憶體。 在 Windows Server 2012 及未來的迭代中,皆預設自動設定和啟用 SMB Direct。
使用 SMB Direct 可提供:
- 增加的輸送量:套用高速網路的完整輸送量,其中網路適配器會以線路速度協調大量數據的傳輸。
- 低延遲:提供網路要求的快速回應,讓遠端檔案記憶體感覺就像直接連結的區塊記憶體。
- 低 CPU 使用率:透過網路傳輸資料時,使用較少的 CPU 週期,這會將較多的運算能力留給伺服器應用程式使用。
您可以在容錯移轉叢集中使用 SMB 直接傳輸;不過,您必須確定用戶端存取使用的叢集網路適用 SMB 直接傳輸。 容錯移轉叢集支援使用多個網路搭配具備 RSS (接收端調整) 和 RDMA 功能的網路介面卡進行用戶端存取。
注意
您可以在 Hyper-V 管理作業系統上使用 SMB 直接傳輸來支援使用透過 SMB 的 Hyper-V,以及為使用 Hyper-V 儲存堆疊的虛擬機器提供存放裝置。 但是,支援 RDMA 的網路介面卡不會直接向 Hyper-V 用戶端公開。 即使您將支援 RDMA 的網路適配器連線到虛擬交換器,交換器所建立的虛擬網路適配器也不支援 RDMA。
需求
以下是SMB Direct 需求:
- 一或多個具備 RDMA 功能的網路介面卡。
- 至少兩台電腦搭載以下一種或多種作業系統:
- Windows Server 2012 及更高版本。
- Windows 10 Enterprise 及更高版本。
- Windows 10 Education 版及更高版本。
- Windows 10 工作站專業版和更新版本
- Windows 10 專業版 22H2(全新安裝,非由舊版本升級)及更高版本。
注意
Windows 10 和 Windows 11 系列僅限於用戶端,無法作為 SMB Direct 伺服器。
SMB 多重通道
SMB 多重通道的功能是負責偵測網路介面卡的 RDMA 功能,以啟用 SMB 直接傳輸功能。 在沒有 SMB 多重通道的情況下,SMB 會使用一般 TCP/IP 搭配具備 RDMA 功能的網路介面卡 (所有網路介面卡皆會隨著新的 RDMA 堆疊提供一個 TCP/IP 堆疊)。
借助 SMB 多通道,SMB 可以偵測網路介面卡是否具有 RDMA 功能,並為該單一期間建立多個 RDMA 連線(每個介面兩個)。 這項功能可讓SMB使用支援 RDMA 的網路適配器所提供的高輸送量、低延遲和低 CPU 使用率。 如果您使用多個 RDMA 介面,它還提供容錯功能。
從 Windows Server 2016 開始,您可以使用 Switch Embedded Teaming (SET) 來分組支援 RDMA 的網路介面卡。 至少建立一個 RDMA 網路連線之後,就不會再使用原本通訊協定交涉的 TCP/IP 連線。 不過,還是會保留 TCP/IP 連線,以便應付發生 RDMA 網路連線失敗的狀況。
停用 SMB Multichannel 也同時會停用 SMB Direct。 SMB 多重通道會偵測網路適配器功能,並判斷網路適配器是否支援 RDMA。 如果停用SMB多重通道,用戶端裝置就無法使用SMB直接存取。
SMB 加密
從 Windows Server 2022 和 Windows 11 開始,SMB Direct 現在支援加密。 先前,啟用 SMB 加密會停用直接資料放置,導致 RDMA 效能與 TCP 一樣慢。 現在,資料在放置之前已加密,導致在新增 AES-128 和 AES-256 保護的封包隱私權時,造成相對次要的效能降低。 有關配置 SMB 加密的更多資訊,請參閱SMB 安全性強化.
此外,Windows Server 容錯移轉叢集現在支援對 Cluster Shared Volumes (CSV) 和儲存匯流排層 (SBL) 的加密節點內儲存通訊進行精細控制。 這代表著,在使用 Storage Spaces Direct 和 SMB Direct 時,您可以決定將叢集本身內的橫向通訊進行加密,以獲得更高的安全性。
停用並啟用 SMB Direct 功能
如果 SMB 用戶端有識別出適當設定的話,會自動偵測及使用多個網路連線。 由於 SMB Direct 預設啟用,一旦停用,需要時需要手動重新啟用。
一般而言,您不需要停用SMB直接存取,不過,您可以執行下列 Windows PowerShell 命令來停用它及其功能。
要停用 SMB Direct,請輸入:
Disable-WindowsOptionalFeature -Online -FeatureName SMBDirect
要在伺服器端停用 SMB Multichannel,請輸入:
Set-SmbServerConfiguration -EnableMultiChannel $false
要在用戶端停用 SMB Multichannel,請輸入:
Set-SmbClientConfiguration -EnableMultiChannel $false
若要停用特定介面的 RDMA,請輸入:
Disable-NetAdapterRdma <name>
若要停用所有介面的 RDMA,請輸入:
Set-NetOffloadGlobalSetting -NetworkDirect Disabled
當您在客戶端或伺服器上停用 RDMA 時,系統將無法使用它。 Network Direct 是 RDMA 介面的 Windows Server 基本網路支援的內部名稱。
若要驗證 SMB Direct 目前配置為哪種可操作狀態,請執行下列 cmdlet:
Get-WindowsOptionalFeature -Online -FeatureName SMBDirect
測試 SMB Direct
您可以在執行大型檔案副本時,透過測量吞吐量來測試 SMB Direct 的效能。 測試之前,請先確認網路適配器是否支援使用 PowerShell 的 RDMA。
在伺服器端,輸入:
Get-SmbServerNetworkInterface
在用戶端輸入:
Get-SmbClientNetworkInterface
一旦網路配接器被驗證為支援 RDMA,請執行以下操作:
- 在網路介面卡上停用 RDMA,請參閱 停用和啟用 SMB Direct 功能.
- 測量在不使用 SMB Direct 的情況下執行大型檔案複製所需的時間。
- 在網路介面卡上重新啟用 RDMA,執行相同的檔案複製,然後比較兩個結果。
- 若要避免快取影響,請執行下列動作:
- 複製大量的資料 (大到記憶體無法處理的資料量)。
- 將資料複製兩次,以第一次複製做為練習,然後對第二次複製計時。
- 每次測試前重新啟動伺服器和用戶端,以確保它們在相似的條件下運行。
此外,您可以執行下列步驟,利用性能監視器工具在測試期間觀察相同情境下的性能計數器:
- 選擇開始,輸入perfmon,按下輸入鍵.
- 在左窗格中的 Monitoring Tools >下選擇 Performance Monitor.
- 在右側窗格中,選擇綠色「+」圖示以新增計數器。
- 在 Add Counters 對話方塊中,展開 SMB Direct Connection.
- 選擇Bytes RDMA Read/秒和Bytes RDMA Written/秒,選擇 Add,然後選擇OK.
SMB Direct 容錯移轉功能
以下說明如何確認 SMB 直接傳輸的容錯移轉功能:
- 確定 SMB 直接傳輸是在多網路介面卡設定下運作。
- 執行大型檔案複製。 在複製過程中,透過斷開其中一條電纜或停用其中一個網路介面卡來模擬其中一條網路路徑的故障。
- 確認檔案複製作業在使用其中一個剩餘網路介面卡的情況下繼續執行,而未發生檔案複製錯誤。
提示
若要避免未使用 SMB 直接存取的工作負載失敗,請確保沒有其他工作負載使用該已中斷連接的網路路徑。