文章目录
使用SMB压缩
使用 SMB 压缩,管理员、用户或应用程序能够在文件通过网络传输时请求压缩文件。 这样一来,将无需首先使用应用程序手动压缩文件、复制文件,然后在目标计算机上解压缩文件。
压缩文件将消耗更少的网络带宽并花费更少的时间进行传输,但在传输过程中 CPU 使用率会略微增加。 SMB 压缩在带宽较少的网络上使用效果会更加明显。
Windows 中的 SMB 压缩特征
Windows 中的 SMB 压缩具有以下特征:
- 支持压缩算法 XPRESS (LZ77)、XPRESS Huffman (LZ77+Huffman)、LZNT1 或 PATTERN_V1*。
- 自动使用 XPRESS
- 在 Windows Server 2025 上支持 LZ4 压缩算法
- 支持 SMB 签名和 SMB 加密
- 支持基于 QUIC 的 SMB
- 支持 SMB 多通道
- 不支持基于 RDMA 的 SMB 直通
SMB压缩使用条件
文件服务器工作负载中使用 SMB 压缩,需要以下各项:
- 运行 Windows Server 2022 的文件服务器
- Windows 11 的计算机
配置 SMB 压缩
可以从客户端和服务器角度配置 SMB 压缩。 客户端和服务器不引用特定版本(如 Windows Server 2022 或 Windows 11 版本 24H2),而是指两台计算机之间文件传输的体系结构。 Windows Server 2022 和 Windows 11 都支持作为 SMB 压缩的客户端或服务器。
换句话说就是Windows 2022 - Windows 11,Windows 2022 - Windows 2022,Windows 11 - Windows 11都支持。
对文件共享进行 SMB 压缩
以管理员身份打开PowerShell 命令提示符。
创建一个新的压缩共享:
New-SmbShare -Name "File" -Path "C:\File" -CompressData $true
对现有的共享进行压缩请求
Set-SmbShare -Name "File" -CompressData $true
SMB客户端默认启用压缩
若要使 SMB 客户端默认压缩文件:
Set-SmbClientConfiguration -RequestCompression $true
SMB服务器默认启用压缩
要使 SMB 服务器始终尝试压缩文件:
Set-SmbServerConfiguration -RequestCompression $true
SMB客户端默认不启用压缩
若要始终不允许 SMB 客户端压缩文件,而不考虑任何其他请求:
Set-SmbClientConfiguration -DisableCompression $true
SMB服务器默认不启用压缩
要始终不允许 SMB 客户端压缩文件,而不考虑任何其他请求:
Set-SmbServerConfiguration -DisableCompression $true
SMB压缩能够帮助解决的问题
Windows SMB(Server Message Block)压缩功能主要用于在网络传输过程中减少数据量,从而在一定程度上缓解网络带宽的压力并加快文件传输速度,特别是在低速或高延迟的网络环境中。以下是SMB压缩能够帮助解决的一些主要问题:
减少网络带宽使用:通过压缩文件数据,可以显著减少需要通过网络传输的数据量。这对于网络资源有限或者网络成本较高的环境特别有用。
加速文件传输:尽管压缩和解压过程本身会消耗一定的计算资源,但在某些情况下(特别是当网络速度远低于处理器处理能力时),启用压缩可以缩短大文件的传输时间。
改善远程访问体验:对于远程桌面服务(如RDP)或云服务中的文件访问,启用SMB压缩可以提升用户体验,因为减少了数据传输量意味着更少的等待时间和更快的应用程序响应速度。
跨广域网(WAN)效率:在跨地理位置的数据中心之间传输数据时,由于可能存在较大的网络延迟,使用SMB压缩可以帮助优化这些连接上的性能。
值得注意的是,是否开启SMB压缩应该基于具体的应用场景来决定。
例如,在高速局域网(LAN)环境下,可能不需要也不建议开启此功能,因为此时压缩带来的额外CPU开销可能会超过其带来的好处。
而在低速或高延迟的网络环境中,SMB压缩则可能提供明显的性能增益。
此外,不同的文件类型对压缩的效果也不同,文本文件通常可以获得较好的压缩比,而已经高度压缩过的文件(如JPEG图像、MP4视频等)则不会有太大变化。