近期,我恰巧在工作中遇到一臺已經崩潰并且無法啟動的VirtualBox VM。當類似的事情發生時,有一些VirtualBox災難恢復辦法供您選擇。
Oracle VM VirtualBox 作為宿主機平臺可支持服務器虛擬化或桌面虛擬化。我過去曾使用VirtualBox作為虛擬桌面平臺,不幸的是數據存放在系統的虛擬機內而不是外部。如果您用VirtualBox進行桌面虛擬化,需要了解這些挽救數據的VM恢復的方法。
VM恢復方法
當把關鍵數據放到虛擬機的VHD(virtual hard disk)上時,簡直無法想象宕機后需要重復多少工作才能重建數據。最佳的辦法是恢復VHD,取出數據及時制止損失。
這種情況下有兩種基本的VirtualBox VM恢復方法:
1.借助某些恢復介質啟動VM,訪問VHD并把所需數據拷貝到其它VHD或通過網絡傳輸到共享端。
2.把VHD作為第二硬盤掛載到其它VM,啟動并從中恢復數據。
第一種方式更安全,因為VHD和VM的改變都是最少的。第二種也可行,但我更喜歡第一種,原因是它能降低錯誤率。
問題總發生在細節上。當我啟動VirtualBox VM恢復工作時,意識到很多細節跟最初設想不同。下面是一些您在使用這些災難恢復方法時可能遇到的挑戰。
VHD的位置
首先,您要掌握待處理磁盤鏡像的類型和在哪臺VM上。Oracle VM VirtualBox可以創建多種VHD鏡像,它們之間的差別會對VM恢復造成影響。
多數情況VHD是“Normal”狀態,即每次只有一臺虛擬機可以訪問目標磁盤,而鏡像原地址通常在某臺虛擬機上。如果磁盤狀態為“shareable”,可以多臺機器同時使用,那么損壞可能是由相連的任意一臺VM導致,故障診斷更為困難(“write-through”磁盤和“Normal”相似,唯一差別在不支持快照上)。
在這些情況下,首先要關閉(不僅是掛起!)所有跟損壞磁盤相關的VM。然后,最好是內存最大的那臺VirtualBox VM啟動恢復。
多臺VM可以同時共享“multi-attach”磁盤,但是每臺VM另有自己的差分鏡像部分。這種方式在需要多臺VM之間共享某個磁盤主鏡像時非常有用。但也同時意味著VirtualBox災難恢復必須在使用了問題數據的VM上執行,否則VirtualBox VM是看不到數據的。如果您不確定是哪臺VM,則需要在每臺機器上進行檢查。
關于恢復環境的一點注釋:如果可能,最好在宿主機OS上掛載問題VHD默認為為只讀狀態(不幸的是Windows對此支持并不好)。
一旦確認了需要恢復的VM和VHD對象,下一步就是準備數據恢復目標地。
網絡 vs.本地磁盤
顯然,創建一個全新的空白VHD,把它掛載給VM,通過某種恢復介質啟動并把所有數據拷貝出來是可行的。這種VirtualBox VM恢復方法簡單:所有需要做的就是掛載和格式化新介質。但同時也帶來額外的步驟:如果您需要的數據存在于宿主機而不是VHD上,那么之后還需要再拷貝出來。
您可以借助連接到共享網絡節省這一步,和宿主機建立共享區域,并把數據從共享區拷貝出來。不過這種方式也有一些注意點。
首先,如果您使用的VirtualBox VM配置不能訪問網絡,或本地網絡不能跟宿主機通訊,您需要更改配置。這僅需要更改VM而不是OS的硬件配置,因為我們在恢復過程中不會真的去啟動OS。
第二步,您需要確定恢復系統是否有網絡連接。舉個例子,如果虛擬機的適配器在不安裝額外驅動的情況下無法識別的話,您可能需要改變網絡適配器類型。
最后但不是最重要的一點,網絡的拷貝速度根據目標的不同可能會成為問題。如果你使用的網絡連接是跟宿主機之間的專線,那么拷貝的數據量不是問題。但如果連接到高延遲和帶寬緊張的實際網絡時,數據拷貝會慢得多。(把大量數據拷貝到本地連接的VHD會變慢,尤其是當源和目標磁盤鏡像在同一個網絡系統中時。這是需要關注的另外一點。)
完全跳過VirtualBox VM
另外還有種方式就是完全跳過VirtualBox,直接把硬盤掛載到宿主機OS,并把所有文件拷貝出來。具體的方法據宿主機不同OS而異。例如在Linux中就有自帶的名為libguestfs的工具。
對于Windows,已經開始一個名為WinMount的計劃。VDI格式的文件可以通過Explorer加載為另外一個驅動器盤符。通過7-Zip等歸檔工具,.VHD格式的文件可以為非壓縮格式。該工具是免費和開源的。我試用這些工具的感覺不錯。
這種VirtualBox VM恢復方法完全去掉了中間媒介的影響,可以自行處理文件。但是也有一些注意點:
• 有助于VM完全關機。如果虛擬機宕機時磁盤位于不一致狀態,而您希望在同樣的OS下啟動該虛擬機的另一個實例(或許通過.ISO鏡像),先執行磁盤檢查和完全關機,然后嘗試離線恢復。
• 這些工具都是第三方的,所以在功能一致性上沒有保障。它們在多數情況下可以工作,但是使用VirtualBox的優點之一就是它的虛擬機數據恢復(尤其是.VDI文件格式)更有保證,磁盤可以保證正確加載和成功讀取。
完成VirtualBox VM的恢復不是某人的樂趣,而在VirtualBox運行良好沒有任何意外時,這也不是您的必備方法。但在虛擬機宕機之間,請先熟悉一下這些災難恢復方法。