我正在尝试使用 KVM 进行实时快照此程序。
我肯定在某个时候搞砸了,因为我处于一种我无法理解的状态。
我的虚拟机名为prod
。它是在文件中创建的/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
显然,通过-–no-metadata
virsh snapshot-create-as
通过不创建 .xml 文件可以避免此问题,从而不会保留快照的痕迹。
答案1
正确的方法是
virsh snapshot-delete prod --metadata snap
(此命令可以在在维基百科上。我在这里提问之前尝试过,但由于打字错误而失败,打字错误现已更正。)
我不知道在 libvirtd 关闭时删除 .xml 文件不会覆盖它所做的工作。也许唯一的区别是不需要停止 libvirtd。即便如此,也许这在未来可能会发展。无论如何,建议使用 libvirt 的 API,而不是直接使用文件。
如果快照是使用该参数创建的,则确实不需要此调用--no-metadata
。
我得到了这个澄清此主题的libvirt-用户邮件列表。
任何愿意通过实时快照进行备份的人都应该阅读上述 wiki 页面,并且可能对论坛主题感兴趣,该主题回答了我的新手问题,并指出Eric Blake 的幻灯片, 也这篇博文以及以下评论。