Windows Server 2022와 Windows 11에 도입된 SMB 프로토콜 버전에서는 네트워크를 통해 파일을 복사, 이동 또는 열 때 SMB 압축(SMB Compression) 기능을 인라인 방식으로 사용할 수 있습니다. 이 기능을 활용하면 대용량 파일(가상 머신 디스크 파일, ISO 이미지 등)을 네트워크로 전송할 때 전송 속도가 빨라지고, 대역폭 사용량과 네트워크 지연 시간도 줄일 수 있습니다. 이 글에서는 Windows에서 공유 폴더에 대한 SMB 압축을 활성화하고 구성하는 방법을 소개합니다.
SMB 압축이란?
SMB 압축(NTFS 압축과 혼동하지 않도록 주의)을 사용하면 느리거나 종량제 네트워크에서 파일을 전송하기 전에 서드파티 도구로 미리 압축할 필요가 없습니다. 기본 압축 알고리즘은 XPRESS(LZ77)이며, 필요에 따라 XPRESS Huffman(LZ77+Huffman), LZNT1, PATTERN_V1* 알고리즘도 사용할 수 있습니다.
SMB 압축은 클라이언트 측과 SMB 서버 측 양쪽 모두에서 활성화할 수 있다는 점이 특징입니다.
서버 측에서 SMB 압축 활성화
Windows Server 2022에서는 두 가지 방법으로 SMB 압축을 켤 수 있습니다.
- Windows Admin Center(WAC) 사용: Files and File Sharing(파일 및 파일 공유) → File Shares(파일 공유) 메뉴에서 해당 네트워크 공유 폴더를 선택한 뒤 설정에서 Compress data(데이터 압축) 옵션을 체크합니다.
- PowerShell 사용: 새 공유 폴더를 만들 때는 아래와 같이 설정합니다.
New-SmbShare -Name "Public" -Path "E:\Public" -CompressData $true
기존 공유 폴더에는 다음 명령을 사용합니다.Set-SmbShare -Name "Public" -CompressData $true
SMB 압축이 활성화된 모든 공유 폴더 목록은 아래 명령으로 확인할 수 있습니다.Get-SmbShare -CompressData $true
클라이언트 측에서 SMB 압축 활성화
SMB 압축은 클라이언트 측에서도 활성화할 수 있으며, 이 경우 서버 측에서 압축을 지원하는지 여부와 무관하게 동작합니다.
다음 명령으로 Windows 11에서 SMB 압축이 적용된 상태로 네트워크 드라이브를 매핑할 수 있습니다.
net use * \\munfs01\images /requestcompression:yes
또는 PowerShell을 사용하는 방법입니다.
New-SmbMapping -LocalPath "U:" -RemotePath "\\munfs01\images" -CompressNetworkTraffic $true
SMB 압축 성능 테스트
VMDK(VMware 가상 머신 디스크) 파일 전송 속도와 소요 시간을 직접 측정해 보겠습니다. 압축 옵션을 켠 공유 폴더와 끈 공유 폴더를 각각 만들어 비교하거나, robocopy의 /compress 옵션을 사용해 강제로 SMB 압축을 적용하며 복사할 수 있습니다.
robocopy z:\ c:\VM\without_smb_compression.vmdk srv02.vmdkrobocopy z:\ c:\VM\with_smb_compression.vmdk srv02.vmdk /compress
실제 테스트 결과, 3GB 크기의 VMDK 파일 복사 시 SMB 압축을 사용한 경우 그렇지 않은 경우보다 약 20% 빨랐습니다(37초 → 29초).
레지스트리로 SMB 압축 동작 세부 제어
RTM 버전의 Windows 11과 Windows Server 2022에서는 파일 크기와 관계없이 모든 파일에 SMB 압축이 적용됩니다.
파일 전송 시 항상 SMB 압축을 사용하려면 레지스트리 키 HKLM\System\CurrentControlSet\Services\LanManWorkstation\Parameters 아래에서 EnableCompressedTraffic = 1 값을 설정하면 됩니다. PowerShell로 설정하는 방법은 다음과 같습니다.
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name EnableCompressedTraffic -Value 1
대용량 파일(100MB 초과)에만 SMB 압축을 적용하고 싶다면 같은 레지스트리 키에서 아래 값들을 설정합니다.
CompressibilitySamplingSize = 524288000CompressibleThreshold = 104857600
CompressibleThreshold = 0, CompressibilitySamplingSize = 4294967295로 설정하면 SMB 폴더 내 어떤 파일에 네트워크로 접근하든 항상 SMB 압축이 적용됩니다.
SMB 압축 완전히 비활성화하기
Windows에서 SMB 압축 사용을 완전히 끄려면 DisableCompression = 1로 설정합니다.
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name DisableCompressedTraffic -Value 1
또는 아래 cmdlet을 사용할 수도 있습니다.
Set-SmbClientConfiguration -DisableCompression $true
호환성 및 참고 사항
SMB 압축 기능은 SMB 암호화 및 서명, SMB over QUIC, SMB 멀티채널, Hyper-V 실시간 마이그레이션과 호환됩니다. 다만 SMB Direct와 RDMA는 아직 지원되지 않습니다. 또한 Robocopy와 Xcopy 도구의 새로운 /compress 옵션을 사용하면 네트워크를 통한 파일 복사 시 SMB 압축을 강제로 적용할 수 있습니다.