Включите сжатие SMB для быстрой передачи файлов в Windows 11/Windows Server 2022
Благодаря версии протокола SMB, представленной в Windows Server 2022 и Windows 11, вы можете использовать встроенную функцию сжатия SMB при копировании, перемещении или открытии файлов по сети. Это позволяет ускорить передачу файлов, снизить пропускную способность и задержку работы сети при передаче больших файлов по сети (таких как файлы дисков виртуальных машин, образы ISO и т. д.). В этой статье мы покажем, как включить и настроить сжатие SMB для общих папок в Windows.
Благодаря использованию сжатия SMB (не путайте его со сжатием NTFS) вам больше не нужно использовать сторонние инструменты для предварительного сжатия файлов перед их передачей по медленной (или лимитированной) сети. Алгоритм сжатия по умолчанию:
XPRESS (LZ77). Вы также можете включить
XPRESS Huffman (LZ77+Huffman),
LZNT1, или
PATTERN_V1*
Алгоритмы сжатия в Windows.
Вы можете включить сжатие SMB как на стороне клиента, так и на стороне сервера SMB.
В Windows Server 2022 вы можете включить сжатие SMB двумя способами:
Использование Центра администрирования Windows (WAC): Файлы и общий доступ к файлам -> Общие ресурсы -> выберите общую сетевую папку и установите флажок Сжимать данные. в его настройках;
Использование PowerShell: при создании новой общей папки (
New-SmbShare -Name "Public" -Path "E:\Public" -CompressData $true) или для существующей акции (
Set-SmbShare -Name "Public" -CompressData $true). Вы можете перечислить все каталоги, в которых включено сжатие SMB:
Get-SmbShare -CompressData $true
Сжатие SMB также можно включить на стороне клиента. Тогда не имеет значения, поддерживает ли серверная часть сжатие SMB.
Следующие команды позволяют подключить общий сетевой диск в Windows 11 с включенным сжатием SMB:
net use * \\munfs01\images /requestcompression:yesили :
New-SmbMapping -LocalPath "U:" -RemotePath "\\munfs01\images" -CompressNetworkTraffic $trueПопробуем измерить скорость и время передачи файлов VMDK (диск виртуальной машины VMware) с включенным сжатием SMB. Вы можете создать общую папку с включенной опцией сжатия SMB или без нее или использовать
/compressопция robocopy для принудительного копирования файла с использованием сжатия SMB. Вот примеры команд:
robocopy z:\ c:\VM\without_smb_compression.vmdk srv02.vmdkrobocopy z:\ c:\VM\with_smb_compression.vmdk srv02.vmdk /compressВ моем примере копирование файла VMDK размером 3 ГБ со сжатием SMB заняло на 20 % меньше времени, чем если бы он не использовался (29 секунд против 37 секунд).
В RTM-версиях Windows 11 и Windows Server 2022 сжатие SMB используется для всех файлов независимо от их размера.
Чтобы всегда использовать сжатие SMB для передачи файлов, вы можете установить параметр
EnableCompressedTraffic = 1в разделе реестра HKLM\System\CurrentControlSet\Services\LanManWorkstation\Parameters. Вы можете установить этот параметр реестра с помощью PowerShell:
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name EnableCompressedTraffic -Value 1
Если вы хотите, чтобы сжатие SMB применялось только к большим файлам (более 100 МБ), установите следующие атрибуты в том же разделе реестра:
СжимаемостьSamplingSize=524288000
СжимаемыйПорог=104857600
Если вы установите CompressibleThreshold=0 и CompressibilitySamplingSize=4294967295, то сжатие SMB будет использоваться при доступе к любому файлу в папке SMB по сети.
Если вы хотите полностью отключить использование сжатия SMB в Windows, установите
DisableCompression = 1Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name DisableCompressedTraffic -Value 1Или используйте команду ниже:
Set-SmbClientConfiguration -DisableCompression $trueФункция сжатия SMB совместима с шифрованием и подписью SMB, SMB через QUIC, многоканальным SMB и динамической миграцией Hyper-V. SMB Direct и RDMA пока не поддерживаются. Вы можете использовать новый
/compressопция в инструментах Robocopy и Xcopy, позволяющая принудительно использовать сжатие SMB при копировании файлов по сети.



