SMB-Komprimierung

Mit der SMB-Komprimierung kann ein Administrator, ein Benutzer oder eine Anwendung die Komprimierung von Dateien anfordern, wenn diese über das Netzwerk übertragen werden. Dadurch ist es nicht mehr notwendig, eine Datei manuell mittels Deflate mit einer Anwendung zu verkleinern, sie zu kopieren und dann auf dem Zielcomputer zu vergrößern. Komprimierte Dateien verbrauchen weniger Netzwerkbandbreite und nehmen weniger Zeit für die Übertragung in Anspruch. Dies führt allerdings zu einer geringfügig höheren CPU-Auslastung während der Übertragungen. Die SMB-Komprimierung funktioniert am effektivsten in Netzwerken mit geringerer Bandbreite, z. B. dem Ethernetnetzwerk oder WLAN eines Clients mit 1 Gbit/s. Eine Dateiübertragung über ein nicht überlastetes 100-Gbit/s-Ethernetnetzwerk zwischen zwei Servern mit Flashspeicher kann in der Realität ohne SMB-Komprimierung genauso schnell sein, führt aber ebenfalls zu einer geringeren Belastung für andere Anwendungen.

Die SMB-Komprimierung in Windows weist die folgenden Merkmale auf:

  • Unterstützt die Komprimierungsalgorithmen XPRESS (LZ77), XPRESS Huffman (LZ77+Huffman), LZNT1 oder PATTERN_V1*. XPRESS wird automatisch verwendet.
  • Unterstützt den Komprimierungsalgorithmus LZ4 unter Windows Server 2025
  • Unterstützt SMB-Signierung und SMB-Verschlüsselung.
  • Unterstützt SMB über QUIC.
  • Unterstützt SMB Multichannel.
  • SMB Direct über RDMA wird nicht unterstützt.

Hinweis

Windows 11 und Windows Server 2025 unterstützen auch komprimierungsalgorithmus LZ4 gemäß LZ4.org. Weitere Informationen zu diesem Komprimierungsalgorithmus finden Sie in der Dokumentation zur LZ4-Komprimierung.

Eine Demonstration der SMB-Komprimierung finden Sie in diesem Video:

Requirements (Anforderungen)

Um die SMB-Komprimierung in einer herkömmlichen Client-Dateiserver-Workload verwenden zu können, benötigen Sie Folgendes:

Konfigurieren der SMB-Komprimierung

Sie können die SMB-Komprimierung sowohl aus Client- als auch aus Serversicht konfigurieren. Client und Server beziehen sich nicht auf eine bestimmte Edition wie Windows Server 2022 oder Windows 11, Version 24H2, sondern auf die Architektur einer Dateiübertragung zwischen zwei Computern. Sowohl Windows Server 2022 als auch Windows 11 unterstützen die Verwendung als Client oder Server für die SMB-Komprimierung.

Anfordern der SMB-Komprimierung auf Dateifreigaben

Sie können Freigaben so konfigurieren, dass sie immer eine Komprimierung anfordern, wenn Clients eine Verbindung mit ihnen anfordern. Sie können das Windows Admin Center oder PowerShell verwenden.

Verwenden von Windows Admin Center

  1. Installieren Sie Windows Admin Center, und stellen Sie eine Verbindung mit einem Windows Server 2022-Dateiserver her.
  2. Klicken Sie auf das Menüelement Dateien und Dateifreigabe.
  3. Klicken Sie auf Dateifreigaben.
  4. Bearbeiten Sie eine vorhandene Freigabe, oder erstellen Sie eine neue Freigabe.
  5. Wählen Sie Daten komprimieren aus, und klicken Sie dann auf Hinzufügen oder Bearbeiten.

Screenshot: Windows Admin Center im Windows Server 2022-Dateiserver

Verwenden von PowerShell

  1. Öffnen Sie eine PowerShell-Eingabeaufforderung mit erhöhten Rechten als Administrator.

  2. Erstellen Sie eine neue Freigabe mit Komprimierung unter Verwendung von New-SMBShare mit dem Parameter -CompressData $true und einem Argument. Zum Beispiel:

    New-SmbShare -Name "Sales" -Path "C:\sales" -CompressData $true
    
  3. Bearbeiten Sie eine vorhandene Freigabe mit Komprimierung unter Verwendung von Set-SMBShare mit dem -CompressData $true-Parameter und -Argument. Zum Beispiel:

    Set-SmbShare -Name "Sales" -CompressData $true
    

Anfordern der SMB-Komprimierung auf zugeordneten Laufwerken

Sie können anfordern, dass alle Daten, die über ein zugeordnetes Laufwerk kopiert werden, komprimiert werden. Dies kann im Rahmen eines Anmeldeskripts oder bei manueller Ausführung erfolgen.

  1. Öffnen Sie eine PowerShell-Eingabeaufforderung.

  2. Ordnen Sie ein Laufwerk unter Verwendung von New-SMBMapping mit dem Parameter -CompressNetworkTraffic $true und einem Argument zu. Zum Beispiel:

    New-SmbMapping -LocalPath "Z:" -RemotePath "\\fs1.corp.contoso.com\sales" -CompressNetworkTraffic $true
    

