Compressione SMB

Si applica a: Windows Server 2022, Windows 11 Insider Preview

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 si elimina la necessità di sgonfiare manualmente un file con un'applicazione, copiarlo e quindi gonfiarlo nel computer di destinazione. I file compressi consumeranno meno larghezza di banda di rete e richiederanno meno tempo per il trasferimento, a costo di un leggero aumento dell'utilizzo della CPU durante i trasferimenti. La compressione SMB è più efficace nelle reti con minore larghezza di banda, ad esempio la rete ethernet da 1 Gbps di un client o Wi-Fi rete; un trasferimento di file su una rete ethernet da 100 Gbps non più comune tra due server con archiviazione flash può essere così veloce senza la compressione SMB nella pratica, ma creerà comunque una minore congestione per altre applicazioni.

La compressione SMB in Windows ha le caratteristiche seguenti

  • Supporta gli algoritmi di compressione XPRESS (LZ77), XPRESS Huffman (LZ77+Huffman), LZNT1 o PATTERN_V1*. XPRESS viene usato automaticamente
  • Supporta la firma SMB e la crittografia SMB
  • Supporta SMB su QUIC
  • Supporta SMB Multichannel
  • Non supporta SMB diretto su RDMA

Per una dimostrazione della compressione SMB, guardare questo video:

Requisiti

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

Configurazione della compressione SMB

È possibile configurare la compressione SMB sia dal punto di vista del client che del server. Client e server non fanno riferimento a una determinata 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 Insider Preview supportano la compressione SMB come client o server.

Richiesta di compressione SMB nelle condivisioni file

È possibile configurare le condivisioni per richiedere sempre la compressione quando si è connessi ai client. È possibile usare Windows'interfaccia di amministrazione o PowerShell.

Uso Windows Admin Center

  1. Installare Windows Admin Center e connettersi a un Windows Server 2022 file server.
  2. Fare clic sulla voce di menu File e condivisione file.
  3. Fare clic su Condivisione file.
  4. Modificare una condivisione esistente o crearne una nuova.
  5. Selezionare Comprimi dati e quindi fare clic su Aggiungi o Modifica

file server compressione

Utilizzo di PowerShell

  1. Aprire un prompt dei comandi di PowerShell con privilegi elevati come amministratore.

  2. Creare una nuova condivisione con compressione usando New-SMBShare con il parametro e -CompressData $true l'argomento . 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 -CompressData $true l'argomento . Ad esempio:

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

Richiesta di compressione SMB nelle unità mappate

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

Utilizzo di PowerShell

  1. Aprire un prompt dei comandi di PowerShell

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

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

Uso di NET USE

  1. Aprire un prompt cmd.

  2. Eseguire il mapping di NET USE un'unità usando con /REQUESTCOMPRESSION:YES il parametro e l'argomento . Ad esempio:

    NET USE * \\fs1.corp.contoso.com\sales /REQUESTCOMPRESSION:YES

Richiesta di compressione SMB con gli strumenti di copia

È possibile richiedere che la compressione SMB sia tentata per determinati file usando robocopy o xcopy.

Nota

Se si desidera che Esplora file, strumenti di copia di terze parti o applicazioni usino la compressione, eseguire il mapping delle unità con la compressione, abilitare la compressione nelle condivisioni o impostare i client SMB per la compressione sempre.

Uso di Robocopy.exe

  1. Aprire un prompt cmd o un prompt dei comandi di PowerShell

  2. Copiare con il flag /COMPRESS. Ad esempio:

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

Uso di Xcopy.exe

  1. Aprire un prompt cmd o un prompt dei comandi di PowerShell

  2. Copiare con il flag /COMPRESS. Ad esempio:

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

Richiedere sempre o rifiutare sempre le richieste di compressione

È possibile configurare un client SMB per richiedere sempre la compressione e rifiutare sempre le richieste di compressione. È possibile configurare un server SMB per rifiutare sempre le richieste di compressione.

Comprimi sempre

  1. Nel computer client SMB avviare Regedit.exe.

  2. Passa alla sottochiave del Registro di sistema seguente:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\parameters

  3. Creare un nuovo nome REG_DWORD valore:

    EnableCompressedTraffic

  4. Impostare su un valore di :

    1

  5. Chiudere regedit. Questa impostazione viene attivata immediatamente, non è necessario alcun riavvio.

Non comprimere mai (client SMB)

  1. Aprire un prompt dei comandi di PowerShell con privilegi elevati come amministratore.

  2. Ignorare tutte le richieste di compressione da qualsiasi unità, strumento o server mappato con:

    Set-SMbClientConfiguration -DisableCompression $true

    Questo set

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\parameters

    DisableCompression [dword] = 1

