数日前,微软为 Windows 11 用户推出了可选更新 KB5016691,以及为 Windows Server 2022 用户推出了 KB5016693。可选更新 KB5016691 所提供的内容将会整合到下月补丁星期二发布的累积更新中,其中部分新功能已经可以尝鲜使用。
KB5016691 和 KB5016693 两个可选更新在其更新日志中,均提及对 Server Message Block (SMB) 压缩的改进,但是日志中并未提及任何细节。幸运的是,微软的内德·派尔(Ned Pyle)在一篇专门的博文中谈到了 SMB 压缩的所有增强功能。
在客户端-服务器环境中使用 SMB 压缩允许管理员、用户和应用通过网络传输内容时对文件进行压缩。这种方式的优点在于明显减少带宽的占用,但由于通过网络传输文件之前和之后需要执行压缩和解压缩过程,因此该方式的代价就是增加 CPU 占用率。
在 KB5016691 和 KB5016693 出现之前,SMB 压缩的行为方式很奇怪。基本上,它使用了一种默认算法,该算法仅尝试压缩文件的前 500MiB(注意:1MB = 1000KB 但 1MiB = 1024KB),任何小于此阈值的内容都不会被压缩,即使它具备“可压缩”的特性。
还有一个额外注意的地方。在读取文件的前 500MiB 期间,如果算法检测到可执行压缩程序的文件容量在 100MiB 以下,那么则根本不会尝试压缩文件的其余部分。
想象以下,你想要传输 10GiB 容量的可压缩文件,但由于前 500MiB 中只有 80MiB 可以压缩,那么 SMB 压缩算法将完全放弃压缩文件,因此最终在网络上传输的文件大小为 10 GiB。强制压缩的唯一方法是覆盖某些默认注册表设置,除非您确切知道自己在做什么,否则编辑这些设置并不是您真正应该做的。
这是一种非常奇怪的行为,并且可能影响了很多用例。然而,好消息是微软正在完全取消算法中的限制。本质上,SMB 压缩现在将尽力压缩您请求压缩的所有文件。
显然,这并不意味着在每个用例中都应该使用 SMB 压缩。 Pyle 强调,一些格式,如 JPG、ZIP 和 DOCX 已经被压缩,但取消这些限制肯定会使 VHDX、ISO 和 DMP 等其他格式受益。
不过,微软并不仅仅止步于此。它引入了新的 PowerShell、组策略和注册表设置,可以更轻松地控制这两种行为。如果您有兴趣,所有这些详细信息和相关命令都会在此处的博客中提及。