Linux KVM Virtualization Manual Low-Level Guest Export/Import Procedure
Internal
Overview
The goal of a snapshotting operation is to preserve the state of the guest - its definition and the state of its storage - at a certain moment in time, so it can be reverted to, later, possibly after the guest was removed for a while from the virtualization host. This is one of the possible procedures to snapshot a KVM virtual machine and involves manually saving the XML definition of the guest and the state of its files systems. The guest must be down to take the snapshot. This procedure does not produce a formal snapshot, recorded by the virtualization host.
Another way to snapshot a guest is:
Take a Virtual Machine Snapshot
If the virtual machine has more than one storage device attached, they all must be snapshot at the same time to produce a consistent set of storage snapshots that can be reverted to.
Shutdown the Target Guest
virsh shutdown <vm-name>
Identify all Storage Devices
virsh dumpxml <vm-name>
Look for <disk> definitions. The disk definition specifies the source and the format of the virtual storage device. Example:
<disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/main-storage-pool/appproxy.qcow2'/> ... </disk>
Preserve the Content of all Storage Devices
The storage volumes can be snapshot in-place, but in this case the virtualization host's storage pool will continue to store the content, or they can be removed from the storage pool and archived off-line. Both procedures are available below:
- For each storage device, snapshot the underlying storage volume with qemu-img.
- [[]]
Save the XML Definition
This is only necessary if we plan to modify the hardware configuration.
Restore from Snapshot
Perform the steps described in the "Take a Virtual Machine Snapshot" section in reverse order:
Restore the XML Definition
This is only necessary if the hardware configuration changed between snapshots.
Restore the Content of Storage Device from Snapshot
qemu-img snapshot -a <snapshot-tag> <volume-name>
For more details about restoration mechanics, see
qemu-img snapshot -a