Compression SMB

La compression SMB permet à un administrateur, un utilisateur ou une application de demander la compression des fichiers lors de leur transfert sur le réseau. Cela évite d’avoir à compresser manuellement un fichier avec une application, à le copier, puis à le décompresser sur l’ordinateur de destination. Les fichiers compressés consomment moins de bande passante réseau et prennent moins de temps à transférer, au coût d’une légère augmentation de l’utilisation du CPU pendant les transferts. La compression SMB est plus efficace sur les réseaux à faible bande passante, tels que le réseau Ethernet ou Wi-Fi d'un client à 1 Gbps ; un transfert de fichiers sur un réseau Ethernet de 100 Gbps non encombré entre deux serveurs avec stockage flash peut être aussi rapide sans la compression SMB dans la pratique, mais créera toujours moins de surcharge pour d'autres applications.

La compression SMB dans Windows a les caractéristiques suivantes :

  • Prend en charge les algorithmes de compression XPRESS (LZ77), XPRESS Huffman (LZ77+Huffman), LZNT1 ou PATTERN_V1*. XPRESS est utilisé automatiquement
  • Prend en charge l’algorithme de compression LZ4 sur Windows Server 2025
  • Prend en charge la signature SMB et le chiffrement SMB
  • Prend en charge SMB sur QUIC
  • Prend en charge SMB Multichannel
  • Ne prend pas en charge SMB Direct sur RDMA

Remarque

Windows 11 et Windows Server 2025 prennent également en charge l’algorithme de compression LZ4 tel que défini par LZ4.org. Pour plus d’informations sur cet algorithme de compression, consultez la documentation sur la compression LZ4.

Pour une démonstration de la compression SMB, regardez cette vidéo :

Configuration requise

Pour utiliser la compression SMB dans une charge de travail de serveur de fichiers client traditionnelle, vous avez besoin des éléments suivants :

Configuration de la compression SMB

Vous pouvez configurer la compression SMB du côté du client et du serveur. Le client et le serveur ne font pas référence à une édition particulière comme Windows Server 2022 ou Windows 11, version 24H2, mais plutôt à l’architecture d’un transfert de fichiers entre deux ordinateurs. Windows Server 2022 et Windows 11 permettent tous deux d'être client ou serveur de compression SMB.

Demande de compression SMB sur des partages de fichiers

Vous pouvez configurer des partages pour toujours demander la compression quand des clients s’y connectent. Vous pouvez utiliser Windows Admin Center ou PowerShell.

Utilisation de Windows Admin Center

  1. Installez Windows Admin Center et connectez-vous à un serveur de fichiers Windows Server 2022.
  2. Cliquez sur l’élément de menu Fichiers et partage de fichiers.
  3. Cliquez sur Partages de fichiers.
  4. Modifiez un partage existant ou créez en un.
  5. Sélectionnez Compresser les données, puis cliquez sur Ajouter ou Modifier

Capture d’écran de Windows Admin Center dans le serveur de fichiers Windows Server 2022.

Utilisation de PowerShell

  1. Ouvrez une invite de commandes avec élévation de privilèges PowerShell en tant qu’administrateur.

  2. Créez un partage avec compression en utilisant New-SMBShare avec le paramètre et l’argument -CompressData $true. Par exemple :

    New-SmbShare -Name "Sales" -Path "C:\sales" -CompressData $true
    
  3. Modifiez un partage existant avec compression en utilisant Set-SMBShare avec le paramètre et l’argument -CompressData $true. Par exemple :

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

Demande de compression SMB sur des lecteurs mappés

Vous pouvez demander la compression de toutes les données copiées sur un lecteur mappé. Cela peut être fait dans le cadre d’un script d’ouverture de session ou pendant l’exécution manuelle.

  1. Ouvrez une invite de commandes PowerShell.

  2. Mappez un lecteur en utilisant New-SMBMapping avec le paramètre et l’argument -CompressNetworkTraffic $true. Par exemple :

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

Demande de compression SMB avec des outils de copie

Vous pouvez demander de tenter la compression SMB pour des fichiers particuliers en utilisant robocopy ou xcopy.

Notes

Pour que l’Explorateur de fichiers, les outils de copie tiers ou les applications utilisent la compression, mappez les lecteurs avec compression, activez la compression sur les partages ou définissez les clients SMB sur Toujours compresser.

  1. Ouvrez une invite CMD ou une invite de commandes. PowerShell

  2. Copiez avec l’indicateur /COMPRESS. Par exemple :

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

Toujours demander la compression ou toujours rejeter les demandes de compression

À partir de Windows Server 2022 avec la mise à jour KB5016693 (build du système d’exploitation 20348.946) et Windows 11 avec la mise à jour KB5016691 (build du système d’exploitation 22000.918), vous pouvez configurer un client SMB ou un serveur SMB pour toujours demander la compression et toujours rejeter les demandes de compression. Vous pouvez désormais utiliser la stratégie de groupe ou PowerShell ; dans la version initiale de Windows 11 et de Windows Server 2022, vous ne pouviez utiliser que les paramètres du registre pour contrôler la plupart de ces comportements et vous ne pouviez pas configurer un serveur SMB pour qu'il demande toujours la compression malgré ses paramètres de partage. Un client SMB et un serveur SMB font référence aux services SMB, et non à une édition ou SKU de Windows. Toutes ces modifications SMB prennent effet immédiatement sans redémarrage.

Toujours tenter la compression (client SMB)

  1. Exécutez la console de gestion stratégie de groupe pour votre domaine Active Directory et créez ou accédez à une stratégie de groupe.
  2. Développez la stratégie Configuration de l’ordinateur\Stratégies\Modèles d’administration\Réseau\Station de travail Lanman.
  3. Activez la stratégie Utiliser la compression SMB par défaut.
  4. Fermez l’éditeur de stratégie.