Non comprimere mai (server SMB)

  1. Nel computer server SMB avviare Regedit.exe.

  2. Passa alla sottochiave del Registro di sistema seguente:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\parameters

  3. Creare un nuovo nome REG_DWORD valore:

    DisableCompression

  4. Impostare su un valore di :

    1

  5. Chiudere regedit. Questa impostazione viene attivata immediatamente, non è necessario alcun riavvio.

Informazioni e controllo dei comportamenti di compressione

La compressione SMB in Windows Server 2022 e Windows 11 Insider Preview usa un algoritmo predefinito in cui tenta di comprimere i primi 524.288.000 byte (500MiB) di un file durante il trasferimento e tiene traccia di almeno 104.857.600 byte (100MiB) compressi entro tale intervallo di 500 MB. Se è comprimibile meno di 100 MiB, la compressione SMB smette di provare a comprimere il resto del file. Se si comprime almeno 100 MiB, la compressione SMB tenta di comprimere il resto del file. Ciò significa che è probabile che i file di dimensioni molto grandi con dati comprimibile, ad esempio un disco di macchine virtuali da più gigabyte, comprimono, ma un file relativamente piccolo, anche molto comprimibile, non verrà compresso.

Nota

Questo comportamento non rimarrà il valore predefinito in Windows Server 2022 e Windows. È stato modificato per la prima volta Windows 11 Insider Preview build 22449.

Per comprimere in modo aggressivo la compressione SMB indipendentemente dalla dimensione del file, è possibile eseguire l'override delle impostazioni predefinite:

  1. Nel computer client SMB avviare Regedit.exe.

  2. Passa alla sottochiave del Registro di sistema seguente:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\parameters

  3. Creare un nuovo nome REG_DWORD valore:

    CompressibilitySamplingSize

  4. Impostare su un valore decimale:

    4294967295

  5. Creare un nuovo nome REG_DWORD valore:

    CompressibleThreshold

  6. Impostare su un valore di :

    0

  7. Chiudere regedit. Questa impostazione viene attivata immediatamente, non è necessario alcun riavvio.

Queste impostazioni significano che la compressione SMB tenterà di comprimere i primi 4 GiB di un file e, se comprime almeno 1 byte, tenterà di comprimere il resto del file.

Test della compressione SMB

Test

Un modo semplice per testare la configurazione della compressione è usare file VHDX. È possibile creare e montare un VHDX, aggiungervi alcuni file, quindi smontare il disco rigido virtuale e copiarlo come file. In alternativa, è sufficiente copiare un file VHDX di macchina virtuale montato esistente, in quanto 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:) facendo clic su di esso.

  3. Fare clic su Azione e quindi su Crea disco rigido virtuale.

  4. In Diskmgmt fare clic con il pulsante destro del mouse sul disco rigido virtuale visualizzato come "Non inizializzato" e scegliere Inizializza disco e fare clic su OK. Fare clic con il pulsante destro del mouse sull'area del disco "non allocato" e scegliere Nuovo volume semplice.

  5. Specificare un percorso di file, impostare le dimensioni su "25 GB", selezionare VHDX e Dimensioni fisse, quindi fare clic su OK. Fare clic con il pulsante destro del mouse sulla sezione dischi "Unallocated" e scegliere Nuovo volume semplice, quindi Avanti per tutte le richieste di menu, quindi fare clic su Fine.

    gestione del disco

  6. Fare clic con il pulsante destro del mouse sul disco e scegliere Scollega disco rigido virtuale e quindi fare clic su OK.

  7. In Esplora file fare doppio clic sul file VHDX per montarlo. Copiare alcuni MB di file non comprimibile, ad esempio il formato JPG, quindi fare clic con il pulsante destro del mouse sul disco montato e scegliere Eject.

Si dispone ora di un file di test di grandi dimensioni con contenuto molto comprimibile.

Il test della compressione SMB tra una coppia di macchine virtuali in esecuzione nello stesso host Hyper-V potrebbe non mostrare un risparmio di tempo perché il commutatore virtuale è di 10 Gbps e non ha congestioni e gli hypervisor moderni usano spesso l'archiviazione flash. Testare la compressione sulle reti reali che si prevede di usare. È anche possibile ridurre la larghezza di banda di rete nelle macchine virtuali Hyper-V a scopo di test usando Set-VMNetworkAdapter con -MaximumBandwidth impostato su , ad 1Gb esempio.

Per verificare il funzionamento della compressione, è possibile eseguire il robocopy dello stesso file in un server due volte, una volta con il flag e di nuovo senza compressione, eliminando il file del server tra /compress ogni test. Se il file viene compresso, l'utilizzo della rete dovrebbe essere inferiore 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 "Ricevute compresse/sec".

RDMA e SMB diretto

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