我执行了以下命令
-- 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
我应该补充一点,source
snapshot-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 文件中删除?