Anfordern der SMB-Komprimierung mit Kopiertools

Sie können anfordern, dass die SMB-Komprimierung für bestimmte Dateien mit „robocopy“ oder „xcopy“ versucht wird.

Hinweis

Wenn Sie möchten, dass der Datei-Explorer, Kopiertools von Drittanbietern oder Anwendungen die Komprimierung verwenden, ordnen Sie Laufwerke mit Komprimierung zu, aktivieren Sie die Komprimierung auf Freigaben, oder konfigurieren Sie SMB-Clients so, dass sie die Komprimierung immer durchführen.

  1. Öffnen Sie eine CMD- oder eine PowerShell-Eingabeaufforderung.

  2. Kopieren mit dem /COMPRESS-Flag. Zum Beispiel:

    ROBOCOPY c:\hypervdisks \\hypervcluster21.corp.contoso.com\disks$ *.vhdx /COMPRESS
    

Komprimierungsanforderungen immer anfordern oder immer ablehnen

Ab Windows Server 2022 mit Update KB5016693 (Betriebssystembuild 20348.946) und Windows 11 mit Update KB5016691 (Betriebssystembuild 22000.918) können Sie einen SMB-Client oder SMB-Server so konfigurieren, dass die Komprimierung immer angefordert und Anforderungen für die Komprimierung immer abgelehnt werden. Sie können jetzt eine Gruppenrichtlinie oder PowerShell nutzen. In den ersten Versionen von Windows 11 und Windows Server 2022 konnten Sie nur Registrierungseinstellungen verwenden, um die meisten dieser Verhaltensweisen zu steuern, und Sie konnten einen SMB-Server nicht so konfigurieren, dass trotz Freigabeeinstellungen immer eine Komprimierung angefordert wurde. Ein SMB-Client und ein SMB-Server beziehen sich auf die SMB-Dienste, nicht auf eine Windows-Edition oder -SKU. Alle diese SMB-Änderungen werden sofort ohne Neustart wirksam.

Immer Komprimierung versuchen (SMB-Client)

  1. Führen Sie die Gruppenrichtlinie Verwaltungskonsole für Ihre Active Directory-Domäne aus, und erstellen oder navigieren Sie zu einer Gruppenrichtlinie.
  2. Erweitern Sie die Richtlinie Computerkonfiguration\Richtlinien\Administrative Vorlagen\Netzwerk\LanMan-Arbeitsstation.
  3. Aktivieren Sie die Richtlinie SMB-Komprimierung standardmäßig verwenden.
  4. Schließen Sie den Richtlinien-Editor.

Nie komprimieren (SMB-Client)

  1. Führen Sie die Gruppenrichtlinie Verwaltungskonsole für Ihre Active Directory-Domäne aus, und erstellen oder navigieren Sie zu einer Gruppenrichtlinie.
  2. Erweitern Sie die Richtlinie Computerkonfiguration\Richtlinien\Administrative Vorlagen\Netzwerk\LanMan-Arbeitsstation.
  3. Aktivieren Sie die Richtlinie SMB-Komprimierung deaktivieren.
  4. Schließen Sie den Richtlinien-Editor.

Immer Komprimierung versuchen (SMB-Server)

  1. Führen Sie die Gruppenrichtlinie Verwaltungskonsole für Ihre Active Directory-Domäne aus, und erstellen oder navigieren Sie zu einer Gruppenrichtlinie.
  2. Erweitern Sie die Richtlinie Computerkonfiguration\Richtlinien\Administrative Vorlagen\Netzwerk\LanMan-Server.
  3. Aktivieren Sie die Richtlinie Datenverkehrskomprimierung für alle Freigaben anfordern.
  4. Schließen Sie den Richtlinien-Editor.

Nie komprimieren (SMB-Server)

  1. Führen Sie die Gruppenrichtlinie Verwaltungskonsole für Ihre Active Directory-Domäne aus, und erstellen oder navigieren Sie zu einer Gruppenrichtlinie.
  2. Erweitern Sie die Richtlinie Computerkonfiguration\Richtlinien\Administrative Vorlagen\Netzwerk\LanMan-Server.
  3. Aktivieren Sie die Richtlinie SMB-Komprimierung deaktivieren.
  4. Schließen Sie den Richtlinien-Editor.

Verstehen und Steuern des Komprimierungsverhaltens

Ab Windows Server 2022 mit Update KB5016693 (Betriebssystembuild 20348.946) und Windows 11 mit Update KB5016691 (Betriebssystembuild 22000.918) versucht SMB standardmäßig immer, eine Datei auf Anforderung eines Clients oder Servers zu komprimieren, ohne ein Sampling der Komprimierung auszuführen.

Hinweis

