共用方式為


緩慢的 SMB 檔案傳送速率

伺服器訊息塊 (SMB) 是預設的 Windows 網路檔案系統功能和通訊協定。 網路檔案傳送速率受到數個系統和網路因素的影響。 本文提供使用SMB解決常見的檔案傳輸效能問題的步驟。

傳輸緩慢

注意事項

SMB 簽署SMB加密 已知會減緩SMB傳輸的速度。 效能損失的數量在很大程度上取決於所涉及的硬體功能。 主要因素是 CPU 核心的計數和速度,以及專用於其他工作負載的 CPU 時間。

從 Windows 11 版本 24H2 和 Windows Server 2025 開始, 預設需要 SMB 簽署。 我們不建議關閉SMB用戶端和伺服器簽署需求,因為它們可大幅防範詐騙、竄改和轉送攻擊。

下列步驟可用來分析、疑難解答及解決SMB傳輸緩慢的常見問題。

  • 從命令行使用 robocopy (命令提示字元或 PowerShell)。

    • 檔案總管 (Windows 檔案管理員) 會執行單個線程複本,並使用緩衝輸入/輸出 (I/O) 傳輸。
    • Robocopy 已針對 IT 系統管理員優化,可建立高效能的本機和遠端檔案複製工作。
    • 檔案總管 方便基本使用,但缺少特定工作所需的 robocopy 效能優化。
  • 使用命令提示字元或 PowerShell 的 robocopy /J 命令,嘗試使用大於 1 GB 的檔案未壓縮的 I/O 複本。

  • 啟用和使用 SMB壓縮

    • 這可大幅減少大型檔案的傳輸時間和頻寬使用率,包括大量空格符,例如虛擬機磁碟 (.vhd、、 .vhdx.vmdk.ovf和 ), .iso.dmp 檔案。
    • 無法壓縮的數據,例如封存 (、 .7z和 ), 視訊 (.zip.rar.mkv), 以及音訊 (.mp4.mp3.flac和 ) 檔案不會看到 SMB 壓縮的顯著效能改善。
    • 從 Windows 11 和 Windows Server 2022 開始,可以使用 SMB 壓縮。
  • SMB 速度可以受限於記憶體效能。

    • 請確定備份記憶體具有所需的可用效能特性,以符合所需的網路輸送量。

    • 透過SMB的近似真實世界記憶體對網路效能速度如下:

      • 每 1 Gbps 的網路頻寬持續記憶體輸送量 110 MB/秒。
      • 每 10 Gbps 的網路頻寬,1.1 GB/秒的持續記憶體輸送量。
      • 每 100 Gbps 的網路頻寬持續記憶體輸送量 11 GB/秒。
      • 這些數位假設系統上沒有其他瓶頸,例如 CPU 或記憶體耗盡,而且沒有網路錯誤。
      • 請注意,尖峰記憶體效能通常遠高於持續儲存效能,而且大部分公告的記憶體度量都是尖峰效能。
  • 可能需要SMB直接 傳輸(SMB over Remote Direct Memory Access (RDMA)才能達到特定網路傳送速率,或達到高速,而不會造成高 CPU 使用率。

  • 檔案複本會快速啟動,然後變慢速度。

  • 只有在使用特定技術或 向外延展檔伺服器 (SOFS) 時,傳輸才會變慢。

    • 某些技術通常是備份和資料庫,需要磁碟寫入才能維護數據完整性。
    • Windows SOFS 需要寫入,SQL 備份也是如此。
    • 磁碟寫入要求記憶體作業會略過所有記憶體快取和緩衝區,而且必須直接認可到儲存媒體,才能完成作業。
    • 在這些情況下,缺少高寫入效能的記憶體系統無法提供高效能的SMB傳輸。
  • 尋找網路錯誤的跡象。 常見的網路問題,例如封包遺失,會導致傳輸控制通訊協定 (TCP) 壅塞演算法的網路層級節流。

  • 藉由暫時測試已停用檔案掃描的SMB傳輸效能,以及卸除其文件系統和網路篩選器驅動程式,以判斷反惡意代碼軟體的效能額外負荷。

  • 針對SMB3,請確認 SMB多重通道 已啟用且可運作。

  • 確定已啟用網路卸除技術。

    • SMB 效能與網路效能密切相關。
    • 網路卸除技術,例如接收端調整(RSS)、大型傳送卸除(LSO)、接收區段聯合(RSC)和 TCP/UDP 總和檢查碼,旨在改善網路輸送量,同時降低網路堆疊的 CPU 使用量。
    • 請勿停用網路卸除。
  • 在SMB用戶端上,執行下列PowerShell Cmdlet,確保SMB中不會停用最大傳輸單位 (MTU),且不會啟用頻寬節流:

    Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
    
  • 請遵循SMB檔伺服器的 Windows Server 效能微調指南來微調 SMB 伺服器子系統。

使用小型檔案時傳送速率緩慢

使用 檔案總管 和其他單個線程複製工具,透過網路傳輸大量小型檔案時,複製速度緩慢和低網路輸送量是預期的行為。 「大量小型檔案」定義為數百、數千,甚至數百萬個小於 1 MB 的檔案。

問題詳細資料

從網路通訊協定 (SMB) 和文件系統的觀點來看,檔案建立是「昂貴的作業」。 SMB 必須執行多個通訊協議作業,才能建立檔案,才能傳輸任何數據。 建立檔案時,文件系統本身會受到額外的效能懲罰。

小型檔案復本會重複達到此懲罰。 每個檔案的數據大小不足以讓網路在使用單個線程複本時,讓足夠的數據處於飛行中,以維持高速網路速度,因為建立檔案的時間比傳輸檔案數據還多。

之所以發生此問題,是因為傳輸數據必須停止,才能在傳輸少數數據承載之後執行檔案建立。 不過,單一大型檔案會受到單一檔案建立的懲罰,然後傳輸足夠的數據以達到尖峰網路速度。

詳細技術資訊

網路等待時間、SMB create 命令和防毒程式會導致小型檔案傳輸速度變慢。 以下是此問題的其他詳細資料:

  • SMB 會發出 create 命令來要求建立檔案。

    • 每個 create 命令都會在檔案系統上產生活動。
    • 寫入數據之後,檔案就會關閉。
  • 此程式受到網路、通訊協定 (SMB) 和檔案系統延遲影響。

    • 之所以發生此延遲,是因為文件系統要求會先轉譯成SMB命令、透過網路傳輸,然後轉回文件系統命令,然後才執行實際的文件系統工作。
    • 此程式會在記憶體作業完成之後反轉,然後SMB用戶端才會收到回應,而且可以繼續進行下一個作業。
  • 此外,Endpoint Protection (防病毒軟體) 通常會掃描網路封包和文件系統作業。

    • 這通常會為進程增加少量的延遲。
    • 在小型檔案案例中,每個傳輸的檔案都會重複防病毒軟體動作。
  • 因此,使用單個線程檔案複製工具時,網路輸送量速度可能小於 1 MB/秒。

加速小型檔案複本

  • 搭配 參數使用 robocopy ,並使用 重新導向輸出/log/MT

    • Robocopy 內建於 Windows 中,而且 /MT 參數會啟用多線程檔案複本。
    • 多線程複本可藉由平行執行許多數據傳輸來協助。
      • 建立一或兩個檔案時,可以傳輸多個檔案的數據。
      • 這會增加飛行中的網路數據量,並將網路數據流中的暫停降到最低。
    • 寫入主控台是另一個耗時的作業,因此將輸出重新導向至記錄檔可加速傳輸作業。
    • 根據預設, /MT 一次複製八個檔案。 它一次最多支援 128 份。
    • 太多線程可能會損害效能。 每個 CPU 核心有兩個線程通常很安全,但強烈建議測試找出最佳的效能數目。
    • 如需使用量詳細數據的詳細資訊,請參閱 robocopy
  • 在將數據移入/移出 Azure 時使用 AzCopy

  • 使用檔案壓縮。

    • 將小型檔案壓縮成大型封存盤案(.zip.7z.rar.tar.gz)。
    • 複製封存盤案。
    • 擷取目的地系統上的檔案。 請勿從遠端擷取檔案。
    • 視兩個系統的壓縮和解壓縮速度而定,這可能或可能不會更快。
    • 使用快速壓縮或沒有壓縮封存來減少壓縮和解壓縮時間。
  • 使用支援多線程檔案複製的信任第三方 (非Microsoft) 檔案複製工具。

Office 檔開啟速度緩慢

Office 檔可以緩慢開啟,這通常發生在WAN 連線上。 Office 應用程式(特別是Microsoft Excel)存取和讀取數據的方式通常是導致文件開啟緩慢的原因。

您應該確認 Office 和 SMB 二進位檔是最新的,然後藉由在 SMB 伺服器上停用租用來進行測試。 若要確認這兩個條件都已解決,請遵循下列步驟:

注意事項

這個方法應該謹慎使用。 租用是SMB通訊協定不可或缺的一部分,通常預期可在SMBv2或SMBv3伺服器上使用。 多個功能取決於租用的可用性,例如讀取快取、寫入快取和處理快取。 雖然停用租用可能會解決一些效能緩慢的問題,但它可能會對依賴租用優點的其他應用程式造成負面影響。

  1. 在 Windows 8 和 Windows Server 2012 或更新版本的 Windows 中執行下列 PowerShell Cmdlet:

    Set-SmbServerConfiguration -EnableLeasing $false
    

    或者,若要在 Windows Server 2019 和更新版本中以個別共用方式停用租用,請執行下列 Cmdlet:

    重要

    建議您先測試 LeasingMode 設定為 Shared 。 這允許某些租用,同時停用通常造成緩慢的部分。 只使用 None 做為最終選項。

    Set-SmbShare -Name <ShareName> -LeasingMode [Shared|None]
    
  2. 這可立即在新的SMB用戶端連線上運作。 不需要重新啟動SMB伺服器或客戶端電腦。

若要避免此問題,您也可以將檔案復寫到本機檔伺服器。 如需詳細資訊,請參閱 使用 EFS 時,將 Office 檔儲存到網路伺服器的速度很慢。