使用者工具

網站工具


os:vmware:vmware_將vmdk檔案縮小

VMware Virtual Disk Shrink 將vmdk檔案縮小

有使用VMware Workstation 或是Fusion 的使用者一定會遇到一個令人頭痛的問題,就是vmdk的檔案大小只會增加不會減少,如果用在硬碟上可能還不會太有感覺,但如果是使用速度等級+9,容量大小-10的SSD裝備,那真的就要特別的注意,以免一不小心就超崩,但如果你是屬於田橋仔,用的SSD容量都是1TB起跳的+20神裝,那這篇文章可以跳過了。

為何vmdk只會增加不會減少呢? vmdk在Virtual Machine裡面就是代表真正的硬碟,只要對硬碟稍有認識的都知道,作業系統刪除檔案的時候並沒有真正把的資料刪除,只是讓使用者看不到而已,所以救援軟體才可以把資料救回來,這也驗證了資料並沒有真正的被刪除。

由以上得知vmdk為何只會增加不會減少了,但真的沒有辦法了嗎? 耐屋口寧,今天就要是把這個小問題解決!

千萬別覺得原廠的設計很白癡,VMware是商業公司,軟體本來就是針對商業化,如果軟體設計檔案刪除就真的刪除的話,那才真的會出問題。在正式運行的環境當中,假設有檔案被誤刪,而軟體設計又直接delete的話,那不雞飛狗跳才怪,連救援的機會都沒有,保證會被罵到臭頭。

所以原廠目前的考量是給使用者自行決定,只要照著步驟應該都可以成功。分成兩個階段,為Guest OS和Host OS。

Guest OS

先從Guest OS來說好了,這裡用3種比較常見的OS來說明如何達成縮小之術。

Windows XP

  1. 到Microsoft官網下載SDelete v1.6版 http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx (sdelete.zip)
    這個軟體主要的功能是把未使用到的空間全部清除,原理應該是全部填入0,也就是剛入手磁碟機的狀態,但針對的是未使用的空間,這步驟很重要,如果沒有執行這段,後面的指令還是會無效,因為vmdk未使用的空間並未被清除,軟體會當成還有資料在裡面,就沒有辦法把未使用的空間真正清除掉。
  2. 解壓縮把 SDelete.exe 放在C:\Windows\System32底下。
  3. 按Win+R呼叫出執行的視窗,或是點開始>執行也可以,輸入cmd後按Enter鍵。
  4. 輸入指令
    sdelete -c -z c:\

    ,假設你的Guest OS的Partition不只一個,最後面的c:\改成對應的磁碟機代號即可,例如d:\、e:\。

Linux

非常簡單,只要一行指令就搞定! 熟悉Linux的一看就知道,把zero.dat這個檔案填入無限的0,直到硬碟空間滿了就會自動停止,再把zero.dat這個檔案刪除。因為內容全都是0,所以軟體判斷未使用空間的內容都是空的,自然就可以正確釋放。

sudo dd if=/dev/zero of=zero.dat ; rm -f zero.dat 一行搞定
cat /dev/zero > zero.dat; rm -f zero.dat 這行指令也可以

Mac OS X

Mac OS 也是 Unix 架構, 所以和 Linuxe 一樣也只需要幾個動作而已

sudo dd if=/dev/zero of=zero.dat ; rm -f zero.dat 一行搞定
cat /dev/zero > zero.dat; rm -f zero.dat 這行指令也可以

Host OS

再執行 Disk Utilities 的 Compact 即可

or

用 command line
第一個就是「磁碟重整」,再來才是壓縮。但是經過實驗,可以合併成一步:

vmware-vdiskmanager -r D:\my.vmdk -t 0 D:\my-vmdk-shrink.vmdk

Mac OS 在以下路徑

/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager
os/vmware/vmware_將vmdk檔案縮小.txt · 上一次變更: 2014/09/16 01:16 由 eddie