In der ursprünglichen Version von Windows Server 2022 und Windows 11 wurde bei der SMB-Komprimierung standardmäßig ein Algorithmus verwendet, der versuchte, die ersten 524.288.000 Byte (500 MiB) einer Datei während der Übertragung zu komprimieren und nachzuverfolgen, dass innerhalb dieses 500-MiB-Bereichs mindestens 104.857.600 Byte (100 MiB) komprimiert wurden. Wenn weniger als 100 MiB komprimiert werden konnten, versuchte die SMB-Komprimierung nicht mehr, den Rest der Datei zu komprimieren. Wenn mindestens 100 MiB komprimiert wurden, versuchte die SMB-Komprimierung, den Rest der Datei zu komprimieren. Durch diese Änderung des Verhaltens ist das Sampling jetzt standardmäßig deaktiviert, und SMB versucht immer, die gesamte Datei zu komprimieren, wenn ein Client oder Server dies anfordert.

Testen der SMB-Komprimierung

Eine einfache Möglichkeit zum Testen Ihrer Komprimierungskonfiguration ist die Verwendung von VHDX-Dateien. Sie können eine VHDX erstellen und bereitstellen, ihr einige Dateien hinzufügen, dann die Bereitstellung der VHDX aufheben und sie als Datei kopieren. Alternativ können Sie einfach eine vorhandene VHDX-Datei mit nicht bereitgestellten virtuellen Computern kopieren, da ein Großteil des Dateiinhalts komprimiert wird. Beispiel für das Erstellen einer VHDX-Testdatei:

  1. Starten Sie „Diskmgmt.msc“.

  2. Wählen Sie Lokaler Datenträger (C:) aus, indem Sie darauf klicken.

  3. Klicken Sie auf Aktion und dann auf VHD erstellen.

  4. Klicken Sie in „Diskmgmt“ mit der rechten Maustaste auf Ihre VHDX, die jetzt als „Nicht initialisiert“ angezeigt wird, klicken Sie auf Datenträger initialisieren, und dann auf OK. Klicken Sie mit der rechten Maustaste auf den Abschnitt Nicht zugeordnet des Datenträgers, klicken Sie auf Neues einfaches Volume, dann für alle Menüaufforderungen auf Weiter und abschließend auf Fertig stellen.

  5. Geben Sie einen Dateipfad an, legen Sie die Größe auf „25 GB“ fest, wählen Sie VHDX und feste Größe aus, und klicken Sie dann auf OK.

    Screenshot: Erstellen und Anfügen einer virtuellen Festplatte für Windows Hyper-V

  6. Klicken Sie mit der rechten Maustaste auf den Datenträger, klicken Sie auf VHD trennen und dann auf OK.

  7. Doppelklicken Sie im Datei-Explorer auf diese VHDX-Datei, um sie bereitzustellen. Kopieren Sie einige MB nicht komprimierbarer Dateien, z. B. JPG-Dateien, klicken Sie dann mit der rechten Maustaste auf den bereitgestellten Datenträger, und klicken Sie auf Auswerfen.

Sie verfügen jetzt über eine große Testdatei mit komprimiertem Inhalt.

Das Testen der SMB-Komprimierung zwischen zwei virtuellen Computern, die auf demselben Hyper-V-Host ausgeführt werden, ergibt möglicherweise keine Zeiteinsparungen, da der virtuelle Switch 10 Gbit/s überträgt und keine Überlastung aufweist und moderne Hypervisoren zudem häufig Flashspeicher verwenden. Testen Sie Ihre Komprimierung über die echten Netzwerke, die Sie zu verwenden beabsichtigen. Sie können auch die Netzwerkbandbreite auf Hyper-V-VMs zu Testzwecken reduzieren, indem Sie z. B. Set-VMNetworkAdapter verwenden, und dabei -MaximumBandwidth auf 1Gb festlegen.

Um zu sehen, wie gut die Komprimierung funktioniert, können Sie dieselbe Datei zweimal mit „robocopy“ auf einen Server kopieren, einmal mit dem Flag /compress und einmal ohne Komprimierung, wobei Sie die Serverdatei zwischen den Tests löschen. Wenn die Datei komprimiert wird, sollten im Task-Manager eine geringere Netzwerkauslastung und eine niedrigere Kopierzeit angezeigt werden. Sie können auch die Leistungsindikatoren „Komprimierte Anforderungen/Sek.“ und „Komprimierte Antworten/Sek.“ des Leistungsmonitor-Objekts „SMB-Serverfreigaben“ des SMB-Servers beobachten.

RDMA und SMB Direct

Die SMB-Komprimierung unterstützt SMB Direct und RDMA nicht. Dies bedeutet, dass die Komprimierung mit SMB Direct und RDMA auch dann nicht versucht wird, wenn der Client die Komprimierung anfordert und der Server sie unterstützt. Die Unterstützung für die SMB-Komprimierung mit SMB Direct und RDMA wird nach der öffentlichen Vorschauversion Windows Server 2022 und Windows 11 verfügbar gemacht.