尝试使用virsh snapshot-create-as --domain vm --name vm-snap --disk-only --diskspec "sdc,snapshot=internal,file=/var/lib/libvirt/images/vm.qcow2,,new"
获取 KVM 快照时,出现错误:
error: XML document failed to validate against schema:
Unable to validate doc against /usr/share/libvirt/schemas/domainsnapshot.rng
Extra element disks in interleave
Element domainsnapshot failed to validate content
然而,XML 可以很好地验证使用visrh edit vm.xml
,但这里有些东西没有验证。
- 操作系统:Ubuntu 20.10
- qemu: 1:5.0-5ubuntu9.1
- libvirt:6.6.0-1ubuntu3.1
仅供参考:可以通过 --print-xml 查看 XML
比较其他版本
问题是“内部”意味着使用磁盘上的相同文件,这与执行包括 VM 状态的快照是互斥的。
浏览一些旧用法,我发现以下轻微修改对我有用:
您的案例没有指定
--disk-only
这意味着您还想保存客户记忆状态。但这不能在internal
模式下完成。注意:我通常还会添加
--atomic --quiesce
如果我们比较我建议的工作命令的 XML,它不再有快照 = 内部。
因此,要解决您的问题,请切换到仅外部+磁盘模式(如上所述),或者如果您真的想保存内存状态和磁盘,但同时需要控制文件(仍然与内部模式互斥)我想想,但不确定)你可以用
--memspec
它来让它知道把这些数据放在哪里。那将是这样的:
注意:后者仍然非常少见,它还没有完全的 apparmor 支持,因此错过了及时为其添加规则。我为此提交了错误 1905674。在这种情况下,您需要为所有客人 (
/etc/apparmor.d/local/abstractions/libvirt-qemu
) 或单个客人 (/etc/apparmor.d/libvirt/libvirt-<uuid>
)添加覆盖