2013-11-25 39 views
0

我Xen中運行幾個虛擬機,而現在我試圖創建/恢復我的虛擬機的快照。如何使用VHD-UTIL管理快照

除Xen和blktap2外,還提供了另一個實用程序vhd-util,根據其描述,我想我可以使用它創建/還原VM快照。

創建快照實際上是容易的,我只要致電:

vhd-util snapshot -n aSnapShot.vhd -p theVMtoBackup.vhd 

但是,當涉及到恢復快照,事情就真的很煩。

的「還原」命令需要一個強制性的說法「journal」,像這樣:

vhd-util revert -n aSnapShot.vhd -j someThingCalledJournalOfWhichIHaveNoIdea 

而且vhd-util預計從日記,這意味着它不是你可以在寫日誌的一些空文件中的一些信息

但我已經通過了代碼和互聯網,仍然不知道這本雜誌是從哪裏來的。

類似的問題被問 http://xen.1045712.n5.nabble.com/snapshots-with-vhd-util-blktap2-td4639476.html但可憐的傢伙從來沒有得到回答。

希望這裏有人能幫助我。

+0

下面的答案完美地解釋了vhd快照如何工作的細節,對於那些可能仍在尋找解決方案的人來說,好吧,這就是我所做的:有**無需**就可以調用「vhd-util恢復「!只需將快照傳遞給tapdisk,tapdisk會創建一個虛擬塊設備,我們所要做的就是將虛擬塊設備傳遞給qemu而不是快照映像本身,就是這樣。如果使用tapdisk遇到任何問題,請嘗試谷歌「tap-ctl」。 – Sean

回答

1

你並不需要使用還原,所有你需要做的就是關閉虛擬機,重命名aSnapShot.vhd到theVMtoBackup.vhd並重新啓動虛擬機。

+0

感謝Thanos!我終於得到這個工作!原來這是libxl的一些bug,它不會將tapdisk塊傳遞給qemu,而是傳遞原始VHD映像。 – Sean

2

通過把覆蓋在現有的VHD映像,因此任何改變被寫入到覆蓋文件,而不是覆蓋現有數據創建VHD中的作品快照。爲了讀取最上面的數據,返回:如果該扇區/羣集已被覆蓋,則覆蓋層中的數據;如果尚未覆蓋原始VHD文件,則覆蓋原始VHD文件中的數據。

該VHD-util的命令創建這樣的疊加VHD文件,其使用現有的VHD圖像作爲其所謂的「背襯文件」。請務必記住,當使用此備份文件的快照仍存在時,絕不能更改備份文件。否則,所有這些快照中的數據也會發生變化(除非數據已被覆蓋)。

使用備份文件的過程可以重複多次,這會導致產生一連串的VHD文件。只有最上面的文件應該被寫入,所有其他文件應該被處理爲不可變的。

回覆到快照是作爲刪除當前最上面的覆蓋文件並再次創建新的空的覆蓋文件,該文件再一次從包含快照備份文件暴露數據一樣簡單。這是通過再次使用上述相同的命令完成的。這會保留您當前的快照,並允許您多次重複該過程。 (重命名文件會更喜歡「恢復到刪除一個快照」。)

警告:重新創建快照文件之前,確保沒有其他快照存在,使用這種(中間)VHD文件作爲其後備文件。否則,您不僅會放棄此快照,而且還會根據此快照製作所有其他快照。

+0

哇,謝謝你這麼詳細的解釋,省了我很多時間挖掘文檔,真的很感謝! – Sean