因為儲存空間問題,虛擬機硬碟設定為Thin的模式,當資料突然增長後又刪除,此時無法將空間釋放給其他主機使用。
查了一下文章分成兩步驟:
1. 縮小 Guest OS 的硬碟空間
2. 縮小 Host OS 的硬碟空間
Guest OS的處理步驟:
引用文章:
http://lang.idv.tw/doku.php/os/vmware/vmware_%E5%B0%87vmdk%E6%AA%94%E6%A1%88%E7%B8%AE%E5%B0%8F
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 這行指令也可以
VMware ESXi HostOS的處理步驟:
最後將該VM關機,利用ssh連入ESXi主機,輸入vmkfstools -K /path/to/disk-name.vmdk