1. 程式人生 > >在VirtualBox中收縮虛擬磁碟映像檔案

在VirtualBox中收縮虛擬磁碟映像檔案

轉自http://blog.sina.com.cn/bobbyworm

由於經常要測試一些軟體,我在VirtualBox虛擬機器中安裝了一套Windows。使用過虛擬機器的朋友都知道,為了節省硬碟空間,一般都使用動態擴充套件映像。它不會在一開始就佔用指定大小的硬碟空間,而是隨著實際使用的需要動態擴充套件。但是在虛擬系統裡刪除了檔案,使用過的空間並不會自動收回。虛擬系統使用久了以後,磁碟映像檔案會變得越來越大。



我以前使用過VMware,在VMware Tools裡有一個很方便的Shrink功能可以收回未使用的硬碟空間,但是在VirtualBox裡沒有看到這樣的選項。經過上網查詢資料,終於找到了在VirtualBox(我用的是2.0.0版)裡Shrink的方法,只需要三個步驟:



第一步:在Guest OS中整理磁碟碎片。可以使用Windows自帶的碎片整理工具,不過更推薦使用Defraggler。這是一款免費的磁碟碎片整理工具,使用簡單,整理速度很快。

Defraggler下載地址:
http://www.defraggler.com/download

http://www.filehippo.com/download_defraggler/

第二步:將Guest OS的磁碟剩餘空間清零,也就是把0值寫入磁碟未使用空間的每一個位元組。這一步是關鍵,因為在下一步裡,所有隻包含0值的磁碟空間將被收回。可以用Sysinternals出品的一個命令列工具SDelete來完成這一步。在Guest OS的命令列裡執行:
程式碼: sdelete -c c:\

其中c:\是要清零的磁碟分割槽,應依次對所有虛擬磁碟分割槽執行這一步,如d:\、e:\等等。

SDelete下載地址:http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx



第三步:使用VirtualBox提供的VBoxManage工具收縮磁碟映像檔案。在Host OS的命令列中進入VirtualBox的安裝目錄(預設為C:\Program Files\Sun\xVM VirtualBox),執行:
程式碼: VBoxManage modifyvdi 'Windows XP.vdi' compact

其中Windows XP.vdi是要收縮的磁碟映像檔名,請根據實際名稱修改,不用指定路徑。



經過這三個步驟以後,我的vdi檔案從2.5G收縮到了1.2G,效果非常明顯。以上介紹的前兩個步驟所使用的工具是針對Windows的,如果Guest OS是Linux或其它系統,可以找一找相同功能的工具軟體,原理都是一樣的。