For those who have to manage Kernel-Based Virtual Machines it is a must to create periodic backups of VMs. The backup is usually created as a procedure part of the Update plan (schedule) of the server either after shut down the machine completely or live.
Since KVM is open source the very logical question for starters, whether KVM supports Live backups. The simple answer is Yes it does.
virsh command as most people know is the default command to manage VMs on KVM running Hypervisor servers to manage the guest domains.
KVM is flexible and could restore a VM based on its XML configuration and the VM data (either a static VM single file) or a filesystem laying on LVM filesystem etc.
To create a snapshot out of the KVM HV, list all VMs and create the backup:
# export VM-NAME=fedora;
# export SNAPSHOT-NAME=fedora-backup;
# virsh list –all
…
It is useful to check out the snapshot-create-as sub arguments
# virsh help snapshot-create-as
…OPTIONS
[–domain] <string> domain name, id or uuid
–name <string> name of snapshot
–description <string> description of snapshot
–print-xml print XML document rather than create
–no-metadata take snapshot but create no metadata
–halt halt domain after snapshot is created
–disk-only capture disk state but not vm state
–reuse-external reuse any existing external files
–quiesce quiesce guest's file systems
–atomic require atomic operation
–live take a live snapshot
–memspec <string> memory attributes: [file=]name[,snapshot=type]
[–diskspec]disk attributes: disk[,snapshot=type][,driver=type][,file=name]
# virsh shutdown $VM_NAME
# virsh snapshot-create-as –domain $VM-NAME –name "$SNAPSHOT-NAME"
1. Creating a KVM VM LIVE (running machine) backup
# virsh snapshot-create-as –domain debian
–name "debian-snapshot-2024"
–description "VM Snapshot before upgrading to latest Debian"
–live
On successful execution of KVM Virtual Machine live backup, should get something like:
Domain snapshot debian-snapshot-2024 created
2. Listing backed-up snapshot content of KVM machine
# virsh snapshot-list –domain debian
a. To get more extended info about a previous snapshot backup
# virsh snapshot-info –domain debian –snapshotname debian-snapshot-2024
b. Listing info for multiple attached storage qcow partition to a VM
# virsh domblklist linux-guest-vm1 –details
Sample Output would be like:
Type Device Target Source
——————————————————————-
file disk vda /kvm/linux-host/linux-guest-vm1_root.qcow2
file disk vdb /kvm/linux-host/linux-guest-vm1_attached_storage.qcow2
file disk vdc /kvm/linux-host/guest01_logging_partition.qcow2
file cdrom sda –
file cdrom sdb
3. Backup KVM only Virtual Machine data files (but not VM state) Live
# virsh snapshot-create-as –name "mint-snapshot-2024"
–description "Mint Linux snapshot"
–disk-only
–live
–domain mint-home-desktop
4. KVM restore snapshot (backup)
To revert backup VM state to older backup snapshot:
# virsh shutdown –domain manjaro
# virsh snapshot-revert –domain manjaro –snapshotname manjaro-linux-back-2024 –running
5. Delete old unnecessery KVM VM backup
# virsh snapshot-delete –domain dragonflybsd –snapshotname dragonfly-freebsd
More helpful Articles
Tags: backups, cdrom, command, created, Creating, Delete, domain name, filesystem, kvm, Listing, logical question, snapshot, virsh