SMB 直接傳輸
Windows Server 包含一項名為 SMB Direct 的功能,支援使用 Remote Direct Memory Access (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 直接傳輸具有下列需求:
- 一或多個具備 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 Multichannel 會偵測網路介面卡功能並確定網路介面卡是否支援 RDMA,因此如果停用 SMB Multichannel,用戶端將無法使用 SMB Direct。
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 Direct,但是,您可以執行下列 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,執行相同的檔案複製,然後比較兩個結果。
- 為了避免快取的影響,請執行以下操作:
- 複製大量的資料 (大到記憶體無法處理的資料量)。
- 將資料複製兩次,以第一次複製做為練習,然後對第二次複製計時。
- 每次測試前重新啟動伺服器和用戶端,以確保它們在相似的條件下運行。
此外,您可以透過執行以下操作,利用 Performance Monitor 工具,在測試期間使用相同場景觀察效能計數器:
- 選擇開始,輸入perfmon,按下輸入鍵.
- 在左窗格中的 Monitoring Tools >下選擇 Performance Monitor.
- 在右側窗格中,選擇綠色「+」圖示以新增計數器。
- 在 Add Counters 對話方塊中,展開 SMB Direct Connection.
- 選擇Bytes RDMA Read/秒和Bytes RDMA Written/秒,選擇 Add,然後選擇OK.
SMB Direct 容錯移轉功能
以下說明如何確認 SMB 直接傳輸的容錯移轉功能:
- 確定 SMB 直接傳輸是在多網路介面卡設定下運作。
- 執行大型檔案複製。 在複製過程中,透過斷開其中一條電纜或停用其中一個網路介面卡來模擬其中一條網路路徑的故障。
- 確認檔案複製作業在使用其中一個剩餘網路介面卡的情況下繼續執行,而未發生檔案複製錯誤。
提示
若要避免未使用 SMB 直接傳輸的工作負載發生錯誤,請確定沒有其他工作負載使用中斷連線的網路路徑。