User Tools

Site Tools


wiki:public:kvmsnap

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:

  1. Commit the change
    [jrdalrymple@kvm ~]$ sudo virsh blockpull kvmdomain vda --wait --verbose
  2. Delete the old base image file
    [jrdalrymple@kvm ~]$ sudo rm /var/lib/libvirt/images/NFS/kvmdomain.img
  3. Delete the snapshot metadata
    [jrdalrymple@kvm ~]$ sudo virsh snapshot-delete kvmdomain snap1 --metadata

Move the new base to the original base (optional):

  1. Create XML file
    [jrdalrymple@kvm ~]$ sudo virsh dumpxml kvmdomain /var/tmp/kvmdomain.xml
  2. VERIFY
    [jrdalrymple@kvm ~]$ cat /var/tmp/kvmdomain.xml
  3. Undefine
    [jrdalrymple@kvm ~]$ sudo virsh undefine kvmdomain
  4. Migrate
    [jrdalrymple@kvm ~]$ sudo virsh blockcopy kvmdomain /var/lib/libvirt/images/NFS/kvmdomain.snap1 /var/lib/libvirt/images/NFS/kvmdomain.img --wait --verbose --pivot
  5. Redefine
    [jrdalrymple@kvm ~]$ sudo virsh define /var/tmp/kvmdomain.xml
  6. Delete old file
    [jrdalrymple@kvm ~]$ sudo rm /var/lib/libvirt/images/NFS/kvmdomain.snap1
wiki/public/kvmsnap.txt · Last modified: 2018/09/27 02:29 by 127.0.0.1