Med SMB-protokollversionen som introduceras i Windows Server 2022 och Windows 11 kan du använda inline SMB-komprimering funktion när du kopierar, flyttar eller öppnar filer över ett nätverk. Detta gör det möjligt att göra filöverföringar snabbare, minska bandbredden och nätverksdriftslatens vid överföring av stora filer över ett nätverk (som VM-diskfiler, ISO-bilder, etc.). I den här artikeln visar vi hur du aktiverar och konfigurerar SMB-komprimering för delade mappar i Windows.
Tack vare användningen av SMB-komprimering (blanda det inte med NTFS-komprimering) behöver du inte längre använda verktyg från tredje part för att förkomprimera filer innan du överför dem över ett långsamt (eller mätt) nätverk. Standardkomprimeringsalgoritmen är XPRESS (LZ77). Du kan också aktivera XPRESS Huffman (LZ77+Huffman), LZNT1 eller PATTERN_V1* komprimeringsalgoritmer i Windows.
Du kan aktivera SMB-komprimering både på klientsidan och på SMB-serversidan.
I Windows Server 2022 kan du aktivera SMB-komprimering på två sätt:
- Använda Windows Admin Center (WAC): Filer och fildelning -> Fildelningar -> välj en nätverksdelad mapp och kontrollera Komprimera data alternativ i dess inställningar;
- Använda PowerShell: när du skapar en ny delad mapp (New-SmbShare -Name “Public” -Path “E:\Public” -CompressData $true) eller för en befintlig resurs (Set-SmbShare -Name “Public” -CompressData $true) . Du kan lista alla kataloger som har SMB-komprimering aktiverad: Get-SmbShare -CompressData $true
SMB-komprimering kan också vara aktiverad på klientsidan. Då spelar det ingen roll om serversidan stöder SMB-komprimering.
Följande kommandon gör det möjligt att mappa en delad nätverksenhet i Windows 11 med SMB-komprimering aktiverad:
nätanvändning * \\munfs01\images /requestcompression:yes
eller:
New-SmbMapping -LocalPath “U:” -RemotePath “\\munfs01\images” -CompressNetworkTraffic $true
Låt oss försöka mäta hastigheten och tiden för VMDK (VMware virtual machine disk) filöverföring med SMB-komprimering aktiverad. Du kan skapa en delad mapp med och utan SMB-komprimeringsalternativet aktiverat, eller använda alternativet /compress för robocopy för att tvinga kopiera en fil med SMB-komprimering. Här är exempel på kommandon:
robocopy z:\ c:\VM\without_smb_compression.vmdk srv02.vmdk
robocopy z:\ c:\VM\with_smb_compression.vmdk srv02.vmdk /compress
I mitt exempel tog det 20 % mindre tid att kopiera en 3GB VMDK-fil med SMB-komprimering jämfört med att inte använda den (29 sekunder mot 37 sekunder).
I RTM-versioner av Windows 11 och Windows Server 2022 används SMB-komprimering för alla filer oavsett storlek.
För att alltid använda SMB-komprimering för filöverföringar kan du ställa in parametern EnableCompressedTraffic = 1 under registernyckeln HKLM\System\CurrentControlSet\Services\LanManWorkstation\Parameters. Du kan ställa in denna registerparameter med PowerShell:
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name EnableCompressedTraffic -Value 1
Om du vill att SMB-komprimering endast ska tillämpas på stora filer (över 100 MB), ställ in följande attribut i samma registernyckel:
- CompressibilitySamplingSize = 524288000
- Komprimerbar tröskel = 104857600
Om du ställer in CompressibleThreshold = 0 och CompressibilitySamplingSize = 4294967295, kommer SMB-komprimering att användas när du kommer åt en fil i SMB-mappen över ett nätverk.
Om du helt vill inaktivera användningen av SMB-komprimering i Windows, ställ in DisableCompression = 1:
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name DisableCompressedTraffic -Value 1
Eller använd kommandot nedan:
Set-SmbClientConfiguration -DisableCompression $true
SMB-komprimeringsfunktionen är kompatibel med SMB-kryptering och signering, SMB över QUIC, SMB-flerkanalig och Hyper-V Live Migration. SMB Direct och RDMA stöds inte ännu. Du kan använda det nya alternativet /compress i verktygen Robocopy och Xcopy för att tvinga användning av SMB-komprimering när du kopierar filer över nätverket.