ด้วยโปรโตคอล SMB เวอร์ชันที่นำเสนอใน Windows Server 2022 และ Windows 11 คุณสามารถใช้ฟีเจอร์ SMB compression แบบอินไลน์เมื่อคัดลอก ย้าย หรือเปิดไฟล์ผ่านเครือข่าย ซึ่งช่วยให้การถ่ายโอนไฟล์เร็วขึ้น ลดแบนด์วิธและเวลาเลตтенซีของการดำเนินการเครือข่ายเมื่อถ่ายโอนไฟล์ขนาดใหญ่ผ่านเครือข่าย (เช่น ไฟล์ดิสก์ VM, อิมเมจ ISO ฯลฯ) ในบทความนี้ เราจะแสดงวิธีเปิดใช้งานและกำหนดค่า SMB compression สำหรับโฟลเดอร์ที่แชร์ใน Windows
ขอบคุณการใช้ SMB compression (อย่าสับสนกับ NTFS compression) คุณไม่จำเป็นต้องใช้เครื่องมือภายนอกเพื่อบีบอัดไฟล์ล่วงหน้าก่อนถ่ายโอนผ่านเครือข่ายช้า (หรือมีมิเตอร์) อัลกอริทึมการบีบอัดเริ่มต้นคือ XPRESS (LZ77) คุณยังสามารถเปิดใช้งานอัลกอริทึมการบีบอัด XPRESS Huffman (LZ77+Huffman), LZNT1 หรือ PATTERN_V1* ใน Windows
คุณสามารถเปิดใช้งาน SMB compression ได้ทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ SMB
ใน Windows Server 2022 คุณสามารถเปิดใช้งาน SMB compression สองวิธี:
- ใช้ 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 compression:Get-SmbShare -CompressData $true
SMB compression อาจถูกเปิดใช้งานฝั่งไคลเอ็นต์ด้วย แล้วไม่สำคัญว่าเซิร์ฟเวอร์รองรับ SMB compression หรือไม่
คำสั่งต่อไปนี้อนุญาตให้แมปไดรฟ์เครือข่ายที่แชร์ใน Windows 11 พร้อม SMB compression เปิดใช้งาน:
net use * \\munfs01\images /requestcompression:yes
หรือ:
New-SmbMapping -LocalPath "U:" -RemotePath "\\munfs01\images" -CompressNetworkTraffic $true
มาลองวัดความเร็วและเวลาการถ่ายโอนไฟล์ VMDK (ดิสก์เครื่องเสมือน VMware) ด้วย SMB compression เปิดใช้งาน คุณสามารถสร้างโฟลเดอร์ที่แชร์พร้อมและไม่มีตัวเลือก SMB compression หรือใช้ตัวเลือก /compress ของ robocopy เพื่อบังคับคัดลอกไฟล์โดยใช้ SMB compression นี่คือตัวอย่างคำสั่ง:
robocopy z:\ c:\VM\without_smb_compression.vmdk srv02.vmdk
robocopy z:\ c:\VM\with_smb_compression.vmdk srv02.vmdk /compress
ในตัวอย่างของผม ใช้เวลาน้อยลง 20% ในการคัดลอกไฟล์ VMDK ขนาด 3GB ด้วย SMB compression เทียบกับไม่ใช้ (29 วินาที vs 37 วินาที)
ในรุ่น RTM ของ Windows 11 และ Windows Server 2022 SMB compression ถูกใช้สำหรับไฟล์ทุกไฟล์ไม่ว่าขนาด
เพื่อใช้ SMB compression สำหรับการถ่ายโอนไฟล์เสมอ คุณสามารถตั้งค่าพารามิเตอร์ EnableCompressedTraffic = 1 ภายใต้คีย์รีจิสทรี HKLM\System\CurrentControlSet\Services\LanManWorkstation\Parameters คุณสามารถตั้งค่าพารามิเตอร์รีจิสทรีนี้โดยใช้ PowerShell:
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name EnableCompressedTraffic -Value 1
หากคุณต้องการให้ SMB compression ใช้กับไฟล์ขนาดใหญ่เท่านั้น (มากกว่า 100 MB) ให้ตั้งค่าแอตทริบิวต์ต่อไปนี้ในคีย์รีจิสทรีเดียวกัน:
- CompressibilitySamplingSize = 524288000
- CompressibleThreshold = 104857600
หากคุณตั้งค่า CompressibleThreshold = 0 และ CompressibilitySamplingSize = 4294967295 แล้ว SMB compression จะถูกใช้เมื่อคุณเข้าถึงไฟล์ใดๆ ในโฟลเดอร์ SMB ผ่านเครือข่าย
หากคุณต้องการปิดใช้งานการใช้ SMB compression บน Windows ทั้งหมด ให้ตั้งค่า DisableCompression = 1:
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\LanManWorkstation\Parameters\ -Name DisableCompressedTraffic -Value 1
หรือใช้คำสั่งด้านล่าง:
Set-SmbClientConfiguration -DisableCompression $true
ฟีเจอร์ SMB Compression รองรับการเข้ารหัสและการเซ็น SMB, SMB over QUIC, SMB multichannel และ Hyper-V Live Migration SMB Direct และ RDMA ยังไม่รองรับ คุณสามารถใช้ตัวเลือก /compress ใหม่ในเครื่องมือ Robocopy และ Xcopy เพื่อบังคับใช้ SMB compression เมื่อคัดลอกไฟล์ผ่านเครือข่าย