KVM

Instantanés d'invités KVM avec Libvirt

Instantanés d'invités KVM avec Libvirt
Les machines virtuelles ont de nombreux cas d'utilisation, dont l'un est la capacité des machines virtuelles à être utilisées comme machines de test. Vous pouvez expérimenter au sein d'une VM, appliquer des correctifs et tester des mises à niveau avant de faire de même sur vos systèmes de production ou votre poste de travail. Vous pouvez également utiliser des machines virtuelles jetables, qui manquent de données personnelles ou sensibles, pour les tests de logiciels malveillants comme le font la plupart des membres de la communauté de la sécurité, assurez-vous simplement que le réseau de la machine virtuelle est isolé de votre hôte et de votre réseau local.

Cependant, il devient fastidieux de réinstaller le système d'exploitation à l'intérieur de votre machine virtuelle encore et encore. Cela entrave votre flux de travail et, par conséquent, vous avez besoin d'un moyen fiable pour :

  1. Prenez un instantané de votre machine virtuelle à un moment donné.
  2. Disposer d'un mécanisme permettant d'utiliser l'instantané pour rétablir votre machine virtuelle dans un état de fonctionnement antérieur.

J'ai déjà discuté du fonctionnement des instantanés dans VirtualBox et cette fois, je voulais discuter des instantanés dans Libvirt. J'utiliserai QEMU-KVM comme hyperviseur principal pour mon installation Libvirt. Votre cas peut différer, mais la fonctionnalité et l'interface globales ne devraient pas être très différentes, car libvirt fait de son mieux pour standardiser l'interface frontale.

Si vous n'êtes pas familier avec libvirt et qemu-kvm, voici un guide sur la façon dont vous pouvez configurer KVM sur Debian.

Création d'un instantané

Il existe plusieurs façons de prendre et de gérer des instantanés de votre machine virtuelle. Les applications GUI telles que virt-manager et oVirt offrent la fonctionnalité et vous pouvez même écrire des scripts personnalisés pour l'interface avec l'API libvirt qui gère toute la gamme d'instantanés pour vous.

Cependant, j'utiliserai l'interface de ligne de commande virsh pour montrer comment vous pouvez gérer vos machines virtuelles et leurs instantanés. Cet utilitaire est fourni avec presque toutes les installations libvirt par défaut et devrait être disponible sur un large éventail de distributions.

Pour les commandes ci-dessous, assurez-vous de remplacer le nom de ma VM, VM1, par le nom réel de votre VM. Libvirt fait souvent référence à la machine virtuelle et aux conteneurs comme Domaines. Donc, si vous voyez un message d'erreur suggérant, disons, "spécifier le nom de domaine", vous devez fournir le nom de votre machine virtuelle comme l'un des arguments de la commande. Utilisez la commande suivante pour répertorier toutes les machines virtuelles sous la gestion de Libvirt.

$ virsh liste --all

Pour prendre un instantané d'une VM, exécutez simplement :

$ virsh snapshot-create VM1

Et pour lister tous les snapshots d'une VM donnée, utilisez la commande :

$ virsh liste d'instantanés VM1
Nom                 Heure de création             État
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 en cours d'exécution

