Condividi tramite


SMB compression

La compressione SMB consente a un amministratore, a un utente o a un'applicazione di richiedere la compressione dei file durante il trasferimento in rete. In questo modo, viene rimossa la necessità di deflazionare manualmente un file con un'applicazione, copiarlo e quindi gonfiarlo nel computer di destinazione. I file compressi consumano meno larghezza di banda di rete e richiedono meno tempo per il trasferimento, a costo di un utilizzo leggermente maggiore della CPU durante i trasferimenti. La compressione SMB è più efficace nelle reti con una larghezza di banda inferiore, ad esempio la rete Ethernet da 1 Gbps o Wi-Fi di un client; un trasferimento di file su una rete Ethernet di 100 Gbps non congestionata tra due server con archiviazione flash può essere altrettanto veloce senza compressione SMB in pratica, ma creerà comunque meno congestione per altre applicazioni.

La compressione SMB in Windows presenta le caratteristiche seguenti:

  • Supporta algoritmi di compressione XPRESS (LZ77), Huffman XPRESS (LZ77+Huffman), LZNT1 o PATTERN_V1*. XPRESS viene usato automaticamente
  • Supporta l'algoritmo di compressione LZ4 in Windows Server 2025
  • Supporta la firma SMB e la crittografia SMB
  • Supporta SMB su QUIC
  • Supporta il multicanale SMB
  • Non supporta SMB diretto su RDMA

Note

Windows 11 and Windows Server 2025 also support compression algorithm LZ4 as defined by LZ4.org. For further information about this compression algorithm, see LZ4 Compression Documentation.

Per una dimostrazione della compressione SMB, guardare questo video:

Requirements

Per usare la compressione SMB in un carico di lavoro tradizionale del file server client, è necessario quanto segue:

Configurazione compressione SMB

È possibile configurare la compressione SMB sia dal punto di vista client che dal punto di vista del server. Client e server non fanno riferimento a una particolare edizione come Windows Server 2022 o Windows 11 versione 24H2, ma all'architettura di un trasferimento di file tra due computer. Sia Windows Server 2022 che Windows 11 supportano l'uso di client o server di compressione SMB.

Richiesta di compressione SMB nelle condivisioni file

È possibile configurare le condivisioni per richiedere sempre la compressione quando si è connessi ai client. È possibile usare Windows Admin Center o PowerShell.

Uso di Windows Admin Center

  1. Installare Windows Admin Center e connettersi a un file server Windows Server 2022.
  2. Fare clic sulla voce di menu File e condivisione file.
  3. Click on File shares.
  4. Modificare una condivisione esistente o crearne una nuova.
  5. Select Compress data and then click Add or Edit.

Screenshot di Windows Admin Center nel file server di Windows Server 2022.

Using PowerShell

  1. Aprire una sessione del prompt dei comandi PowerShell con privilegi elevati come amministratore.

  2. Creare una nuova condivisione con la compressione usando New-SMBShare con il parametro e l'argomento -CompressData $true. For example:

    New-SmbShare -Name "Sales" -Path "C:\sales" -CompressData $true
    
  3. Modificare una condivisione esistente con la compressione usando Set-SMBShare con il parametro e l'argomento -CompressData $true. For example:

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

Richiesta di compressione SMB in unità mappate

È possibile richiedere che tutti i dati copiati su un'unità mappata vengano compressi. Questa operazione può essere eseguita come parte di uno script di accesso o quando viene eseguita manualmente.

  1. Apri una finestra del prompt dei comandi di PowerShell.

  2. Eseguire il mapping di un'unità usando New-SMBMapping con il parametro e l'argomento -CompressNetworkTraffic $true. For example:

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

Richiesta di compressione SMB con strumenti di copia

È possibile richiedere che venga tentata la compressione SMB per file specifici usando robocopy o xcopy.

Note

Se si desidera File Explorer, strumenti di copia di terze parti o applicazioni per usare la compressione, eseguire il mapping delle unità con compressione, abilitare la compressione nelle condivisioni o impostare client SMB su sempre comprimere.

  1. Apri un prompt CMD o un prompt dei comandi PowerShell.

  2. Copiare con il flag /COMPRESS. For example:

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

Richiedere sempre o rifiutare sempre le richieste di compressione

Starting in Windows Server 2022 with update KB5016693 (OS Build 20348.946) and Windows 11 with update KB5016691 (OS Build 22000.918) you can configure an SMB client or SMB server to always request compression and to always reject requests for compression. È ora possibile usare Criteri di gruppo o PowerShell; nella versione iniziale di Windows 11 e Windows Server 2022, è possibile usare solo le impostazioni del registro per controllare la maggior parte di questi comportamenti e non è stato possibile configurare un server SMB per richiedere sempre la compressione nonostante le impostazioni di condivisione. Un client SMB e un server SMB fanno riferimento ai servizi SMB, non a un'edizione o a uno SKU di Windows. Tutte queste modifiche SMB diventano effettive immediatamente, senza un riavvio.

