====== KVM & LibVirt - External snapshots on live systems ======
This is something you'd do if you were planning on yum updating a system or upgrading software across major versions. In VMware it's referred to as simply "taking" and "deleting" snapshots. It's quite a bit more complicated and somewhat more limited in its capabilities when using KVM. Here is my howto though, and it seems to work.
==== Take your snapshot ====
[jrdalrymple@kvm ~]$ sudo virsh snapshot-create-as kvmdomain snap1 "Yum Upgrade" --disk-only --atomic
Domain snapshot snap1 created
[jrdalrymple@kvm ~]$ sudo virsh snapshot-list kvmdomain
Name Creation Time State
------------------------------------------------------------
snap1 2015-04-22 16:16:39 -0500 disk-snapshot
[jrdalrymple@kvm ~]$ sudo virsh snapshot-info kvmdomain snap1
Name: snap1
Domain: kvmdomain
Current: yes
State: disk-snapshot
Location: external
Parent: -
Children: 0
Descendants: 0
Metadata: yes
==== Make your massive changes that are likely to break the system ====
==== If things go right and you want to commit the change blocks to the image: ====
- **Commit the change** [jrdalrymple@kvm ~]$ sudo virsh blockpull kvmdomain vda --wait --verbose
- **Delete the old base image file** [jrdalrymple@kvm ~]$ sudo rm /var/lib/libvirt/images/NFS/kvmdomain.img
- **Delete the snapshot metadata** [jrdalrymple@kvm ~]$ sudo virsh snapshot-delete kvmdomain snap1 --metadata
==== Move the new base to the original base (optional): ====
- **Create XML file** [jrdalrymple@kvm ~]$ sudo virsh dumpxml kvmdomain /var/tmp/kvmdomain.xml
- **VERIFY** [jrdalrymple@kvm ~]$ cat /var/tmp/kvmdomain.xml
- **Undefine** [jrdalrymple@kvm ~]$ sudo virsh undefine kvmdomain
- **Migrate** [jrdalrymple@kvm ~]$ sudo virsh blockcopy kvmdomain /var/lib/libvirt/images/NFS/kvmdomain.snap1 /var/lib/libvirt/images/NFS/kvmdomain.img --wait --verbose --pivot
- **Redefine** [jrdalrymple@kvm ~]$ sudo virsh define /var/tmp/kvmdomain.xml
- **Delete old file** [jrdalrymple@kvm ~]$ sudo rm /var/lib/libvirt/images/NFS/kvmdomain.snap1