数日前,微软为 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、组策略和注册表设置,可以更轻松地控制这两种行为。如果您有兴趣,所有这些详细信息和相关命令都会在此处的博客中提及。