Tags: Windows Server 2022, Windows 11, Datei-Management, Netzwerk
Ein neues Feature der jüngsten Windows-Versionen ist SMB Compression. Sie reduziert die zwischen Client und Server transferierte Datenmenge. Die Komprimierung lässt sich nun für File-Shares oder Laufwerkszuordnungen generell aktivieren. Das Management erfolgt über das Admin Center oder mittels PowerShell.
Erste Vorabversionen von SMB Compression beschränkten sich noch auf die Dienstprogramme robocopy und xcopy, die zuletzt eigene Parameter für diesen Zweck erhielten. Dies ändert sich nun in Windows 11 und der finalen Version von Server 2022. Dort kann man File-Shares oder Laufwerkszuordnung so konfigurieren, dass die Komprimierung unabhängig von diesen Utilities funktioniert.
Das Feature ist mit SMB-Signierung und -Verschlüsselung, SMB over QUIC sowie SMB Multichannel kompatibel. Es lässt sich aber nicht zusammen mit SMB Direct nutzen.
Größter Effekt in langsamen Netzen
Vorteile verspricht die Komprimierung vor allem beim Übertragen von sehr großen Dateien über langsame Netzwerke. Das übliche File-Share im LAN zum Ablegen von Office-Dokumenten wird also davon nicht übermäßig profitieren. Zum einen sind die meisten Dateien zu klein, zum anderen sind die Office-Formate .docx oder .pptx bereits komprimiert.
Aus diesem Grund nutzte Microsoft ursprünglich einen Algorithmus, der bei sehr großen Dateien zunächst die ersten 500 MiB komprimierte und nur dann fortfuhr, wenn sich zumindest 100 MiB davon deutlich verkleinern lassen. Er sollte verhindern, dass Rechenleistung für eine geringe oder gar keine Reduktion der Datenmenge zu verschwendet wird.
Nach dem Erscheinen von Windows Server 2022 änderte Microsoft aber seine Meinung und deaktivierte dieses Verhalten. Wenn also die Komprimierung angefordert wird, dann greift sie bei allen Dateien.
Verhalten der SMB-Komprimierung anpassen
Wenn man dieses neue Standardverhalten von SMB Compression nicht mag, dann kann man zwei Einträge in der Registry unter HKEY_LOCAL_MACHINE => System => CurrentControlSet => Services => LanManWorkstation => parameters nutzen, um es zu ändern.
Name | Wert | Typ |
---|---|---|
CompressibilitySamplingSize | 524288000 | REG_DWORD |
CompressibleThreshold | 104857600 | REG_DWORD |
CompressibilitySamplingSize steht offensichtlich für die Größe des Blocks, der bei großen Dateien testweise komprimiert wird. Der Wert 524288000 in unserem Beispiel entspricht 500MB und aktiviert somit das ursprüngliche Verhalten.
CompressibleThreshold gibt an, unter welcher Größe Dateien ignoriert werden sollen. 104857600 in Bytes sind 100MB. Die neue Einstellung wird sofort wirksam, ein Neustart ist nicht erforderlich.
Komprimierung aktivieren
Microsoft sieht für Aktivieren der SMB Compression entweder das Windows Admin Center (WAC) oder PowerShell vor.
Bevorzugt man die GUI, dann wechselt man im WAC zu Dateien und Dateifreigabe und dort wiederum zum Reiter Dateifreigaben. Wenn man hier eine neue Freigabe anlegt oder eine neue bearbeitet, dann findet sich im betreffenden Formular die Checkbox Daten komprimieren.
Bei älteren Versionen von Windows Server ist diese Option jedoch ausgegraut, die Komprimierung wird dort nicht unterstützt.
Nutzt man für diese Aufgabe PowerShell, dann würde man beim Einrichten eines neuen File-Share so vorgehen:
New-SmbShare -Description "Compression-Test" `
-Path C:\Users\Public\Documents\ `
-CompressData $true -Name "Docs"
Das Cmdlet New-SmbShare verfügt unter Windows 11 und Server 2022 über den neuen Parameter CompressData, der von Microsoft noch nicht dokumentiert wurde.
Um die Komprimierung für eine bestehende Freigabe zu aktivieren, setzt man einen Befehl nach diesem Muster ab:
Set-SmbShare -Name "Compression-Test" -CompressData $true
Will man sich einen Überblick verschaffen, auf welchen Shares die Komprimierung aktiv ist, dann zeigt dies die Standardausgabe von Get-SmbShare nicht an. Hier hilft dieses Kommando:
Get-SmbShare | select Name, Path, Description, CompressData
Um sich alle Freigaben mit aktivierter Kompression anzeigen zu lassen, geht man am einfachsten so vor:
Get-SmbShare -CompressData $true
SMB Compression am Client einschalten
Die geschilderten Methoden schalten die SMB Compression auf dem Server an, wobei es sich dabei um Windows 11 handeln kann, wenn die betreffende Workstation ein Verzeichnis freigibt.
Zusätzlich besteht die Möglichkeit, die Komprimierung auch von der Client-Seite zu aktivieren. Mit dem folgenden Befehl fordert man für eine neue Laufwerkszuordnung die SMB Compression an:
New-SmbMapping -LocalPath "J:" `
-RemotePath "\\server.contoso.com\share" `
-CompressNetworkTraffic $true
Wie man hier erkennen kann, ist der Name des Parameters nicht konsistent mit den beiden anderen Cmdlets. Zudem stellt sich die Frage, ob der Client nur dann erfolgreich die Kompression anfordern kann, wenn diese auch auf dem Server aktiviert ist. Microsofts Dokumentation gibt dazu keine Auskunft.
Komprimierung deaktivieren
Wenn man den SMB-Client generell daran hindern möchte, SMB Compression anzufragen, dann erfüllt folgender Aufruf diese Aufgabe:
Set-SmbClientConfiguration -DisableCompression $true
Mit dem Wert $false erreicht man erwartungsgemäß das Gegenteil, nämlich dass er die Komprimierung immer anfordert.
Ein Pendant für den Server gibt es nicht, dort muss man für diesen Zweck die Registry anpassen:
Die Komprimierung kann man hier nicht erzwingen, die Zuweisung von "0" bewirkt dies nicht.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- SMB-Kompression beim Kopieren über das Netzwerk aktivieren
- WSL 2.0.0: Gleiche Netzwerkkonfiguration für Windows und Linux, Verkleinern der VHDX, RAM-Zurückgewinnung
- Netzwerkprofile zwischen privat und öffentlich ändern
- Microsoft mustert NetBIOS zugunsten von mDNS aus
- Windows 11 und Server vNext erhalten NTLM-Schutz gegen Brute-Force-Angriffe
Weitere Links