KVM : rappel sur les fondamentaux des snapshots
Pour créer un instantané KVM, deux méthodes s'offrent à vous. Toutefois, une seule permet de prendre des snapshots d'une machine virtuelle en fonctionnement.
Créer un instantané KVM a constitué un défi pendant des années. Aucune solution native n'existait, et l'opération n'était possible qu'au moyen de la fonction dédiée de Linux, Logical Volume Manager (LVM). Si cette approche reste fiable, libvirt propose une solution plus efficace.
Instantanés LVM
Les instantanés LVM ont pour but de faciliter le rétablissement d'une version antérieure de l'état des fichiers sur un volume logique. Les volumes LVM sont créés à partir d'un groupe de volumes qui représente la quantité totale d'espace disponible. Avant de créer un instantané LVM, vous devez vous assurer qu'un espace disque suffisant est disponible dans le groupe de volumes. Pour créer un instantané, la procédure est simple ; il suffit d'exécuter la commande lvcreate -s -n monvolume_snap -L 10G monvolumeoriginal. Pour créer un instantané fiable, veillez à arrêter préalablement la machine virtuelle (VM, Virtual Machine).
Avantage de libvirt
Depuis, KVM propose une méthode de substitution pour créer des instantanés via libvirt. Libvirt est l'interface d'administration de KVM. Créer des instantanés avec libvirt constitue une meilleure approche car il s'agit d'une solution native. Par ailleurs, libvirt prend un instantané de l'intégralité de la VM, contrairement aux instantanés LVM qui ne sauvegardent qu'un seul disque.
Pour créer un instantané libvirt, utilisez la commande virsh snapshot-create. Cette commande repose sur un fichier XML qui contient la définition de la VM originale. La commande virsh lit le contenu de ce fichier pour identifier la VM d'origine (telle que spécifiée dans la section <name>dudit fichier XML) et les disques à utiliser.
Sur le même sujet
Le fichier XML peut être soit celui qui définit la VM originale, soit un fichier XML personnalisé ne contenant qu'une partie de la configuration de la VM. Vous pouvez ainsi créer un fichier XML qui ne contient que certains des disques utilisés par la VM. Utilisez par exemple la commande virsh snapshot-create mondomaine-snap mondomaine.xml pour créer un instantané appelé mondomaine-snap qui repose sur le fichier de configuration mondomaine.xml.
En termes de création d'instantanés KVM, le véritable avantage de la commande virsh tient au modificateur--live. Cette option vous permet de prendre un instantané d'une VM en fonctionnement (« en ligne »). Lorsque vous l'utilisez, testez systématiquement votre instantané ; en effet, certaines charges de travail n'acceptent pas à chaud les instantanés. De même, ne perdez pas de vue qu'un instantané KVM sera plus volumineux car il intègre également l'image de la mémoire.
Une fois l'instantané KVM créé à l'aide de la commande virsh, vous pouvez revenir à celui-ci au moyen de la commande snapshot-revert nom_vm. Par exemple, la commande snapshot-revert mavm --current rétablit le dernier instantané enregistré de la VM. Vous pouvez également spécifier le nom d'un instantané particulier à rétablir au moyen d'une commande telle que virsh snapshot-revert mavm mavm-snapshot.
Si la vieille méthode qui consiste à utiliser des volumes de stockage LVM fonctionne toujours, elle n'en nécessite pas moins l'arrêt de la VM au moment de créer l'instantané et ne tient pas non plus compte des métadonnées de cette VM. C'est pourquoi, même si LVM fonctionne encore dans les environnements KVM modernes, il est sans doute préférable de réaliser un instantané KVM avec la commande virsh de libvirt.