ผู้ใช้ Windows Subsystem for Linux ( WSL ) ต้องต่อสู้กับปัญหาที่มีมาอย่างยาวนานคือไฟล์ virtual hard disk ที่ขยายตัวเมื่อเวลาผ่านไป แต่ไม่เคยหดตัวลงกลับมา แม้หลังจากลบไฟล์ภายในสภาพแวดล้อม Linux แล้ว ปัญหานี้ได้จุดประกายให้เกิดการอภิปรายที่มีชีวิตชีวาในชุมชนเกี่ยวกับแนวทางที่ดีที่สุดในการเรียกคืนพื้นที่ดิสก์และว่าการใช้งานปัจจุบันของ Microsoft สามารถปรับปรุงได้หรือไม่
วิธี Manual Compaction เทียบกับ Export-Import
ชุมชนได้ระบุแนวทางหลักสองแนวทางในการแก้ไขปัญหาพื้นที่ดิสก์ของ WSL วิธีแบบดั้งเดิมเกี่ยวข้องกับการใช้ยูทิลิตี้ DiskPart ของ Windows เพื่อบีบอัด VHDX ไฟล์ด้วยตนเอง ซึ่งต้องปิด WSL instances และรันคำสั่งแบบ administrative อย่างไรก็ตาม ผู้ใช้หลายคนชอบแนวทาง export-import มากกว่า ซึ่งใช้ฟังก์ชัน export ในตัวของ WSL เพื่อสร้างไฟล์บีบอัดของ distribution แล้วนำเข้ากลับมาเป็น instance ใหม่ วิธีนี้มักจะง่ายและเชื่อถือได้มากกว่า แม้ว่าจะต้องรีเซ็ต username เริ่มต้นและการตั้งค่าอื่นๆ
เครื่องมือที่พัฒนาโดยชุมชนหลายตัวได้เกิดขึ้นเพื่อทำให้กระบวนการเหล่านี้เป็นแบบอัตโนมัติ รวมถึง wslcompact และ WSL-VHDX-Compact ซึ่งทั้งคู่มีให้บน GitHub เครื่องมือเหล่านี้จัดการรายละเอียดทางเทคนิคโดยอัตโนมัติ ทำให้การจัดการพื้นที่ดิสก์เข้าถึงได้ง่ายขึ้นสำหรับผู้ใช้ทั่วไป
เครื่องมือที่พัฒนาโดยชุมชน
- wslcompact: ใช้วิธี
wsl --export
สำหรับการบีบอัด - WSL-VHDX-Compact: สคริปต์อัตโนมัติที่ใช้ PowerShell
- npiperelay: โซลูชันพร็อกซี SSH agent สำหรับการผสานรวมกับ 1Password
- เครื่องมือทั้งสองมีให้ใช้งานบน GitHub พร้อมเวิร์กโฟลว์อัตโนมัติ
![]() |
---|
การสำรวจวิธีการต่างๆ ในการเรียกคืนพื้นที่ดิสก์ใน WSL รวมถึงวิธีการแบบแมนนวลและอัตโนมัติ |
ข้อจำกัดทางเทคนิคและแนวทางแก้ไขที่เสนอ
สาเหตุหลักของปัญหาพื้นที่ดิสก์ของ WSL อยู่ที่วิธีที่ Hyper-V จัดการ virtual disks เมื่อเปรียบเทียบกับแพลตฟอร์มเสมือนจริงอื่นๆ ไม่เหมือนกับ VirtualBox ที่รองรับการทำงาน live TRIM ที่หด disk images โดยอัตโนมัติเมื่อระบบปฏิบัติการแขกลบไฟล์ Hyper-V ขาดความสามารถนี้ ซึ่งหมายความว่าแม้เมื่อผู้ใช้ลบข้อมูลหลายกิกะไบต์ภายในสภาพแวดล้อม Linux ไฟล์ VHDX พื้นฐานยังคงรักษาขนาดที่ใหญ่กว่าไว้
สมาชิกชุมชนได้แนะนำว่า sparse files อาจให้ทางออกที่สง่างามกว่าสำหรับปัญหานี้ Sparse files บน NTFS สามารถจัดสรรพื้นที่แบบไดนามิกตามต้องการ ซึ่งอาจขจัดความจำเป็นในการบีบอัดด้วยตนเองทั้งหมด เมื่อไฟล์ถูกลบภายในสภาพแวดล้อม Linux พื้นที่ที่สอดคล้องกันใน sparse file สามารถเรียกคืนโดยอัตโนมัติผ่านการทำงาน hole punching
การเปรียบเทียบทางเทคนิค: WSL เทียบกับ Virtualization อื่นๆ
คุณสมบัติ | WSL/Hyper-V | VirtualBox | ผลกระทบ |
---|---|---|---|
การรองรับ Live TRIM | ไม่รองรับ | รองรับ | ต้องทำการบีบอัดด้วยตนเอง |
การย่อขนาดอัตโนมัติ | ไม่รองรับ | รองรับ | พื้นที่ดิสก์สะสมเพิ่มขึ้นเรื่อยๆ |
การรองรับ Sparse File | รองรับแบบจำกัด | รองรับ | การใช้พื้นที่มีประสิทธิภาพน้อยกว่า |
การจัดการ Block | การจัดสรรแบบคงที่ | แบบไดนามิก | ค่าใช้จ่ายในการบำรุงรักษาสูงกว่า |
ประสบการณ์ผู้ใช้และผลกระทบต่อ Workflow
ความท้าทายในการจัดการพื้นที่ดิสก์ได้นำผู้ใช้บางคนไปสู่การพิจารณา development workflows ของพวกเขาใหม่ทั้งหมด แม้ว่า WSL จะมีข้อได้เปรียบอย่างมากสำหรับนักพัฒนาที่ต้องการเครื่องมือ Linux บนระบบ Windows แต่ภาระในการจัดการขนาด virtual disk ได้พิสูจน์แล้วว่าน่าหงุดหงิดพอที่จะผลักดันผู้ใช้บางคนไปสู่ทางเลือกอื่น
ฉันเลิกใช้ WSL แล้ว มันทำให้ชีวิตยากเกินไป dual disk เป็นปัญหา สอง network endpoints สอง firewalls สอง hypervisors ที่แตกต่างกันที่คุณสามารถเลือกได้ ซึ่งบางสิ่งคาดหวังหนึ่ง บางสิ่งคาดหวังอีกอันหนึ่ง
คนอื่นๆ โต้แย้งว่า WSL ยังคงมีคุณค่าแม้จะมีข้อจำกัดเหล่านี้ โดยเฉพาะสำหรับผู้ใช้ที่ทำงานหลักบน Windows แต่ต้องการเข้าถึงเครื่องมือพัฒนา Linux เป็นครั้งคราว ความสะดวกในการมีทั้งสองสภาพแวดล้อมพร้อมใช้งานโดยไม่ต้อง dual-boot มักจะมีน้ำหนักมากกว่าภาระในการจัดการดิสก์
คำแนะนำจากชุมชน
สำหรับผู้ใช้ที่ยังคงใช้ WSL ต่อไป ชุมชนแนะนำให้รันคำสั่ง fstrim
ภายในสภาพแวดล้อม Linux ก่อนพยายามทำการบีบอัดใดๆ สิ่งนี้ช่วยให้มั่นใจว่าระบบไฟล์ Linux ทำเครื่องหมายพื้นที่ที่ลบแล้วอย่างเหมาะสมว่าพร้อมสำหรับการเรียกคืน นอกจากนี้ ผู้ใช้ควรทราบว่า Optimize-VHD PowerShell cmdlet สามารถทำหน้าที่เดียวกันกับการทำงาน DiskPart ด้วยตนเอง ซึ่งอาจทำให้กระบวนการง่ายขึ้น
การอภิปรายที่กำลังดำเนินอยู่เน้นย้ำทั้งจุดแข็งและข้อจำกัดของ WSL ในฐานะแพลตฟอร์มพัฒนา ในขณะที่แสดงให้เห็นความเฉลียวฉลาดของชุมชนในการพัฒนาวิธีแก้ปัญหาสำหรับตัวเลือกการใช้งานของ Microsoft
อ้างอิง: How to Free Up and Automatically Manage Disk Space for WSL on Windows 10/11