伺服器訊息塊 (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 使用率。
檔案複本會快速啟動,然後變慢速度。
當初始複本由記憶體快取或在系統記憶體中緩衝,然後快取達到容量時,可能會發生複製速度變更。
然後,數據會在記憶體緩衝區和記憶體快取耗盡后直接認可到磁碟(寫入),以限制記憶體媒體持續寫入限制的效能。
使用來自 Microsoft SysInternals 的 RAMMap 來判斷記憶體中的對應檔案使用量是否會停止成長。
- 這表示記憶體緩衝區已用盡。
- RAMMap 不會自動重新整理。 在您的鍵盤或檔案>重新整理上使用 F5 來更新記憶體使用量。
使用記憶體性能監視器計數器來判斷記憶體效能是否與網路輸送量成正比降低。 如需詳細資訊,請參閱 SMB檔伺服器的效能微調。
如果效能在 Windows Server 2016 和更新版本中大約每 5 GB 降低一次,請調整遠端檔案的髒頁面閾值。
只有在使用特定技術或 向外延展檔伺服器 (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。
- Robocopy 內建於 Windows 中,而且
在將數據移入/移出 Azure 時使用
AzCopy
。使用檔案壓縮。
- 將小型檔案壓縮成大型封存盤案(
.zip
、.7z
、.rar
、.tar
和.gz
)。 - 複製封存盤案。
- 擷取目的地系統上的檔案。 請勿從遠端擷取檔案。
- 視兩個系統的壓縮和解壓縮速度而定,這可能或可能不會更快。
- 使用快速壓縮或沒有壓縮封存來減少壓縮和解壓縮時間。
- 將小型檔案壓縮成大型封存盤案(
使用支援多線程檔案複製的信任第三方 (非Microsoft) 檔案複製工具。
Office 檔開啟速度緩慢
Office 檔可以緩慢開啟,這通常發生在WAN 連線上。 Office 應用程式(特別是Microsoft Excel)存取和讀取數據的方式通常是導致文件開啟緩慢的原因。
您應該確認 Office 和 SMB 二進位檔是最新的,然後藉由在 SMB 伺服器上停用租用來進行測試。 若要確認這兩個條件都已解決,請遵循下列步驟:
注意事項
這個方法應該謹慎使用。 租用是SMB通訊協定不可或缺的一部分,通常預期可在SMBv2或SMBv3伺服器上使用。 多個功能取決於租用的可用性,例如讀取快取、寫入快取和處理快取。 雖然停用租用可能會解決一些效能緩慢的問題,但它可能會對依賴租用優點的其他應用程式造成負面影響。
在 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]
這可立即在新的SMB用戶端連線上運作。 不需要重新啟動SMB伺服器或客戶端電腦。
若要避免此問題,您也可以將檔案復寫到本機檔伺服器。 如需詳細資訊,請參閱 使用 EFS 時,將 Office 檔儲存到網路伺服器的速度很慢。