Skip to main content
Logo

Libvirt and QCow2 Snapshots

February 3, 2015
1 min read

This article is for one specific use case I had. There is a lot more written around snapshots, qemu and libvirt. For my use case a qcow2 formatted image and KVM virtual machine. I wanted a way to capture machine state before an OS upgrade. So that I can roll back or revert in case something goes wrong. So for my case I do not care about live snapshots. I can shut the machine down before taking a consistent snapshot of the image.

Specifically I am using what is called an internal qcow2 snapshot.

https://libvirt.org/formatsnapshot.html

# virsh snapshot-create-as debian1 pre-update
Domain snapshot pre-update created
# virsh snapshot-list debian1
Name Creation Time State
------------------------------------------------------------
pre-update 2015-02-04 09:22:18 -0600 shutoff
# virsh snapshot-current debian1
<domainsnapshot>
<name>pre-update</name>
<state>shutoff</state>
<creationTime>1423063338</creationTime>
<memory snapshot='no'/>
<disks>
<disk name='vda' snapshot='internal'/>
<disk name='hda' snapshot='no'/>
</disks>
[..]

Start VM and make some changes…and…Shutdown

# virsh snapshot-revert debian1 pre-update

Now start VM and changes should be gone.

** Note when I created the snapshots using virsh they did not show up in virt-manager. Probably needs a refresh in virt-manager. Appears like a bug. When I create a new snapshot in virt-manager I can see both(virsh created and virt-manager created). Or cwhen I ompletely quit virt-manager and re-open I see all.

Deletion of an old snapshot:

# virsh snapshot-delete debian1 pre-update
Domain snapshot pre-update deleted