Riaan's SysAdmin Blog

My tips, howtos, gotchas, snippets and stuff. Use at your own risk!

KVMVirtualization

Libvirt and QCow2 Snapshots

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

admin

Bio Info for Riaan