2013-11-25 136 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