SMB Compression Windows Server or Client

SMB Compression Windows Server or Client

Datenkomprimierung zur Entlastung des Netzwerks

Unter Windows Server 2022 sowie unter Windows 11 und höher, wird die SMB-Compression (Datenkomprimierung) unterstützt. Das Ziel ist die Entlastung von Clients mit einer Anbindung von z.B. 1 GBit über Ethernet oder einer langsamen WLAN-Verbindung. Selbstverständlich kommen auch andere Konfigurationen infrage. Das Thema SMB Compression Windows Server or Client ist nicht neu, aber auch nicht oft behandelt worden.

SMB Compression Windows Server or Client

Es gibt mehrere Methoden die SMB-Komprimierung einzusetzen. Entweder aktiviert man dafür einen Server/Client, der eine Freigabe enthält und Daten präsentiert über die Registry oder einer Gruppenrichtlinie dauerhaft, oder man nimmt die Konfiguration direkt über die entsprechende Freigabe vor.

Aktivieren bedeutet in diesem Fall, das die Maschine die die Daten bzw. die Freigabe(n) präsentiert die SMB-Compression anfordert. Wenn der Remote-Computer die SMB-Compression unterstützt, komprimiert die präsentierende Maschine die Daten und sendet diese dann über das SMB-Protokoll an den Remote-Computer.

Zum Testen habe ich auf meinem DC eine Freigabe namens Compression erstellt. Dieser Freigabe habe ich mitgeteilt (konfiguriert), das die Kompression sofern möglich, angefordert werden soll. Die Testdatei ist eine 6.1 GB große ISO-Datei. Zum Kopieren habe ich Robocopy eingesetzt damit mir die Kopierzeit sowie die Geschwindigkeit angezeigt wird. Insgesamt habe ich 4 Copy-Jobs hintereinander laufen lassen, zweimal mit dem Parameter /Compress und zweimal ohne.

ROBOCOPY \\DC.windowspapst.de\Compression *.iso C:\Compression /COMPRESS
ROBOCOPY \\DC.windowspapst.de\Compression *.iso C:\Compression

Der Unterschied ist bemerklich. 20 Sekunden schneller geht es mit dem Schalter Compress.

SMB Compression Windows Server or Client

Die Auslastung zur Komprimierung hält sich im Rahmen, wobei die Ausstattung von 2x vCPUs und 2 GB RAM nicht hoch ist.

Datenkomprimierung zur Entlastung des Netzwerks

Bei vielen kleineren Dateien (50-180 MB), ist die Einsparung ganz ordentlich. Auch hierzu habe ich ein Ergebnis.

Einmal den Kopiervorgang gestartet mit dem Schalter/Compress:

CompressData

Und einmal ohne den Schalter /Compress. Knapp 2 Minuten länger dauert der Kopiervorgang.

REQUESTCOMPRESSION No

Die Komprimierung der Daten ist gut zu erkennen. Die Peeks sprechen für sich.

CPU Data Compression

SMB Data Compression Powershell

Hier mal ein paar Befehle zum Setzen der Anforderung zur Komprimierung auf ein Share:

# Ein neues Share mit Compression anlegen
New-SmbShare -Name “Compression” -Path “C:\Compression” -CompressData $true

# Einem vorhandenem Share das Flag Compression setzen, damit die Komprimierung angefordert werden kann
Set-SmbShare -Name “Compression add” -CompressData $true
NET USE * \\DC\Compression /REQUESTCOMPRESSION:YES

# Und das Ganze kann auch wieder rückgängig gemacht werden
Set-SmbShare -Name “Compression add” -CompressData $false

# Eine Share-Config abrufen
Get-SmbShare -Name Compression | fl -property *
Get-SmbShare -Name Compression | fl -property compressdata

Über die Registry kann das Ganze systemseitig aktiviert werden:

Eine Anpassung am Share ist somit nicht notwendig.

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] “EnableCompressedTraffic”=dword:00000001

SMB Compression Windows Server or Client