在 VM 中刪除大量檔案後,VMDK 的占用空間並不會自動縮小——VMware 看不到「哪些 sector 現在是空的」。要真正釋放空間,需要在 guest OS 內執行一套清零流程,再由 VMware Tools 壓縮磁碟。
以下步驟在 Linux guest 上執行。
Step 1:磁碟碎片整理
先整理 ext4 filesystem,讓後續的 zerofill 更有效率:
| |
部分檔案(symlink、device file)無法碎片整理,出現相關錯誤可忽略。
Step 2:零填充空閒空間
用零覆蓋所有未使用的 sector,讓 VMware 識別出哪些空間可以回收:
| |
這個指令會把磁碟寫滿(產生 wipefile),同步後再刪除,空閒空間就全部變成連續的零值 sector。
Step 3:執行壓縮
透過 VMware Tools 通知 hypervisor 壓縮磁碟:
| |
完成後 VMDK 檔案大小就會縮小。
References
