• slider image 168
:::
條列式新聞
新聞載入中,請稍後...

3-2-4-1 虛擬機瘦身

參考來源:http://sirocawa.blogspot.tw/2012/12/vmware-virtual-disk-shrink-vmdk.html
 

  • VMware Virtual Disk Shrink 將vmdk檔案縮小
    有使用VMware Workstation 或是Fusion 的使用者一定會遇到一個令人頭痛的問題,就是vmdk的檔案大小只會增加不會減少。

     
  • 為何vmdk只會增加不會減少呢? vmdk在Virtual Machine裡面就是代表真正的硬碟,只要對硬碟稍有認識的都知道,作業系統刪除檔案的時候並沒有真正把的資料刪除,只是讓使用者看不到而已,所以救援軟體才可以把資料救回來,這也驗證了資料並沒有真正的被刪除。
     
  • 千萬別覺得原廠的設計很白痴,VMware是商業公司,軟體本來就是針對商業化,如果軟體設計檔案刪除就真的刪除的話,那才真的會出問題。在正式運行的環境當中,假設有檔案被誤刪,而軟體設計又直接delete的話,那不雞飛狗跳才怪,連救援的機會都沒有,保證會被罵到臭頭。
     
  • 所以原廠目前的考量是給使用者自行決定,只要照著步驟應該都可以成功。分成兩個階段,為Guest OS和Host OS。

 

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

     
    1. LXC 虛擬機原來的容量使用情形

       
    2. 在 LXC 虛擬機裡先下 dd if=/dev/zero of=zero.dat 指令,
      讓 zero.dat 這個檔案一直增大,直到將整個容量都填滿,再將 檔案 zero.dat 刪除。
      (zero.dat 裡面是 00000000...,在實體機中要壓縮虛擬機的檔案時壓縮檔會較小)
      dd if=/dev/zero of=zero.dat
      # rm zero.dat



       
    3. 接下來我們回到實體機上看實際的原始檔案和壓縮檔的大小。
      有經過填0值和未填0值的差異。

       

:::
展開 | 闔起

文章類別

書籍目錄

展開 | 闔起

線上使用者

25人線上 (20人在瀏覽線上書籍)

會員: 0

訪客: 25

更多…