SMB 疑難解答指引

試用我們的虛擬代理程式 - 它可協助您快速找出並修正常見的 SMB 問題。

本文旨在協助您針對伺服器消息塊塊 (SMB) 問題進行疑難解答。 大部分的使用者都可以使用這裡提供的解決方案來解決其問題。

SMB 術語

溝通正確的術語是品質SMB疑難解答的重要層面。 因此,您應該瞭解基本的SMB術語,以確保數據收集和分析的正確性。

  • SMB 伺服器 (SRV) (也稱為檔案伺服器) 一律是裝載檔案系統的系統。
  • SMB 用戶端 (CLI) 一律是嘗試存取檔案系統的系統。

無論操作系統版本或版本為何,這些字詞都是一致的。 例如,如果以 Windows Server 2016 為基礎的計算機嘗試連線到以 Windows 10 為基礎的計算機上的 SMB 共用 \\MyWorkstation\Data,Windows Server 2016 為 SMB 用戶端,Windows 10 為 SMB 伺服器。

疑難解答檢查清單

  • 檢查是否已安裝正確的SMB網路協定。 預設不會再安裝SMBv1網路協定。
  • 停用SMBv1
  • 如果僅支援SMBv1的裝置上停用SMBv1,您就無法存取該裝置。 在此情況下,請升級您的系統。
  • 您無法個別停用SMBv2或SMBv3,因為這些版本是相同驅動程式的一部分。
  • 分析流量:SMB 是使用 TCP/IP 作為網路傳輸通訊協定的應用層級通訊協定。 因此,SMB 相關問題可能表示有基礎 TCP/IP 相關問題。
  • 分析通訊協定:若要瞭解所使用的確切命令和選項,請查看網路追蹤中的實際SMB通訊協定詳細數據。
  • 更新SMB相關的系統檔案:讓系統檔案保持更新。 請確定已安裝最新的 更新匯總

SMB 檔案資訊

列在 %windir%\system32\Drivers 底下的 SMB 用戶端二進位檔:

  • RDBSS.sys
  • MRXSMB.sys
  • MRXSMB10.sys
  • MRXSMB20.sys
  • MUP.sys
  • SMBdirect.sys

列在 %windir%\system32 底下的 SMB 伺服器二進位檔:

  • Srvsvc.dll

列在 %windir%\system32\Drivers 底下的 SMB 伺服器二進位檔:

  • SRVNET.sys
  • SRV.sys
  • SRV2.sys
  • SMBdirect.sys

建議您在針對SMB問題進行疑難解答之前,先更新下列元件:

  • iSCSI:檔伺服器需要檔案記憶體。 如果您的記憶體有 iSCSI 元件,請更新這些元件。
  • 網路:更新網路元件。
  • Windows Core:若要獲得更好的效能和穩定性,請更新 Windows Core。

中斷所有共享資源與本機計算機的連線

您可以使用 Net Use * /delete 命令中斷本機計算機上作用中或已記住共用資源的連線。

注意事項

您也可以在遠端電腦上使用此命令。 執行 Net help use 以取得更多選項。

重要事項

本文的這一節是以社群內容為基礎。

Community 解決方案內容免責聲明

Microsoft 公司和/或其各自的供應商不代表此資訊和其所含相關圖形的適用性、可靠性或精確度。 所有這類資訊和相關圖形都會以「原狀」提供,而不需要任何種類的擔保。 Microsoft 和/或其各自的供應商在這裡免責與此資訊和相關圖形相關的所有瑕疵擔保和條件,包括所有隱含的瑕疵擔保和適售性條件、適合特定用途、工作方式、職稱和非侵權。 您特別同意,在任何情況下,Microsoft 和/或其供應商都不應該對任何直接、間接、懲罰性、附帶性、特殊、衍生性損害或任何損害負責,包括,不限於使用損失、資料或獲利、因使用或無法使用此處所包含的資訊和相關圖形而產生的損害, 不論是根據合約、侵權、過失、嚴格責任,還是如此,即使 Microsoft 或其任何供應商都已獲得損害的可能性。

常見問題和解決方案

當您存取 Scale-Out 檔案伺服器時,效能會受到限制

