จากการหาข้อมูลเจอวิธีทำค่อนข้างตรงกันคือให้
0.ตรวจ HDD ของเราต้องเป็นแบบ Dynamic Disk
หมายถึงเราตั้งขนาดให้ใหญ่ไว้ก่อนได้ แต่ขนาดของไฟล์ hdd .vdi จะมีขนาดเท่ากับพื้นที่จริงที่ VM ใช้งาน ใช้งานน้อยก็มีขนาดน้อย ถ้าใช้งานมากขึ้นก้มีขนาดมากขึ้นไปจนสุดที่เราตั้งค่าไว้ แต่เวลาที่เราใช้งานไปสักพักจนขนาดเริ่มเยอะขึ้น มันจะคงขนาดไว้เลยไม่มีการลดขนาดลงถึงแม้เราจะลบข้อมูลใน VM ทิ้งไปแล้วก็ตาม ดังนั้นถ้าข้อมูลใน VM มันมีไม่เยอะ แต่ขนาด HDD มันเพิ่มไปจนสูงมันจะเปลืองเนื้อที่ของ Host เราจึงต้องทำการลดขนาดมันลงมาให้เท่ากับเนื้อที่ที่ถูกใช้งานจริงๆ
1.เข้าไปใน VM
เมื่อลบข้อมูลที่ไม่ต้องการทิ้งไปเรียบร้อยแล้วจะทำให้เหลือพื้นที่ว่างแล้วจะทำการ Defragment ด้วยก็ได้
เสร็จแล้วเข้าสู่งานหลักคือ โหลดโปรแกรม SDelete v2.01 มารัน เพื่อ Clear พื้นที่ที่ไม่ได้ใช้ให้ว่าง
https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete
เปิด Command Prompt ขึ้นมาแล้ว cd เข้าไปที่ Folder SDelete แล้วสั่ง
sdelete.exe c: -z
c: คือ Drive ที่เราต้องการ Clear
คำสั่ง -z คือ Clear พื้นที่ว่าง
ถ้าเป็นโปรแกรม Version เก่าจะใช้ -c แต่ Version ใหม่เปลี่ยนเป็น -z จึงทำให้หลายคนสับสนกันเยอะ
ลองไปอ่านดูได้ที่ [3]
2.หลังจากเสร็จแล้วให้ออกมาข้างนอกที่ Host
เปิด Command Prompt ขึ้นมาแล้ว cd เข้าไปที่ Folder VirtualBox
ส่วนมากจะอยู่ที่ C:\Program Files\Oracle\VirtualBox
พิมพ์คำสั่ง
cd “C:\Program Files\Oracle\VirtualBox”
VBoxManage.exe modifymedium disk “path to hdd.vdi” –compact
ถ้า HDD ของเราไม่ได้เป็นไฟล์ .vdi มันจะทำการ compact ไม่ได้ เราต้องแปลง Format ของ hdd มาเป็น .vdi ก่อน โดยใช้คำสั่ง VBoxManage clonemedium
1.https://www.howtogeek.com/312883/how-to-shrink-a-virtualbox-virtual-machine-and-free-up-disk-space/
2.https://smallbusiness.chron.com/copying-vmdk-vdi-virtualbox-43658.html
3.https://superuser.com/questions/747820/what-is-the-different-between-sdelete-c-and-z
4.https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi
5.https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete