删除“孤立的” libvirt快照


11

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

我一定在某种程度上搞砸了,因为我处于一种我不了解的状态。

我的VM被称为prod。它是在file中创建的/srv/vm/prod.qcow2

显然,没有运行的快照:我正在处理基本文件。我可以猜测,因为文件的修改日期/srv/vm/prod.qcow2每分钟左右更改一次。此外,此命令可以确认:

# 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已删除。

考虑到我要实现的方法,很可能使用以下命令创建了此快照:

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

因此,我处于创建快照的状态,显然快照已不再使用,并且无法删除。

有什么我可以做的吗?

我应该关心还是可以忽略它?

编辑

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

# 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

显然,通过不创建.xml文件-–no-metadatavirsh snapshot-create-as避免传递快照,从而避免了此问题。


1
删除快照文件描述符后,仍然应该有一些证据表明VM映像本身中存在现有快照,可以使用进行检查qemu-img info /srv/vm/prod.qcow2。但是我不确定如何自己删除该痕迹……
sdittmar

@sdittmar,您可能需要与libvirt-users邮件列表联系(请参阅我的答案)以获取准确的答案。
耶罗姆

Answers:


16

正确的方法是

virsh snapshot-delete prod --metadata snap

(可以在Wiki上找到此命令。我在此处提出问题之前尝试了此命令,但由于输入错误已被更正,因此该命令失败了。)

我不知道在libvirtd关闭时删除.xml文件无法解决该问题。也许唯一的区别是不需要停止libvirtd。即使这样,也许将来还会发展。无论如何,建议您使用libvirt的API,而不是直接播放文件。

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

我在libvirt-users mailing-list的这个线程中获得了这个澄清。

愿意通过实​​时快照进行备份的任何人都应阅读上述Wiki页面,并且可能对回答我的菜鸟问题的论坛主题感兴趣,并指向Eric Blake的幻灯片以及此博客文章和以下评论。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.