删除“孤立”libvirt快照

我正在尝试按照此过程使用KVM进行实时快照

因为我处于一个我不明白的状态,所以我一定会搞砸的。

我的VM被称为prod 。 它是在/srv/vm/prod.qcow2文件中/srv/vm/prod.qcow2

显然,没有正在运行的快照:我正在处理基本文件。 我可以猜测,因为/ /srv/vm/prod.qcow2文件的修改date每隔一分钟左右改变一次。 另外,这个命令也证实了这一点:

 # virsh domblklist prod Target Source ------------------------------------------------ vda /srv/vm/prod.qcow2 

而且没有什么可阻止提交的:

 # virsh blockcommit prod vda --active --pivot error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file 

然而,libvirt保留了一个旧的快照的痕迹:

 # virsh snapshot-list prod Name Creation Time State ------------------------------------------------------------ snap 2015-06-09 12:11:33 +0200 disk-snapshot 

其描述符文件是/var/lib/libvirt/qemu/snapshot/prod/snap.xml

 <domainsnapshot> <name>snap</name> <state>disk-snapshot</state> <creationTime>1433844693</creationTime> <memory snapshot='no'/> <disks> <disk name='vda' snapshot='external' type='file'> <driver type='qcow2'/> <source file='/srv/vm/snap.qcow2'/> </disk> </disks> [...] 

源文件/srv/vm/snap.qcow2已被删除。

考虑到我试图实现的方法,这个快照很可能是使用以下命令创build的:

 virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic 

我无法删除它:

 # virsh snapshot-delete prod snap error: Failed to delete snapshot snap error: unsupported configuration: deletion of 1 external disk snapshots not supported yet 

所以我处于创build快照的状态,显然不再使用,不能删除。

有什么我可以做的吗?

我应该照顾还是我可以忽略它?

编辑

我只是删除了快照文件描述符。

 # systemctl stop libvirt # mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome # systemctl start libvirt 

我的虚拟机重新启动了,我看不到有关快照的任何参考。

 # virsh snapshot-list prod Name Creation Time State ------------------------------------------------------------ 

在virt-manager中也一样。

我还好吗还是还有一些家务要做?

编辑2

显然,传递-–no-metadatavirsh snapshot-create-as将通过不创build.xml文件来避免这个问题,因此不保留快照的痕迹。

正确的方法是

 virsh snapshot-delete prod --metadata snap 

(这个命令可以在维基上find,我之前尝试过,但由于错误的原因,这个错误已经被修正了)。

我不知道libvirtdclosures时删除.xml文件的function。 也许唯一的区别是不需要停止libvirtd。 即便如此,也许这可能会在未来发展。 无论如何,build议使用libvirt的API,而不是直接使用文件播放。

如果使用--no-metadata参数创build快照,则确实不需要此调用。

我在libvirt-users邮件列表的 这个线程中得到了这个解释。

任何愿意通过实​​时快照进行备份的人都应该阅读前面提到的wiki页面,并且可能对讨论我的noob问题的论坛主题感兴趣,并指向Eric Blake的幻灯片以及本博客文章和以下评论。