SMB Compression в Windows 10/11 и на серверах: когда сжатие ускоряет копирование, а когда нет (2025)
SMB Compression позволяет сжимать данные «на лету». На медленных каналах это спасение, на быстрых — иногда лишняя нагрузка на CPU. Разберём, когда включать, как задать правила и как проверить, что трафик действительно сжимается.
Коротко
- Сжатие выгодно на текстах, логах, CSV, виртуальных дисках с большим «пустым» пространством.
- Слабые CPU и уже сжатый контент (ZIP/MP4/HEVC) выгоды не дают.
- В Windows можно включить сжатие для конкретной шары, пути или всего сервера.
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 упирается в предел. Проверьте типы файлов и правила.