SMB Compression в Windows 10/11 и на серверах: когда сжатие ускоряет копирование, а когда нет (2025)

SMB Compression позволяет сжимать данные «на лету». На медленных каналах это спасение, на быстрых — иногда лишняя нагрузка на CPU. Разберём, когда включать, как задать правила и как проверить, что трафик действительно сжимается.

Коротко

  • Сжатие выгодно на текстах, логах, CSV, виртуальных дисках с большим «пустым» пространством.
  • Слабые CPU и уже сжатый контент (ZIP/MP4/HEVC) выгоды не дают.
  • В Windows можно включить сжатие для конкретной шары, пути или всего сервера.
Нужна помощь? Настрою правила SMB Compression под Ваши данные и канал, измерю эффект и оставлю только то, что даёт прирост.

1) Включаем сжатие

PowerShell (Администратор на сервере) — выполнять по одной строке:

# Включить по умолчанию для всего сервера
Set-SmbServerConfiguration -EnableCompression $true -Force
# Включить для конкретной шары
Set-SmbShare -Name "Public" -EnableSMBCompression $true

2) Тонкая настройка: правила компрессии

Можно ограничить сжатие типами файлов/папками или включать по размеру. Для Windows Server используйте политики/реестр.

PowerShell (Сервер) — выполнять по одной строке:

# Пример: включать сжатие только при размере файла > 256 МБ
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "SmbCompressionMinimumFileSize" -Type DWord -Value 268435456

3) Проверяем, что трафик сжимается

PowerShell (Клиент/Сервер) — выполнять по одной строке:

Get-SmbClientNetworkInterface | Select-Object InterfaceIndex, RssCapable, Speed
Get-SmbClientConfiguration | Select-Object EnableCompression
# Счётчики сжатия на сервере
Get-SmbServerNetworkInterface | Select-Object InterfaceIndex, Speed
Get-Counter -Counter "\SMB Server Shares(*)\Compressed Bytes" -SampleInterval 1 -MaxSamples 5

4) Измеряем эффект правильно

  • Копируйте большой набор текстов/логов/баз. Сравните время и загрузку CPU до/после.
  • На гигабитном канале с быстрыми CPU часто смысла меньше, чем на медленном WAN.

5) Отключить и вернуться к дефолту

PowerShell (Сервер) — код можно вставить целиком:

Set-SmbShare -Name "Public" -EnableSMBCompression $false
Set-SmbServerConfiguration -EnableCompression $false -Force
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "SmbCompressionMinimumFileSize" -ErrorAction SilentlyContinue

FAQ

Компрессия конфликтует с шифрованием SMB?

Нет, это разные этапы. Сжатие выполняется до шифрования.

Нужно ли включать на клиентах?

Достаточно на сервере/шаре. Клиент умеет договариваться автоматически.

Почему нет прироста?

Контент уже сжат или CPU упирается в предел. Проверьте типы файлов и правила.

Читайте также: