Hello XieJie,感謝您在 Microsoft Q&A 社群發帖。
在 Windows Server S2D 部署中,RoCE v2 RDMA 依賴於無損乙太網絡(Lossless Ethernet)環境,這需要主機端與網絡交換機端嚴格配合 Priority-based Flow Control (PFC, IEEE 802.1Qbb) 與 Enhanced Transmission Selection (ETS, IEEE 802.1Qaz)。當 NIC 驅動程式更新、系統組態重置或網絡介面卡解除綁定時,服務端 Data-Center-Bridging (DCB) 的 QoS 策略可能失效或取消套用。一旦 SMB Direct 檢測到封包遺失或 PFC 優先權不匹配,為了維持儲存數據傳輸的完整性,系統會自動將傳輸層降級為傳統 TCP/IP,這會引發顯著的 CPU 負載與傳輸延遲,進而造成 S2D 重新同步速率急劇下降。
您可參考以下步驟,重新配置並驗證主機 NIC 上的 PFC、ETS 及 RDMA 設定:
標準修復方案:重置與啟用 DCB (PFC/ETS) 與 RDMA 配置
請在受影響的 S2D 節點上開啟高權限的 PowerShell,執行以下指令重新配置 DCB 與 RDMA 策略:
- 確保系統已安裝 Data-Center-Bridging 功能:
Install-WindowsFeature Data-Center-Bridging
- 重新設定 SMB Direct 的 QoS 策略(通常將 Priority 3 劃分為儲存專用無損通道):
# 清除舊有 Qos 策略
Remove-NetQosPolicy -Confirm:$false -ErrorAction SilentlyContinue
# 新增 SMB Direct QoS 策略並指定 802.1p 優先權值為 3
New-NetQosPolicy "SMBDirect" -NetDirectPortMatchCondition 445 -PriorityValue8021Action 3
# 啟用 Priority 3 的 PFC 流量控制,並關閉其他優先權
Enable-NetQosFlowControl -Priority 3
Disable-NetQosFlowControl -Priority 0,1,2,4,5,6,7
# 設置 ETS 流量類別(配置頻寬分配,例如給予 50% 預留頻寬)
New-NetQosTrafficClass "SMBDirect" -Priority 3 -BandwidthPercentage 50 -Algorithm ETS
- 重新將 QoS 策略綁定至儲存實體網卡,並重新啟用 RDMA:
# 請將 "pNIC1", "pNIC2" 替換為您的實體網卡名稱
Enable-NetAdapterQos -Name "pNIC1", "pNIC2"
Enable-NetAdapterRdma -Name "pNIC1", "pNIC2"
進階與疑難排解方案:SET 虛擬交換機與網卡驅動強制設定
若您的環境採用 Switch Embedded Teaming (SET) 虛擬交換機:
- 檢查並確保主機虛擬網卡 (vNIC) 與實體網卡皆已開啟 RDMA 支援:
Enable-NetAdapterRdma -Name "vSMB1", "vSMB2"
Set-VMNetworkAdapterRdma -VMNetworkAdapterName "vSMB1" -ManagementOS $true -RdmaWeight 100
Set-VMNetworkAdapterRdma -VMNetworkAdapterName "vSMB2" -ManagementOS $true -RdmaWeight 100
- 部分網卡廠商(如 Mellanox/Nvidia 或 Broadcom)在驅動程式重置後可能恢復預設設定,您可以在進階屬性中強制將 RoCE 版本設定為 RoCE v2:
Set-NetAdapterAdvancedProperty -Name "pNIC1" -DisplayName "RoCE Version" -DisplayValue "RoCE v2"
Set-NetAdapterAdvancedProperty -Name "pNIC2" -DisplayName "RoCE Version" -DisplayValue "RoCE v2"
官方 Microsoft Documentation 參考連結: