Live backups create-snapshot-as and memspec

Peter Krempa
Thu, 25 Feb 2021 14:37:24 -0000

On Wed, Feb 24, 2021 at 14:49:19 -0300, David Wells
wrote:
> Hi all!
>
> I've been using libvirt for some time and until now I have treated
backups
> of virtual computers as if they where physical computers installing the
> backup client on the guest. I am now however facing the need to backup a
> couple a couple of guest at the host level so I've been trying to catch
up
> by reading, googling and by trial and error too. Up to now I've been
able to
> backup a live machine whith a command like the following
>
> > virsh snapshot-create-as --domain test --name backup --atomic
--diskspec
> > vda,snapshot=external --disk-only
>
> This command creates a file test.backup and in the meantime I can backup
the
> original test.qcow2 but for what I saw this disk image is in a
"dirty"
> state, as if the machine I could restore from this file had been turned off
> whithout a proper shutdown.
>
> I know that I can later restore the machine to its original state by
issuing
> a command like this
>
> > virsh blockcommit --domain test vda --active --pivot
> > virsh snapshot-delete test --metadata backup
>
> I have seen that it is possible to create the snapshot using a memspec
> parameter which would make the backup of the guest as if it where in a
clean
> state, however I haven't found the equivalent of the blockcommit for
the
> memory file, in a sort of speak, to be able to restore the guest to
it's
> original state.

The memory image file doesn't depend on any other state nor does the VM
use it after the snapshot is taken, if you don't need it you can delete
it.

The disk overlay you create by  'virsh snapshot-create-as' records only
differences to the original image, but for memory state it doesn't make
much sense as the memory is small and changes a lot, so we take a
snapshot of the whole memory.

Now to restore the state of a VM to a snapshot taken with memory,
libvirt's native APIs for reverting don't work on external snapshots
yet.

You can use 'virsh restore memimg' to load VM's state as the memory
snaphsot images have the same format as images created by 'virsh save'.

Please note though that the configuration of the VM is taken from the
save image if you do so, which includes paths to disk images, which may
no longer be correct or desired, but virsh save-image-edit can be used
to modify the XML if needed.