服务器消息块(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 文件。
不可压缩的数据(如存档(.zip、.7z和)、视频(.mp4.mkv和.rar)和音频(.mp3和.flac)文件不会通过 SMB 压缩看到显著的性能改进。
SMB 压缩从 Windows 11 和 Windows Server 2022 开始可用。
SMB 速度可以受到存储性能的限制。
确保支持存储具有所需的可用性能特征,以满足所需的网络吞吐量。
通过 SMB 实现的大致实际存储到网络性能速度如下:
每 1 Gbps 的网络带宽提供 110 MB/秒的持续存储吞吐量。
每 10 Gbps 的网络带宽提供 1.1 GB/秒的持续存储吞吐量。
每 100 Gbps 的网络带宽提供 11 GB/秒的持续存储吞吐量。
这些数字假定系统上没有其他瓶颈,例如 CPU 或内存耗尽,并且没有网络错误。
请注意,峰值存储性能通常大于持续存储性能,并且大多数播发的存储度量都是峰值性能。
可能需要 SMB 直通 (通过远程直接内存访问 (RDMA))达到某些网络传输速度,或者达到高速,而不会造成高 CPU 使用率。
文件副本会快速启动,然后减慢速度。
当初始副本由存储缓存或在系统内存中缓冲时,可能会更改复制速度,然后缓存达到容量。
然后,一旦内存缓冲区和存储缓存耗尽,数据将直接提交到磁盘(写入),从而将性能限制限制为持续写入的存储介质。
使用 Microsoft SysInternals 中的 RAMMap 来确定内存中的映射文件使用情况是否停止增长。
这表示内存缓冲区已用尽。
RAMMap 不会自动刷新。 在键盘或文件>刷新上使用 F5 更新内存使用情况。
使用存储性能监视器计数器来确定存储性能是否与网络吞吐量成比例下降。 有关详细信息,请参阅 SMB 文件服务器的性能优化。
如果 Windows Server 2016 及更高版本中的性能大约每 5 GB 降低一次,请调整远程文件脏页阈值。
仅当使用某些技术或 横向扩展文件服务器(SOFS)时传输速度较慢。
某些技术(通常是备份和数据库)需要磁盘写入才能维护数据完整性。
Windows SOFS 需要写通,SQL 备份也是如此。
磁盘写通要求存储作绕过所有存储缓存和缓冲区,并且必须直接提交到存储介质,以便作完成。
在这些情况下,缺少高写入性能的存储系统无法提供高性能 SMB 传输。
查找网络错误的迹象。 常见的网络问题(如数据包丢失)将导致传输控制协议(TCP)拥塞算法的网络级别限制。
通过临时测试禁用的文件扫描以及卸载的文件系统和网络筛选器驱动程序,确定反恶意软件的性能开销。
对于 SMB3,请验证 SMB 多通道 是否已启用且正常工作。
确保启用网络卸载技术。
SMB 性能与网络性能密切相关。
网络卸载技术(如接收端缩放(RSS)、大型发送卸载(LSO)、接收段合并(RSC)和 TCP/UDP 校验和,旨在提高网络吞吐量,同时降低网络堆栈的 CPU 使用率。
不要禁用网络卸载。
在 SMB 客户端上,运行以下 PowerShell cmdlet,确保未禁用最大传输单元(MTU),并且未在 SMB 中启用带宽限制:
Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
按照适用于 SMB 文件服务器的 Windows Server 性能优化指南优化 SMB 服务器子系统。
使用小型文件时传输速度缓慢
使用文件资源管理器和其他单线程复制工具通过网络传输大量小型文件时,复制速度缓慢和网络吞吐量较低。 “大量小文件”被定义为数百、数千甚至数百万个小于 1 MB 的文件。
问题详情
从网络协议(SMB)和文件系统的角度来看,文件创建是一种“昂贵的作”。 SMB 必须执行多个协议作才能创建文件,然后才能传输任何数据。 创建文件时,文件系统本身会产生额外的性能损失。
小文件副本重复达到此惩罚。 使用单线程副本时,每个文件的数据大小不足以使足够的数据处于飞行状态,以维持较高的网络速度,因为创建文件所需的时间比传输文件数据的时间要多。
出现此问题的原因是,在传输少量数据有效负载后,必须停止数据传输才能执行文件创建。 但是,单个大型文件具有单个文件创建惩罚,然后传输足够的数据以达到峰值网络速度。
技术详细信息
网络延迟、SMB create 命令和防病毒程序会导致小文件的传输速度较慢。 下面是有关此问题的其他详细信息:
SMB 发出 create 命令以请求创建文件。
每个 create 命令都会在文件系统上生成活动。
写入数据后,文件会关闭。
此过程受到网络、协议(SMB)和文件系统延迟的影响。
发生此延迟的原因是文件系统请求首先转换为 SMB 命令,通过网络传输,并重新转换为文件系统命令,然后才执行实际的文件系统工作。
在存储作完成之后,此过程将逆转,只有这样,SMB 客户端才会收到响应,并可以继续执行下一作。
此外,终结点保护(防病毒)通常会扫描网络数据包和文件系统作。
这通常会增加进程的少量延迟。
在小型文件方案中,针对传输的每个文件重复防病毒作。
因此,使用单线程文件复制工具时,网络吞吐量速度可能小于 1 MB/秒。
加快小型文件副本
与 robocopy 参数一起使用 /MT ,并使用 /log重定向输出。
Robocopy 内置于 Windows 中,参数 /MT 支持多线程文件副本。
多线程副本通过并行运行许多数据传输来帮助实现。
创建一个或两个文件时,可以传输多个文件的数据。
这会增加正在进行的网络数据量,并最大程度地减少网络数据流中的暂停。
写入控制台是另一个耗时的作,因此将输出重定向到日志文件会加快传输作业的速度。
默认情况下, /MT 一次复制八个文件。 它一次最多支持 128 个副本。
线程过多可能会损害性能。 每个 CPU 核心有两个线程通常是安全的,但强烈建议测试找到最佳性能数。
有关使用情况详细信息的详细信息,请参阅 robocopy。
将数据移出/移出 Azure 时使用 AzCopy 。
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
这立即适用于新的 SMB 客户端连接。 无需重启 SMB 服务器或客户端计算机。
若要避免此问题,你还可以将文件复制到本地文件服务器。 有关详细信息,请参阅使用 EFS 时将 Office 文档保存到网络服务器速度缓慢。