仅在 libvirt 中删除快照,但在 qcow2 中保留它们

仅在 libvirt 中删除快照,但在 qcow2 中保留它们

我执行了以下命令

-- 12:18:40 sudo virsh snapshot-delete Windows-10-128GB 2022-04-12-Pre-Activation
Domain snapshot 2022-04-12-Pre-Activation deleted
                                                                                                                                                                                                                                                  66ms

-- 12:28:20 sudo virsh snapshot-list Windows-10-128GB
 Name                         Creation Time               State
-------------------------------------------------------------------
 2022-04-12-Post-Activation   2022-04-12 21:54:19 +0200   shutoff
                                                                                                                                                                                                                                                  58ms


-- 12:28:24 qemu-img snapshot -l ~/kvm-images/Windows-10-128GB.qcow2
Snapshot list:
ID        TAG               VM SIZE                DATE     VM CLOCK     ICOUNT
1         2022-04-12-Pre-Activation      0 B 2022-04-12 21:19:39 00:00:00.000
2         2022-04-12-Post-Activation      0 B 2022-04-12 21:54:19 00:00:00.000

这让我相信virsh snapshot-delete只会从 libvirt 的内部数据存储中删除快照,而不会影响 qcow2 文件。

sudo virsh undefine Windows-10-128GB所以我用这种方式删除了这两种方式,并通过.从 libvirt 中删除了虚拟机。

在执行所有这些操作之前,我导出了快照和虚拟机的 xml 定义:

sudo virsh dumpxml Windows-10-128GB > 2023-09-10---Windows-10-128GB.xml
sudo virsh snapshot-dumpxml Windows-10-128GB 2022-04-12-Pre-Activation > 2023-09-10---Windows-10--128GB---2022-04-12-Pre-Activation.xml
sudo virsh snapshot-dumpxml Windows-10-128GB 2022-04-12-Post-Activation > 2023-09-10---Windows-10-128GB---2022-04-12-Post-Activation.xml

但现在当我重新发出时qemu-img snapshot -l ~/kvm-images/Windows-10-128GB.qcow2,它不再显示该文件中的快照。此外,尺寸也从

48G -rw-------  1 user user 156G Sep 10 12:52 Windows-10-128GB.qcow2
to
31G -rw-------  1 user user 156G Sep 10 12:52 Windows-10-128GB.qcow2

这似乎表明快照丢失了。

为什么virsh snapshot-delete最初不从 qcow2 文件中删除数据,并且为了将来参考,我如何从 libvirt 中删除快照但将其保留在 qcow2 文件中,以便我可以将virsh undefine虚拟机并将未使用的 qcow2 文件移动到一些冷藏库?

virsh undefine Windows-10-128GB抛出以下内容是促使我首先删除快照的原因。

error: Failed to undefine domain 'Windows-10-128GB'
error: Requested operation is not valid: cannot delete inactive domain with 2 snapshots

我应该补充一点,sourcesnapshot-dumpxml 中 qcow2 文件的路径指向一个不存在的文件,因为我曾经移动过该文件并调整了 VM 的 xml 以指向新位置。这可能是快照没有被删除的原因吗?因为在那之后,我更正了导出的 snapshot-dumpxml 以指向正确的位置,并用于sudo virsh snapshot-create --redefine Windows-10-128GB 2023-09-10---Windows-10-128GB---2022-04-12-Pre-Activation---corrected.xml将快照重新集成到 libvirt 中。也许这些更正可以virsh将其从 qcow2 文件中删除?

相关内容