Con il lancio di Windows 11 e Windows Server 2022 Microsoft aveva integrato una nuova funzionalità a livello di sistema operativo che si chiama SMB Compression.
Si tratta di un’utile caratteristica che permette di trasferire file di grandi dimensioni tra cartelle condivise in rete riducendo la banda occupata e abbattendo i tempi di copia da un sistema all’altro.
Il documento di supporto dedicato a SMB Compression sottolinea che il meccanismo è compatibile con diversi algoritmi di compressione oltre che con SMB over QUIC.
Il protocollo QUIC, ideato da Google per il Web, si è dimostrato perfettamente all’altezza per la condivisione delle risorse via SMB nell'”era cloud”: per questo è stato utilizzato in SMB Compression.
La compressione SMB è un’ottima cosa sia per gli amministratori di sistema che per gli utenti normali perché consente di ridurre drasticamente i tempi di trasferimento dei dati da un sistema all’altro e, allo stesso tempo, consente di scongiurare quelle fastidiose situazioni di congestione che spesso si presentano quando si muovono dati pesanti da una macchina all’altra (si pensi a backup voluminosi che devono fluire verso un server, ad esempio).
Differenze davvero notevoli in termini di performance si riscontrano copiando i dati attraverso connessioni WiFi oppure utilizzando collegamenti Ethernet fino a 1 Gbps (1 GbE).
Le realtà aziendali che già si servono di connessioni Multigigabit Ethernet non si accorgeranno invece dei benefici di SMB Compression.
L’attivazione del trasferimento dati veloce tra server, workstation e PC all’interno della rete locale comporta un aumento del lavoro per il processore, sia sul sistema “mittente” che su quello “destinatario” dei dati ma i vantaggi sono sicuramente molti di più.
La compressione SMB funziona infatti molto bene anche con i dati che sono già compressi: si pensi a pesanti archivi fotografici in formato JPEG o a file Zip di grandi dimensioni.
Gli aggiornamenti KB5016691 e KB5016693 abilitano davvero la compressione SMB
Nonostante la compressione SMB fosse stata introdotta già a giugno 2021, solamente ad agosto 2022 – con gli aggiornamenti KB5016691 per Windows 11 e KB5016693 per Windows Server 2022 – essa inizia a mettere davvero in evidenza i suoi benefici. L’aggiornamento KB5016691 per Windows 11 è al momento opzionale ma diverrà parte integrante dell’aggiornamento cumulativo che Microsoft distribuirà il 13 settembre 2022.
Fino all’arrivo di KB5016691 e KB5016693, la compressione SMB si comportava in modo “strano”: utilizzava un algoritmo che tentava la compressione solo sui primi 500 MB di un file. Qualsiasi contenuto inferiore a questa soglia non sarebbe mai stato compresso, anche se potesse essere utilizzato un elevato grado di compressione.
Inoltre, se l’algoritmo rilevava che i primi 500 MB di un file non potevano essere compressi di almeno 100 MB, la procedura si interrompeva prematuramente e la copia avveniva in modo tradizionale.
Tale comportamento poteva essere modificato intervenendo sulla configurazione del registro di sistema di Windows: non si trattava però esattamente di un’operazione che tutti avrebbero voluto effettuare.
La buona notizia è che con gli aggiornamenti KB5016691 e KB5016693 per Windows 11 e Windows Server 2022 Microsoft ha rimosso tutte le limitazioni. Alcuni formati come JPG, ZIP e DOCX sono già compressi ma la rimozione delle restrizioni permetterà di ottimizzare qualunque trasferimento.
D’ora in poi la compressione SMB funzionerà su qualunque file indipendentemente dalle sue dimensioni e dall’apparente idoneità alla compressione. Non importa il modo in cui viene richiesta la compressione che non sarà attivata, per esempio, usando solamente Robocopy.
Microsoft ha introdotto nuove impostazioni a livello di PowerShell, criteri di gruppo e registro di sistema che semplificano il controllo del comportamento tenuto dalla compressione SMB. Le regolazioni che gli utenti possono apportare a livello di compressione SMB sono descritte nel documento SMB compression behavior & settings changes.
Come usare SMB Compression da Esplora file e Robocopy
Sui sistemi compatibili, quindi ad oggi Windows 11 e Windows Server 2022, si poteva aprire il prompt dei comandi con i diritti di amministratore e digitare quanto segue:
Il semplice comando non faceva altro che chiedere a Windows di attivare la compressione SMB per tutti i file che successivamente si trasferiscono nella cartella condivisa \\file-server\nome-condivisione
, anche dall’interfaccia grafica di Esplora file.
Robocopy è un’utilità integrata in Windows che permette di copiare, spostare e sincronizzare efficacemente file e cartelle. Per copiare un file pesante con Robocopy usando la compressione SMB si doveva usare la seguente sintassi (notare l’aggiunta dell’opzione compress):
Nulla vietava di combinare lo switch /compress
con le altre opzioni di Robocopy oppure con il più semplice comando xcopy
.
Configurare la compressione SMB lato server e client
La compressione SMB poteva essere anche attivata lato server o comunque sul sistema di destinazione dei dati.
In questo modo non si deve richiedere espressamente l’utilizzo della compressione su ogni singolo client come visto ai punti precedenti.
Le pagine sul funzionamento della compressione SMB in Windows sono in fase di aggiornamento.
Come anticipato da Ned Pyle, tuttavia, è possibile usare i comandi PowerShell seguenti per attivare la compressione SMB, rispettivamente, lato client e lato server anche se il dispositivo dall’altro lato della comunicazione non ne richiede l’uso:
Set-SMBClientConfiguration -RequestCompression 1
Set-SmbServerConfiguration -RequestCompression 1
Per server si intende la macchina Windows che ospita le risorse condivise mentre con client ci si riferisce al sistema che chiede di accedere a tali file e cartelle.