1. 程式人生 > >VirtualBox通過恢復備份快照VDI檔案恢復至備份狀態

VirtualBox通過恢復備份快照VDI檔案恢復至備份狀態

昨天很賤,看到伺服器的VB的快照(SnapShot)是放在C盤的,然後C盤的35G空間被這個快照用掉了14G,加上系統的18G,還剩3G的空間。關閉VB,然後移動這個快照檔案。結果整個vb都起不來了。
一開始弄7弄8沒弄好,用vxboxmanage.exe的clonehd引數也沒搞定,反正搞了1個小時沒搞定。上網搜尋了半天,都是叫你如何還原到設定快照的,並不是恢復已存在的快照vdi。
好吧,剛好有3.2.10的新版本vb下,先裝了再說,裝好了之後,先刪除原來的虛擬電腦,然後新建一個虛擬電腦,使用原有的vdi檔案。這個vdi檔案可以在虛擬介質管理器裡面註冊。這個時候,已經可以使用這個虛擬機器了,現在的問題是,這個虛擬機器的狀態是2010年6月22日的,一直到昨天,我們中途加了很多東西。我們要恢復的是2010年6月22日建立的備份+到今天的快照。這個才是真正的伺服器狀態。


恢復步驟:
先把原來備份的快照(以下簡稱快照A),註冊到對應的虛擬介質下(我是2個虛擬介質,因為後期又分了50G給虛擬機器),註冊之後的快照A在狀態提示是“無分配”。然後新建一個快照(以下簡稱快照B),這個時候,就會在虛擬介質管理下,每個映象vdi檔案 有2個快照vdi檔案,一個是快照A(狀態提示無分配),一個是快照B(狀態提示已經分配給對應的虛擬機器)。關閉VB,開啟C盤的使用者(我的系統是2008),然後找到那個".VirtualBox"資料夾,注意前面有個點。然後開啟VirtualBox.xml,把快照B的vdi檔名都替換為快照A的vdi檔名(這步可做可不做,因為註冊之後的vdi檔案,都在這個資料夾裡面,不過,我在vb群裡面交流的時候,有朋友試過要修改這個東西。。至少我沒修改就OK了。。),然後,開啟這個目錄下的Machines,裡面有個你的虛擬電腦的資料夾,點進去,開啟和你虛擬電腦名稱一致的XML檔案。也是把快照B的vdi檔名都替換為快照A的vdi檔名。
特別需要強調的是:快照的檔名必須和快照的UUID一致,我備份快照的時候,修改了檔名。所以,搞了很久都沒成功。如何知道這個快照的UUID名稱呢?你在虛擬介質管理器裡面,註冊這個快照,然後在.virtualbox資料夾裡面的virtualbox.xml檔案裡面,搜尋你的檔名,就能看到對應的uuid值。

然後,啟動vb,先去虛擬介質管理器,看看,原來備份的快照檔案的狀態是不是已經分配給對應的虛擬機器。如果是,恭喜你,OK了。就檢查下是哪裡沒弄好。
這樣做的好處是可以通過任意備份的快照檔案,恢復到當時的情況。不過,有個缺點,我這樣弄之後,在虛擬介質裡面,這個虛擬機器對應的虛擬介質對應的快照只有一個檔案了。看不到第二個檔案,但是,你仔細觀察快照的資料夾,原來備份的快照A是不會被修改的,新修改的內容都累積在快照B上。也就是存在了2個快照的vdi檔案,其中一個是不會變的,另外一個是一直在變的。