首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除“孤儿”libvirt快照

删除“孤儿”libvirt快照
EN

Server Fault用户
提问于 2015-09-09 14:49:49
回答 1查看 13.1K关注 0票数 16

我正在尝试使用KVM进行实时快照,如本程序所示。

我一定是在某个时候搞砸了,因为我的状态我不明白。

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

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

代码语言:javascript
运行
复制
# virsh domblklist prod
Target     Source
------------------------------------------------
vda        /srv/vm/prod.qcow2

没有什么好封锁的:

代码语言:javascript
运行
复制
# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file

但是,libvirt跟踪一个旧快照:

代码语言:javascript
运行
复制
# 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

代码语言:javascript
运行
复制
<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被删除。

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

代码语言:javascript
运行
复制
virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic

我不能移除它:

代码语言:javascript
运行
复制
# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet

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

我能做点什么吗?

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

编辑

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

代码语言:javascript
运行
复制
# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt

我的VM又启动了,我没有看到任何对快照的引用。

代码语言:javascript
运行
复制
# virsh snapshot-list prod
 Name                 Creation Time             State
------------------------------------------------------------

我也不知道什么都不是。

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

编辑2

显然,将-–no-metadata传递给virsh snapshot-create-as将避免此问题,因为它不创建.xml文件,因此不会跟踪快照。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2015-09-15 16:12:52

正确的方法是

代码语言:javascript
运行
复制
virsh snapshot-delete prod --metadata snap

(这个命令可以找到在维基上。我在这里问它之前试过了,但是它失败了,因为它的错误已经被纠正了。

我不知道在libvirtd关闭时删除.xml文件会做什么。也许唯一的区别是不需要停止libvirtd。即便如此,这可能会在未来发生变化。无论如何,建议使用libvirt的API,而不是直接处理文件。

如果快照是用--no-metadata参数创建的,则不需要这个调用。

我在这条线 of libvirt-用户邮件列表中获得了这一澄清。

任何愿意通过实时快照进行备份的人都应该阅读前面提到的wiki页面,并且可能对回答我的noob问题的论坛帖子感兴趣,并指向埃里克·布莱克的幻灯片,以及这篇博客文章和下面的评论。

票数 26
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/721216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档