Compressione SMB

Si applica a: Windows Server 2022, Windows 11

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

Nota

Le build Anteprima 25997 e versioni successive di Windows 11 Insider e Windows Server Insider supportano anche l'algoritmo di compressione LZ4, come definito da LZ4.org. Per altre informazioni su questo algoritmo di compressione, vedere Documentazione sulla compressione LZ4.

Per una dimostrazione della compressione SMB, guardare questo video:

Requisiti

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, ad esempio Windows Server 2022 o Windows 11 Insider Preview, 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. Fare clic su Condivisioni file.
  4. Modificare una condivisione esistente o crearne una nuova.
  5. Selezionare Comprimi dati e quindi fare clic su Aggiungi o Modifica.

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

Tramite 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. Ad esempio:

    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. Ad esempio:

    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. Ad esempio:

    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.

Nota

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. Ad esempio:

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

Richiedere sempre o rifiutare sempre le richieste di compressione

A partire da Windows Server 2022 con aggiornamento KB5016693 (build del sistema operativo 20348.946) e Windows 11 con aggiornamento KB5016691 (Build del sistema operativo 22000.918) è possibile configurare un client SMB o un server SMB per richiedere sempre la compressione e rifiutare sempre le richieste di compressione. È 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

A partire da Windows Server 2022 con aggiornamento KB5016693 (build del sistema operativo 20348.946) e Windows 11 con aggiornamento KB5016691 (build del sistema operativo 22000.918), SMB per impostazione predefinita tenta sempre di comprimere un file quando un client o un server lo richiede, senza usare il campionamento della compressione.

Nota

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. Avviare Diskmgmt.msc.

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

  3. Fare clic su Azione, quindi su Crea VHD.

  4. In Diskmgmt, fare clic con il pulsante destro del mouse su VHDX ora visualizzato come "Non inizializzato" e fare clic su Inizializza disco, quindi su OK. Fare clic con il pulsante destro del mouse sulla sezione Dischi non allocati e fare clic su Nuovo volume semplice, quindi su Avanti per tutte le richieste di menu, quindi fare clic su Termina.

  5. Specificare un percorso di file, impostare le dimensioni su "25 GB", selezionare VHDX e Dimensioni fisse, quindi fare clic su OK.

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

  6. Fare clic con il pulsante destro del mouse sul disco e su Scollega VHD, quindi su OK.

  7. In File Explorer, fare doppio clic sul file VHDX per montarlo. Copiare alcuni MB di file non comprimibili, ad esempio il formato JPG, quindi fare clic con il pulsante destro del mouse sul disco montato e fare clic su Rimuovi.

È 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. È anche possibile ridurre la larghezza di banda di rete nelle VM Hyper-V a scopo di test usando, ad esempio Set-VMNetworkAdapter con -MaximumBandwidth impostato su 1Gb.

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.