SMB-Daten komprimieren in Windows 11 und Server 2022


    Tags: , , ,

    Dateien kopierenEin neues Feature der jüngsten Windows-Versionen ist SMB Compression. Sie reduziert die zwischen Client und Server trans­ferierte Daten­menge. Die Kompri­mierung lässt sich nun für File-Shares oder Lauf­werks­zuordnungen generell aktivieren. Das Manage­ment erfolgt über das Admin Center oder mittels PowerShell.

    Erste Vorabversionen von SMB Compression beschränkten sich noch auf die Dienst­programme 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 Lauf­werks­zuordnung so konfigurieren, dass die Kompri­mierung unabhängig von diesen Utilities funk­tioniert.

    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 ver­schwendet 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 Standard­verhalten 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

    Compressibility­SamplingSize steht offen­sichtlich 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.

    Compressible­Threshold 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.

    Option zur Aktivierung der SMB-Komprimierung für eine bestimmte Freigabe

    Bei älteren Versionen von Windows Server ist diese Option jedoch ausgegraut, die Komprimierung wird dort nicht unterstützt.

    Läuft der Rechner unter Windows Server 2019, dann lässt sich die SMB-Komprimierung nicht einschalten.

    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.

    SMB Compression beim Anlegen einer neuen Freigabe mit PowerShell aktivieren

    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 Standard­ausgabe 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 Laufwerks­zuordnung 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 erwartungs­gemäß 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

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Ähnliche Beiträge

    Weitere Links