Vous pouvez voir que l'instantané est créé. Par défaut, le nom de l'instantané est son horodatage de création (le nombre de secondes depuis l'époque UNIX). La colonne Heure de création affiche l'heure de création d'une manière lisible par l'homme et la colonne État affiche l'état de la VM lorsqu'elle a été prise de vue. Comme cette machine virtuelle était en cours d'exécution, l'état de l'instantané est également « en cours d'exécution », mais cela ne signifie pas que l'instantané lui-même est en cours d'exécution. ça ne changera pas avec le temps. Cette fonctionnalité est également connue sous le nom d'instantané en direct et elle est très utile car elle vous permet de prendre un instantané de votre machine virtuelle sans aucun temps d'arrêt. Les invités KVM, au moins, fonctionnent bien avec les instantanés en direct.

Cependant, certaines charges de travail nécessitent que vous arrêtiez la machine virtuelle avant qu'elle ne soit instantanée. Cela garantit que les données de l'instantané sont cohérentes et qu'il n'y a pas de fichier à moitié écrit ou de données manquantes. Si la charge de travail s'exécutant sur votre machine virtuelle a des E/S élevées, vous devrez probablement désactiver la machine virtuelle avant de créer l'instantané. Créons-en un de cette façon.

$ virsh arrêt VM1

Le domaine VM1 est en cours d'arrêt

$ virsh snapshot-create VM1

Instantané de domaine 1556533868 créé

[email protected] :~# virsh snapshot-list VM1
Nom                 Heure de création             État
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 en cours d'exécution
1556533868           2019-04-29 16:01:08 +0530 arrêt
 
$ virsh démarrer VM1
Domaine VM1 démarré

Si vous souhaitez nommer les instantanés autrement que par horodatage, utilisez la commande :

$ virsh snapshot-create-as VM1 --name snap1
Nom                 Heure de création             État
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 en cours d'exécution
1556533868           2019-04-29 16:01:08 +0530 arrêt
snap1                2019-05-02 22:27:48 +0530 en cours d'exécution

Évidemment, vous n'êtes pas obligé de le nommer snap1, vous pouvez choisir n'importe quel nom pratique.

Revenir en arrière à partir d'un instantané

Prendre un instantané ne sert à rien si vous ne pouvez pas y revenir. Au cas où vous auriez besoin de revenir à un instantané, utilisez simplement la commande :

$ virsh snapshot-revert $VMName $snapshot-name

Le nom peut être l'horodatage ou le nom attribué à l'instantané par l'utilisateur.

Assurez-vous qu'il n'y a pas de données importantes dans votre VM actuelle, ou s'il y a quelque chose d'important, prenez un instantané de votre VM actuelle, puis revenez à un instantané plus ancien.

Avantages de QCOW2

Le mécanisme de copie sur écriture des fichiers qcow2 permet à chaque instantané de prendre très peu de place. L'espace occupé par un instantané augmente avec le temps à mesure que l'image en cours diverge de l'instantané. Tant que vous ne réécrivez pas beaucoup de données, vos instantanés ne prendront que quelques Mo de stockage.

Cela signifie également que les instantanés sont également très rapides. Depuis, le mécanisme de copie sur écriture a juste besoin de marquer l'horodatage lorsque l'instantané a été pris. Les blocs de données écrits dans le fichier qcow2 après l'instantané ne lui appartiennent pas, mais les plus anciens le font. C'est aussi simple que ça. Mon banc de test utilise un disque dur de 5400RPM qui n'est en aucun cas au sommet de ses performances, il faut quand même moins de quelques secondes pour prendre un instantané en direct d'une VM sur ce disque.

Conclusion

Comme avec la plupart des utilitaires liés à libvirt et virsh, la fonctionnalité d'instantané fournit une interface très flexible avec des fonctionnalités de niveau entreprise telles que l'instantané en direct ainsi que les avantages du mécanisme de copie sur écriture.

La convention de nommage par défaut permet également aux scripts shell de supprimer périodiquement les anciens instantanés et de les remplacer par des plus récents. L'un de mes anciens articles sur les instantanés OpenZFS et les politiques d'instantané peut également être appliqué à votre invité KVM. Pour plus d'informations sur l'utilitaire virsh snapshot, vous pouvez utiliser la commande virsh help snapshot. La page d'aide est très petite, précise et facile à comprendre.

Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...
5 meilleurs jeux d'arcade pour Linux
De nos jours, les ordinateurs sont des machines sérieuses utilisées pour les jeux. Si vous ne pouvez pas obtenir le nouveau score élevé, vous saurez c...