Compressione sempre tentata (client SMB)

  1. Eseguire la Console di gestione criteri di gruppo per il dominio di Active Directory e creare o passare a criteri di gruppo.
  2. Espandere i criteri Configurazione computer\Criteri\Modelli amministrativi\Rete\Workstation Lanman.
  3. Abilitare il criterio Usa compressione SMB per impostazione predefinita.
  4. Chiudere editor criteri.

Non comprimere mai (client SMB)

  1. Eseguire la Console di gestione criteri di gruppo per il dominio di Active Directory e creare o passare a criteri di gruppo.
  2. Espandere i criteri Configurazione computer\Criteri\Modelli amministrativi\Rete\Workstation Lanman.
  3. Abilitare criterio Disabilita compressione SMB.
  4. Chiudere editor criteri.

Compressione sempre tentata (server SMB)

  1. Eseguire la Console di gestione criteri di gruppo per il dominio di Active Directory e creare o passare a criteri di gruppo.
  2. Espandere i criteri Configurazione computer\Criteri\Modelli amministrativi\Rete\Server Lanman.
  3. Abilitare il criterio Richiedi compressione del traffico per tutte le condivisioni.
  4. Chiudere editor criteri.

Non comprimere mai (server SMB)

  1. Eseguire la Console di gestione criteri di gruppo per il dominio di Active Directory e creare o passare a criteri di gruppo.
  2. Espandere i criteri Configurazione computer\Criteri\Modelli amministrativi\Rete\Server Lanman.
  3. Abilitare criterio Disabilita compressione SMB.
  4. Chiudere editor criteri.

Informazioni e controllo dei comportamenti di compressione

Starting in Windows Server 2022 with update KB5016693 (OS Build 20348.946) and Windows 11 with update KB5016691 (OS Build 22000.918), SMB by default always attempts to compress a file when a client or server requests it, without using compression sampling.

Note

Nella versione originale di Windows Server 2022 e Windows 11, la compressione SMB ha utilizzato per impostazione predefinita un algoritmo in cui ha tentato di comprimere i primi 524.288.000 byte (500 MiB) di un file durante il trasferimento e tenere traccia che almeno 104.857.600 byte (100 MiB) compresso in tale intervallo di 500 MiB. Se sono stati compressi meno di 100 MiB, la compressione SMB ha smesso di comprimere il resto del file. Se sono stati compressi almeno 100 MiB, la compressione SMB ha tentato di comprimere il resto del file. Con questa modifica del comportamento, il campionamento è ora disabilitato per impostazione predefinita e SMB tenta sempre di comprimere l'intero file quando un client o un server lo richiede.

Test della compressione SMB

Un modo semplice per testare la configurazione della compressione consiste nell'usare i file VHDX. È possibile creare e montare un VHDX, aggiungervi alcuni file, quindi smontare VHDX e copiarlo come file. In alternativa, è sufficiente copiare un file VHDX della macchina virtuale smontata esistente, poiché gran parte del contenuto del file verrà compresso. Per un esempio di creazione di un file di test VHDX:

  1. Start Diskmgmt.msc.

  2. Selezionare Disco locale (C:) facendovi clic.

  3. Click Action then Create VHD.

  4. In Diskmgmt, right-click your VHDX now shown as "Not initialized" and click Initialize disk and click OK. Right-click on the disks Unallocated section and click New Simple Volume, then Next for all menu prompts, then click Finish.

  5. Specify a file path, set the size to "25 GB", select VHDX and Fixed size, then click OK.

    Screenshot della creazione e del collegamento di un disco rigido virtuale per Windows Hyper-V.

  6. Right-click on the disk and click Detach VHD, then click OK.

  7. In File Explorer, fare doppio clic sul file VHDX per montarlo. Copy a few MB of uncompressible files, such as JPG format, then right-click the mounted disk and click Eject.

È ora disponibile un file di test di grandi dimensioni con contenuto compresso.

Il test della compressione SMB tra una coppia di macchine virtuali in esecuzione nello stesso host Hyper-V potrebbe non mostrare risparmi di tempo perché il commutatore virtuale è di 10 Gbps e non presenta congestioni, più gli hypervisor moderni spesso usano l'archiviazione flash. Testare la compressione sulle reti reali che si prevede di usare. You can also reduce the network bandwidth on Hyper-V VMs for testing purposes using Set-VMNetworkAdapter with -MaximumBandwidth set to 1Gb, for example.

Per vedere come funziona bene la compressione, è possibile eseguire il robocopy dello stesso file in un server due volte, una volta con il flag /compress e di nuovo senza compressione, eliminando il file del server tra ogni test. Se il file è compresso, si noterà un utilizzo inferiore della rete in Gestione attività e un tempo di copia inferiore. È anche possibile osservare l'oggetto Monitor prestazioni del server SMB "Condivisioni server SMB" per i contatori "Richieste compresse/sec" e "Risposte compresse/sec".

RDMA e SMB diretto

La compressione SMB non supporta SMB diretto e RDMA. Ciò significa che anche se il client richiede la compressione e il server lo supporta, la compressione non verrà tentata con SMB diretto e RDMA. Il supporto per la compressione SMB con SMB diretto e RDMA sarà disponibile dopo le anteprime pubbliche di Windows Server 2022 e Windows 11.