Ne jamais compresser (client SMB)

  1. Exécutez la console de gestion stratégie de groupe pour votre domaine Active Directory et créez ou accédez à une stratégie de groupe.
  2. Développez la stratégie Configuration de l’ordinateur\Stratégies\Modèles d’administration\Réseau\Station de travail Lanman.
  3. Activez la stratégie Désactiver la compression SMB.
  4. Fermez l’éditeur de stratégie.

Toujours tenter la compression (serveur SMB)

  1. Exécutez la console de gestion stratégie de groupe pour votre domaine Active Directory et créez ou accédez à une stratégie de groupe.
  2. Développez la stratégie Configuration de l’ordinateur\Stratégies\Modèles d’administration\Réseau\Serveur Lanman.
  3. Activez la stratégie Demander la compression du trafic pour tous les partages.
  4. Fermez l’éditeur de stratégie.

Ne jamais compresser (serveur SMB)

  1. Exécutez la console de gestion stratégie de groupe pour votre domaine Active Directory et créez ou accédez à une stratégie de groupe.
  2. Développez la stratégie Configuration de l’ordinateur\Stratégies\Modèles d’administration\Réseau\Serveur Lanman.
  3. Activez la stratégie Désactiver la compression SMB.
  4. Fermez l’éditeur de stratégie.

Compréhension et contrôle des comportements de compression

À compter de Windows Server 2022 avec la mise à jour KB5016693 (build du système d’exploitation 20348.946) et Windows 11 avec la mise à jour KB5016691 (build du système d’exploitation 22000.918), SMB tente toujours par défaut de compresser un fichier lorsqu’un client ou un serveur le demande, sans utiliser l’échantillonnage de compression.

Notes

Dans la version originale de Windows Server 2022 et Windows 11, la compression SMB utilisait par défaut un algorithme qui tentait de compresser les 524 288 000 premiers octets (500 Mio) d'un fichier pendant le transfert et de vérifier qu'au moins 104 857 600 octets (100 Mio) étaient compressés dans cette plage de 500 Mio. Si moins de 100 Mio étaient compressibles, la compression SMB cessait d'essayer de compresser le reste du fichier. Si au moins 100 Mio sont compressés, la compression SMB tente de compresser le reste du fichier. Avec ce changement de comportement, l’échantillonnage est désormais désactivé par défaut et SMB tente toujours de compresser l’intégralité du fichier lorsqu’un client ou un serveur le demande.

Test de la compression SMB

Un moyen simple de tester votre configuration de compression est d’utiliser des fichiers VHDX. Vous pouvez créer et monter un VHDX, y ajouter des fichiers, puis démonter le VHDX et le copier sous forme de fichier. Vous pouvez également copier un fichier VHDX de machine virtuelle démonté existant, car la plus grande partie de son contenu de fichier sera compressée. Pour obtenir un exemple de création d’un fichier de test VHDX :

  1. Démarrez Diskmgmt.msc.

  2. Sélectionnez Disque local (C :) en cliquant dessus.

  3. Cliquez sur Action, puis sur Créer un VHD.

  4. Dans Diskmgmt, cliquez avec le bouton droit sur votre VHDX affiché maintenant comme « Non initialisé », puis cliquez sur Initialiser le disque et sur OK. Cliquez avec le bouton droit sur la section Non alloué des disques et cliquez sur Nouveau volume simple, sur Suivant pour toutes les invites de menu, puis cliquez sur Terminer.

  5. Spécifiez un chemin de fichier, définissez la taille sur « 25 Go », sélectionnez VHDX et Taille fixe, puis cliquez sur OK.

    Capture d’écran de la création et de l’attachement d’un disque dur virtuel pour Windows Hyper-V.

  6. Cliquez avec le bouton droit sur le disque et cliquez sur Détacher le VHD, puis sur OK.

  7. Dans l’Explorateur de fichiers, double-cliquez sur ce fichier VHDX pour le monter. Copiez quelques Mo de fichiers non compressibles, par exemple, le format JPG, puis cliquez avec le bouton droit sur le disque monté et cliquez sur Éjecter.

Vous avez maintenant un grand fichier de test avec un contenu très compressible.

Tester la compression SMB entre deux machines virtuelles fonctionnant sur le même hôte Hyper-V ne permettra peut-être pas de gagner du temps, car le commutateur virtuel est à 10 Gbps et n'est pas encombré, et les hyperviseurs modernes utilisent souvent un système de stockage flash. Testez votre compression sur les réseaux réels que vous prévoyez d’utiliser. Vous pouvez également réduire la bande passante réseau sur les machines virtuelles Hyper-V à des fins de test en utilisant Set-VMNetworkAdapter avec -MaximumBandwidth défini sur 1Gb, par exemple.

Pour voir le fonctionnement de la compression, vous pouvez utiliser robocopy sur le même fichier d’un serveur deux fois, une fois avec l’indicateur /compress et à nouveau sans compression, en supprimant le fichier du serveur entre chaque test. Si le fichier est compressé, vous devez voir moins d’utilisation du réseau dans le Gestionnaire des tâches et une durée de copie inférieure. Vous pouvez également observer l’objet « Partages de serveur SMB » du Moniteur des performances du serveur SMB, et ses compteurs « Demandes compressées/s » et « Réponses compressées/s ».

RDMA et SMB Direct

La compression SMB ne prend pas en charge SMB Direct et RDMA. Cela signifie que même si le client demande la compression et que le serveur la prend en charge, la compression ne sera pas tentée avec SMB Direct et RDMA. La prise en charge de la compression SMB avec SMB Direct et RDMA sera disponible après les préversions publiques de Windows Server 2022 et Windows 11.