用戶端存取網路會使用高速遠端直接記憶體存取 (RDMA) ,但叢集網路則不會。 由於此行為,重新導向只會在叢集網路上發生。 叢集網路通常會連線到 1-GbE 網路適配器。

若要針對此問題進行疑難解答,您可以設定選項,將用戶端存取網路用於叢集共用磁碟區 (CSV) 。 或者,升級至 Windows Server 2012 R2 或更新版本。 該系統會自動將用戶端重新導向至具有檔案共用磁碟區最佳存取權的叢集節點。 如需詳細資訊,請參閱下列部落格封存文章:Windows Server 2012 R2 中的自動 SMB Scale-Out 重新平衡

SMB 偏好較慢的實體網路適配器,而不是虛擬網路適配器

主機上的虛擬網路適配器不支援 RSS。 實體網路適配器具備 RSS 功能。 即使 RSS 網路適配器速度較慢,SMB 仍一律使用支援 RSS 的網路適配器,而不是非 RSS 網路適配器。

若要針對此問題進行疑難解答,請停用實體網路適配器上的 RSS 功能,或使用 SMB 多重通道條件約束來限制對一或多個已定義網路介面的 SMB 通訊。 如需詳細資訊,請參閱 Windows PowerShell 中的 New-SmbMultichannelConstraint SMB Share Cmdlet。

SMB 報告網路適配器不支援 RDMA,即使您認為它是

之所以發生此問題,是因為具有較舊驅動程式或韌體的具備 RDMA 功能的網路適配器可能無法正確地將自己識別為具備 RDMA 功能。

若要針對此問題進行疑難解答,請從製造商的網站更新網路適配器韌體和驅動程式。

SMB 多重通道啟動之前所需的網路流量會有所不同

SMB 多重通道功能可用來探索網路適配器的 RSS 和 RDMA 功能。 在伺服器操作系統上,SMB 多重通道會在初始讀取或寫入作業發生時啟動。 在用戶端操作系統上,SMB 多重通道在發生特定數量的網路流量之前不會啟動。

在伺服器操作系統上,SMB 多重通道只會在每個會話快速啟動一次。 在用戶端作業系統上,您可以設定登錄專案,以更快速地啟動SMB多重通道。 如需詳細資訊,請參閱下列部落格封存部落格文章: 在多重通道實際啟動之前,需要在SMB用戶端與伺服器之間傳遞多少流量?

SMB 多重通道不會匯總多個 10-GbE 網路適配器

支援 RSS 的 10-GbE 網路適配器有時會識別為不支援 RSS。 發生此問題時,SMB 只會使用一個 TCP 連線。 當 SMB 多重通道同時使用支援 RSS 和非 RSS 的網路適配器時,它應該只使用支援 RSS 的網路適配器。

伺服器類別網路適配器應該會顯示為支援 RSS。 如果沒有,請從製造商的網站更新網路適配器驅動程式,然後重新檢查 RSS 設定。

您可能必須停用這兩個網路適配器上的 RSS,以匯總輸送量。 如需詳細資訊,請參閱下列部落格封存部落格文章:Windows Server 2012 檔伺服器提示:確定您的網路介面具備 RSS 功能

主機上的虛擬網路適配器效能不佳

主機上的虛擬網路適配器不支援 RSS。 如果沒有支援 RSS 的網路適配器,SMB 只會使用一個 TCP 連線。 當您使用 10 GbE 網路適配器、支援 RSS 的網路適配器和 NIC 小組時,就會發生此行為。

若要針對此問題進行疑難解答,請使用多個虛擬網路適配器來確定您有多個 TCP 連線。 如需詳細資訊,請參閱下列部落格封存部落格文章:Windows Server 2012 檔伺服器提示:確定您的網路介面具備 RSS 功能

Windows Server 2012 R2 定期記錄 SMBClient 事件識別碼 30818

假設 Windows Server 2012 R2 型電腦使用 InfiniBand 網路適配器。 此配接器使用SMB直接存取功能來支持遠端直接記憶體存取 (RDMA) 叢集節點與 Hyper-V 主機之間的通訊。 重新啟動 Hyper-V 主機之後,Windows 可能會在 事件檢視器 的 Applications and Services Logs/Microsoft/Windows/SmbClient 路徑下記錄事件標識碼 30818。 發生這種情況時,您也可能會遇到效能問題。

