-
Bug
-
Resolution: Done-Errata
-
Undefined
-
rhel-9.4
-
libvirt-10.0.0-3.el9
-
None
-
None
-
rhel-sst-virtualization-storage
-
ssg_virtualization
-
26
-
None
-
Dev ack
-
False
-
-
None
-
None
-
Pass
-
Automated
-
None
What were you trying to do that didn't work?
The libvirt team asked cockpit-machines in https://issues.redhat.com/browse/RHELBU-1675 to switch from internal to external snapshots when supported (with libvirt ≥ 9.9.0, which is in RHEL 9.4 and Fedora rawhide now; not yet in RHEL 8, 9.3, and Fedora ≤ 39). RHEL-7528 gives some motivation for external snapshots, but they still seem to be somewhat of a stepchild? virsh snapshot-create still creates internal snapshots, https://wiki.libvirt.org/Snapshots.html doesn't talk about this at all, and the only hint that I can find is https://access.redhat.com/documentation/de-de/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-troubleshooting-workaround_for_creating_external_snapshots_with_libvirt for how to create an external snapshot on the CLI.
Simon Kobyda started https://github.com/cockpit-project/cockpit-machines/pull/1280 a while ago to enable external snapshots, but it had been blocked by the availability of libvirt 9.9 in some OSes. That happened recently now, so we can go ahead with this, especially if you want this in RHEL 9.4. I took over that PR, as Simon is no longer at RH – so please assume I don't know any background which isn't written down in Jira
I noticed that creating external snapshots only works for running VMs (i.e. including a memory snapshot), not for stopped ones. This seems unintuitive to me – a disk snapshot format should be independent on that?
Please provide the package NVR for which bug is seen:
Tested on both current RHEL 9.4 nightly (libvirt-client-9.10.0-1.el9.x86_64) and Fedora Rawhide (libvirt-daemon-driver-storage-core-10.0.0-1.fc40.x86_64)
How reproducible:
Always
Steps to reproduce
Prepare a running VM:
qemu-img create -f qcow2 /var/lib/libvirt/images/test1.qcow2 10G virt-install --memory 50 --pxe --virt-type qemu --os-variant alpinelinux3.8 --wait 0 --name test1 --disk target=vda,path=/var/lib/libvirt/images/test1.qcow2
Now create a snapshot with memory:
virsh snapshot-create-as --domain test1 --name snap1 --diskspec vda,snapshot=external,file=/var/lib/libvirt/images/test1-snap1 --memspec file=/var/lib/libvirt/qemu/snapshot/test1-snap1-memory
This works fine.
Now try to create a snapshot without memory. It doesn't matter if you virsh destroy test1 first (but of course it's more realistic to do that):
virsh destroy test1
virsh snapshot-create-as --domain test1 --name snap2 --diskspec vda,snapshot=external,file=/var/lib/libvirt/images/test1-snap2
This fails with
error: unsupported configuration: disk 'vda' must use snapshot mode 'internal'
C-machines uses the API of course and creates the snapshot via XML, but it amounts to the same thing.
- links to
-
RHBA-2023:125049 libvirt bug fix and enhancement update
- mentioned on