以前用過VMware也用過MS的VPC,VMware太大了,而MS自己的VPC性能確實不怎的,可能MS重點放在Hyper-V上了吧.前些天安裝了VirtualBox,才用了一天就發現確實很好用。特別是起特有的無縫模式窗口確實很COOL。通過使用總結了一些技巧,拿來與大家分享。
在VirtualBox里復制VDI文件
在VirtualBox的快速修復界面里,可以隨時生成當前狀態的備份。當生成了備份之后,會在Snapshots目錄下創建一個新的VDI文件,之后對當前狀態所做的一切操作都將針對最新的VDI文件,而VDI目錄下的初始VDI文件就不會再改變了。
我一般在裝好Guest OS并做完打補丁、安裝常用軟件等操作后就創建一個備份,如果Guest OS發生了問題可以隨時恢復到干凈的系統。但是有時需要在不同的軟件環境下做不同的事情,開始時我希望能用一個VDI文件生成兩個不同的備份并分別配置成不同的環境,但是發現VirtualBox的備份是線性的,也就是說只能針對當前狀態做一個備份,而恢復備份時也只能恢復到上一個備份的狀態,不能同時存在兩個不同的當前狀態。
沒有辦法,只能把初始的VDI文件復制出來一份用于另外的環境。但是很快發現,復制出來的VDI文件無法在虛擬介質管理器中注冊,因為每個VDI文件都有一個唯一的uuid,而VirtualBox不允許注冊重復的uuid。
看了幫助文件后,發現VBoxManage有一個clonevdi方法可以克隆VDI文件,并賦予它一個新的uuid。具體用法是在命令行里執行:
VBoxManage clonevdi 原始VDI文件名 新的VDI文件名
直接寫VDI文件名即可,不用指明VDI文件所在路徑,新的文件會在全局設定中指定的VDI目錄下創建。如果VDI文件名里帶有空格,應該在兩端加上雙引號。VBoxManage命令位于VirtualBox安裝目錄下,缺省路徑是C:/PRogram Files/Sun/xVM VirtualBox。
用這個方法創建了新的VDI文件后,就可以正常注冊并在另一個虛擬機中使用了。
收縮虛擬機磁盤文件大小
由于經常要測試一些軟件,我在VirtualBox虛擬機中安裝了一套Windows。使用過虛擬機的朋友都知道,為了節省硬盤空間,一般都使用動態擴展映像。它不會在一開始就占用指定大小的硬盤空間,而是隨著實際使用的需要動態擴展。但是在虛擬系統里刪除了文件,使用過的空間并不會自動收回。虛擬系統使用久了以后,磁盤映像文件會變得越來越大。
我以前使用過VMware,在VMware Tools里有一個很方便的Shrink功能可以收回未使用的硬盤空間,但是在VirtualBox里沒有看到這樣的選項。經過上網查找資料,終于找到了在VirtualBox(我用的是2.0.0版)里Shrink的方法,只需要三個步驟:
第一步:在Guest OS中整理磁盤碎片。可以使用Windows自帶的碎片整理工具,不過更推薦使用Defraggler。這是一款免費的磁盤碎片整理工具,使用簡單,整理速度很快。
第二步:將Guest OS的磁盤剩余空間清零,也就是把0值寫入磁盤未使用空間的每一個字節。這一步是關鍵,因為在下一步里,所有只包含0值的磁盤空間將被收回。可以用 Sysinternals出品的一個命令行工具SDelete來完成這一步。在Guest OS的命令行里執行:
sdelete -c c:/
其中c:/是要清零的磁盤分區,應依次對所有虛擬磁盤分區執行這一步,如d:/、e:/等等。
第三步:使用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或其它系統,可以找一找相同功能的工具軟件,原理都是一樣的。
新聞熱點
疑難解答