在 Windows Server 2012 R2 上,LanmanServer 服務會自動啟動 SmbDirect 服務。 不過,如果 LanmanWorkstation 服務正好先啟動,並嘗試在 SmbDirect 服務載入之前開啟 RDMA 連線,Windows 記錄事件識別碼 30818。 當用戶端一開始透過 TCP/IP 與伺服器通訊時,它會使用 RDMA 介面。 因此,不需要執行任何用戶動作即可復原。

Microsoft 正考慮在未來的 Windows Server 版本中提供此問題的解決方法。

因應措施

重要事項

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 若要獲得保護,請在進行修改前先備份登錄,以便在出現問題時還原登錄。 如需進一步了解如何備份及還原登錄的相關資訊,請參閱如何在 Windows 中備份及還原登錄

若要在 Windows Server 2012 R2 上解決此問題,請將 SmbDirect 服務設定為自動啟動。 如果要執行這項操作,請依照下列步驟執行:

  1. 開啟登入 編輯器,然後瀏覽至下列登入子機碼:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\smbdirect

  2. 以滑鼠右鍵按兩下 [開始 ] 登錄項目,然後選取 [ 修改]

  3. 在 [ 值數據] 方塊中,將值變更 (預設值為 3,這表示視需要) 為 2 (自動) 。

進行這項變更之後,您應該能夠在沒有 Windows 記錄事件識別碼 30818 訊息的情況下重新啟動電腦。 如果 Windows 繼續記錄這些事件,其他一些問題可能會導致 RDMA 介面無法初始化。

當您安裝 Windows Server 時,Windows 記錄事件識別碼 1

當您安裝 Windows Server 2019、Windows Server 2016 或 Windows Server 2012 R2 時,Windows 記錄事件識別碼 1。 事件資訊如下所示:

記錄檔名稱:Microsoft-Windows-SMBWitnessClient/管理員
來源:Microsoft-Windows-SMBWitnessClient
事件標識碼:1
層級:錯誤
描述:見證用戶端初始化失敗,發生錯誤 (系統找不到指定的檔案。)

如果這是未啟用角色或功能的 Windows Server 全新部署,您可以放心地忽略此事件。

SMB 已知問題

資料收集

在連絡 Microsoft 支援服務 之前,您可以收集問題的相關信息。

必要條件

  • 在本機系統上具有系統管理員許可權的帳戶安全性內容中執行 TSS。 第一次執行時,請接受EULA。 (接受 EULA 之後,TSS 將不會再次提示您。)
  • 建議您在範圍中使用 RemoteSigned PowerShell執行原則 LocalMachine

注意事項

如果目前的 PowerShell 執行原則不允許您執行 TSS,請採取下列動作:

  1. RemoteSigned執行 Cmdlet 來設定進程層級的Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned執行原則。
  2. 若要確認變更生效,請執行 Get-ExecutionPolicy -List Cmdlet。

這些處理程式層級許可權僅適用於目前的PowerShell工作階段。 關閉執行 TSS 的 PowerShell 視窗之後,已指派的處理層級許可權會還原為先前設定的狀態。

請先收集金鑰資訊,再連絡 Microsoft 支援服務

  1. 在所有節點上下載 TSS ,並將檔案展開至 C:\tss 資料夾。

  2. 在提升許可權的 PowerShell 命令提示字元視窗中開啟 C:\tss 資料夾。

  3. 執行下列 Cmdlet,在用戶端和伺服器上啟動追蹤:

    • 客戶:

      TSS.ps1 -Scenario NET_SMBcli
      
    • 伺服器:

      TSS.ps1 -Scenario NET_SMBsrv
      
  4. 如果第一次在伺服器或用戶端上執行追蹤,請接受EULA。

  5. 允許錄製 (PSR 或視訊) 。

    注意事項

    如果您在用戶端和伺服器上收集記錄,請等候此訊息出現在這兩個節點上,然後再重現問題。

  6. 重現問題。

  7. 重現問題之後,請輸入 Y 以完成記錄數據。

TSS 會將追蹤儲存在 C:\MS_DATA 資料夾的壓縮檔中。 您可以將檔案上傳至工作區進行分析。

參考資料