Featured image of post 壓縮 VMware 虛擬機的 VMDK 磁碟大小

壓縮 VMware 虛擬機的 VMDK 磁碟大小

在 VM 中刪除大量檔案後,VMDK 的占用空間並不會自動縮小——VMware 看不到「哪些 sector 現在是空的」。要真正釋放空間,需要在 guest OS 內執行一套清零流程,再由 VMware Tools 壓縮磁碟。

以下步驟在 Linux guest 上執行。

Step 1:磁碟碎片整理

先整理 ext4 filesystem,讓後續的 zerofill 更有效率:

1
sudo e4defrag /

部分檔案(symlink、device file)無法碎片整理,出現相關錯誤可忽略。

Step 2:零填充空閒空間

用零覆蓋所有未使用的 sector,讓 VMware 識別出哪些空間可以回收:

1
dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile

這個指令會把磁碟寫滿(產生 wipefile),同步後再刪除,空閒空間就全部變成連續的零值 sector。

Step 3:執行壓縮

透過 VMware Tools 通知 hypervisor 壓縮磁碟:

1
sudo vmware-toolbox-cmd disk shrinkonly

完成後 VMDK 檔案大小就會縮小。


References

Licensed under CC BY-NC-SA 3.0 TW
最後更新 2026-05-07
comments powered by Disqus