Windows 10 Fall Creators Update 和 Windows Server 版本 1709 (RS3),默认情况下不再安装服务器消息块版本 1 (SMBv1) 网络协议。
其实从2007年开始,SMBv1已经逐渐被SMBv2取代,Microsoft 在 2014 年公开弃用了 SMBv1 协议。
但是因为域、共享服务 等很多Windows比较古老的服务都是最早基于SMBv1开发,且SMBv1算是一个隐姓埋名的协议,所以大多数人并不知晓和清楚。
关联影响比较大的是浏览器服务,资源管理器网络无法再通过旧版 NetBIOS 数据报浏览方法显示 Windows 计算机。
根据微软官网公布的资讯,SMBv1 在 Windows 10 和 Windows Server 2019 及更高版本中具有以下行为:
执行powershell查询:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
输出结果如下图:
状态为False则为未启用状态。
执行cmd命令行检测:
sc.exe qc lanmanworkstation
Set-SmbServerConfiguration -EnableSMB1Protocol $false
如果需要启用,则执行:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
可以通过检查当前存储使用情况来排查文件传输速度缓慢的问题。 如果你发现文件传输速度缓慢,可以使用如下方法:
- xcopy /J
- robocopy /J
Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
网络延迟、create 命令和防病毒程序会导致小文件的传输速度变慢。
存储性能问题可能会导致 SMB 服务器上的 CPU 使用率过高。在继续之前,请使用进程资源管理器来查看 srv2.sys 或 ntfs.sys 是否有消耗过多的 CPU 资源。
磁盘 IO 延迟测量的是创建磁盘 IO 请求与完成该请求之间的时间延迟。
在 Perfmon 中测量的 IO 延迟包括在硬件层中花费的所有时间,再加上在 Microsoft 端口驱动程序队列 (Storport.sys for SCSI) 中花费的时间。
在 Perfmon 中,以下计数器显示物理磁盘延迟:
“_Total”实例是计算机中所有物理磁盘的延迟平均值。 其他每个实例表示单个物理磁盘。
要排查此问题,请禁用基于存取的枚举 (ABE) 功能。
要确定哪些 SMB 共享启用了 ABE,请运行以下 PowerShell 命令:
Get-SmbShare | Select Name, FolderEnumerationMode
PS C:\Windows\system32> Get-SmbShare | Select Name, FolderEnumerationMode
Name FolderEnumerationMode
---- ---------------------
IPC$ Unrestricted
PS C:\Windows\system32>
Unrestricted = ABE 已禁用。
AccessBase = ABE 已启用。