Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
elearning:workbooks:centos:8:avance:l106 [2021/08/23 10:42] – removed admin | elearning:workbooks:centos:8:avance:l106 [2022/02/22 15:15] (Version actuelle) – created admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ~~PDF: | ||
+ | Version : **2022.01** | ||
+ | |||
+ | Dernière mise-à-jour : ~~LASTMOD~~ | ||
+ | |||
+ | ======LCF606 - Gestion des Clones, des Snapshots et des Sauvegardes sous KVM====== | ||
+ | |||
+ | =====Contenu du Module===== | ||
+ | |||
+ | * **LCF606 - Gestion des Clones, des Snapshots et des Sauvegardes sous KVM** | ||
+ | * Contenu du Module | ||
+ | * LAB #1 - Gestion des Clones | ||
+ | * 1.1 - Création d'une VM à partir d'un Clone | ||
+ | * LAB #2 - Gestion des Snapshots | ||
+ | * 2.1 - Création d'un Snapshot - VM Arrêté | ||
+ | * 2.2 - Création d'un Snapshot - VM en Cours d' | ||
+ | * 2.3 - Restauration d'un Snapshot | ||
+ | * 2.4 - Suppression de Snapshots | ||
+ | * LAB #3 - Gestion des Sauvegardes | ||
+ | * 3.1 - Création d'une Copie du Disque de la VM | ||
+ | * 3.2 - Création d'une Copie de la Configuration de la VM | ||
+ | * 3.3 - Sauvegarder les Copies | ||
+ | | ||
+ | =====LAB #1 - Gestion des Clones===== | ||
+ | |||
+ | La création de clones offre une méthode rapide de création de VMs basées sur des configurations déjà existantes. | ||
+ | |||
+ | ====1.1 - Création d'une VM à partir d'un Clone==== | ||
+ | |||
+ | Commencez par vérifier l' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh list | ||
+ | | ||
+ | ------------------------- | ||
+ | | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | **Important** : Notez que la VM est dans un état de **running** et que son **Id** est de **3**. | ||
+ | </ | ||
+ | |||
+ | Afin de procéder à la création d'un clone, arrêtez la VM avec la commande **virsh shutdown**. Cette commande peut prendre en argument l' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh shutdown 3 | ||
+ | Domain 3 is being shutdown | ||
+ | </ | ||
+ | |||
+ | Vérifiez ensuite que la VM est arrêtée : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh list | ||
+ | | ||
+ | -------------------- | ||
+ | |||
+ | </ | ||
+ | |||
+ | Utilisez la commande **virsh-clone** pour créer une deuxième VM dénommée **testvm2** ayant une image au format qcow2 stockée dans le répertoire **/ | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virt-clone --original testvm1 --name testvm2 -f / | ||
+ | Allocating ' | ||
+ | |||
+ | Clone ' | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | **Important** : Notez la rapidité de la création du clone par rapport à la lenteur de la création d'une VM à partir d'une image ISO. | ||
+ | </ | ||
+ | |||
+ | La sortie de la commande **virsh list** ne montre pas les VMs en état d' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh list | ||
+ | | ||
+ | -------------------- | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour voir la liste des VMs, peu importe leurs états, utilisez l' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh list --all | ||
+ | | ||
+ | -------------------------- | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Le **State** peut être une des valeurs suivantes : | ||
+ | |||
+ | * **running** - la machine virtuelle est active, | ||
+ | * **blocked** ou **blocking** - la machine virtuelle est en attente d'E/S ou l' | ||
+ | * **paused** - la machine virtuelle est suspendue, | ||
+ | * **shutdown** - la machine virtuelle est en cours d' | ||
+ | * **shut off** - la machine virtuelle est éteinte et elle n' | ||
+ | * **crashed** - la machine virtuelle a crashée et est arrêtée. | ||
+ | |||
+ | =====LAB #2 - Gestion des Snapshots===== | ||
+ | |||
+ | La création de snapshots offre une méthode rapide de sauvegarde des VMs. | ||
+ | |||
+ | Il existe deux types de snapshots : | ||
+ | |||
+ | * **Internal**, | ||
+ | * uniquement possibles avec les images qcow2, | ||
+ | * la VM est mise en pause pendant la création du snapshot, | ||
+ | * ne fonctionne pas avec des pools de stockage de type LVM. | ||
+ | * **External**, | ||
+ | * sont basés sur le concept COW (**C**opy **O**n **W**rite), | ||
+ | * l' | ||
+ | * une image de type overlay en mode lecture/ | ||
+ | * est compatible avec n’importe lequel des formats de l' | ||
+ | |||
+ | ====2.1 - Création d'un Snapshot - VM Arrêté==== | ||
+ | |||
+ | Utilisez la commande **virsh snapshot-list** pour consulter la liste des snapshots déjà présents pour la VM **testvm1** : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-list testvm1 | ||
+ | | ||
+ | ------------------------------- | ||
+ | |||
+ | </ | ||
+ | |||
+ | La création d'un snapshot se fait grâce à l' | ||
+ | |||
+ | * **--domain**, | ||
+ | * le domaine à l' | ||
+ | * **--name**, | ||
+ | * le nom attribué au snapshot. | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-create-as --domain testvm1 --name " | ||
+ | Domain snapshot testvm1-snap-03092021 created | ||
+ | </ | ||
+ | |||
+ | Vérifiez que le snapshot a bien été pris en compte : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-list testvm1 | ||
+ | | ||
+ | -------------------------------------------------------------- | ||
+ | | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | **Important** : Notez que l' | ||
+ | </ | ||
+ | |||
+ | Pour obtenir des informations concernant le snapshot, il convient d' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-info --domain testvm1 --current | ||
+ | Name: | ||
+ | Domain: | ||
+ | Current: | ||
+ | State: | ||
+ | Location: | ||
+ | Parent: | ||
+ | Children: | ||
+ | Descendants: | ||
+ | Metadata: | ||
+ | </ | ||
+ | |||
+ | ====2.2 - Création d'un Snapshot - VM en Cours d' | ||
+ | |||
+ | Il est aussi possible de prendre des snapshot d'une VM en cours d' | ||
+ | |||
+ | Démarrez donc la VM **testvm2** avec la commande **virsh start** : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh start testvm2 | ||
+ | Domain testvm2 started | ||
+ | |||
+ | </ | ||
+ | |||
+ | Vérifiez ensuite l' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh list --all | ||
+ | | ||
+ | -------------------------- | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | Créez un snapshot de **testvm2** : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-create-as --domain testvm2 --name " | ||
+ | Domain snapshot testvm2-snap-03092021 created | ||
+ | </ | ||
+ | |||
+ | Consultez la liste des snapshots pour le domaine **testvm2** : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-list testvm2 | ||
+ | | ||
+ | -------------------------------------------------------------- | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Pour obtenir des informations concernant le dernier snapshot effectué pour le domaine **testvm2**, | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-info --domain testvm2 --current | ||
+ | Name: | ||
+ | Domain: | ||
+ | Current: | ||
+ | State: | ||
+ | Location: | ||
+ | Parent: | ||
+ | Children: | ||
+ | Descendants: | ||
+ | Metadata: | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | **Important** : Notez que le **State** est **running** par rapport au snapshot précédent qui avait rapporté un **State** de **shutoff**. | ||
+ | </ | ||
+ | |||
+ | ====2.3 - Restauration d'un Snapshot==== | ||
+ | |||
+ | Pour restaurer un snapshot la commande virsh fournit la sous-commande **snapshot-revert**. Commencez donc par arrêter la VM : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh shutdown testvm2 | ||
+ | Domain testvm2 is being shutdown | ||
+ | |||
+ | [root@centos8 ~]# virsh list --all | ||
+ | | ||
+ | -------------------------- | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Restaurez ensuite le snapshot : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-revert --domain testvm2 --snapshotname testvm2-snap-03092021 --running | ||
+ | |||
+ | [root@centos8 ~]# virsh list --all | ||
+ | | ||
+ | -------------------------- | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | **Important** : Notez que le **State** est **running** après la restauration du snapshot. | ||
+ | </ | ||
+ | |||
+ | Connectez-vous à la VM grâce à la commande **virsh console** et vérifiez que celle-ci ne présente pas d’anomalies de fonctionnement : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh console 5 | ||
+ | Connected to domain testvm2 | ||
+ | Escape character is ^] | ||
+ | |||
+ | CentOS Linux 8 | ||
+ | Kernel 4.18.0-305.12.1.el8_4.x86_64 on an x86_64 | ||
+ | |||
+ | testvm1 login: root | ||
+ | Mot de passe : fenestros | ||
+ | Dernière connexion : | ||
+ | [root@testvm1 ~]# | ||
+ | ... | ||
+ | [root@testvm1 ~]# [ALT GR]+[CTRL]+[)] | ||
+ | [root@centos8 ~]# | ||
+ | </ | ||
+ | |||
+ | ====2.4 - Suppression de Snapshots==== | ||
+ | |||
+ | Les snapshots peuvent être supprimés grâce à l' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh snapshot-delete --domain testvm1 --snapshotname testvm1-snap-03092021 | ||
+ | Domain snapshot testvm1-snap-03092021 deleted | ||
+ | |||
+ | [root@centos8 ~]# virsh snapshot-delete --domain testvm2 --snapshotname testvm2-snap-03092021 | ||
+ | Domain snapshot testvm2-snap-03092021 deleted | ||
+ | |||
+ | [root@centos8 ~]# virsh snapshot-list testvm1 | ||
+ | | ||
+ | ------------------------------- | ||
+ | |||
+ | [root@centos8 ~]# virsh snapshot-list testvm2 | ||
+ | | ||
+ | ------------------------------- | ||
+ | </ | ||
+ | |||
+ | =====LAB #3 - Gestion des Sauvegardes===== | ||
+ | |||
+ | Pour effectuer une sauvegarde d'une VM en utilisant les outils classiques, il convient simplement de copier le fichier d' | ||
+ | |||
+ | ====3.1 - Création d'une Sauvegarde du Disque de la VM==== | ||
+ | |||
+ | Actuellement seule la VM **testvm2** est en cours d' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh list | ||
+ | | ||
+ | ------------------------- | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Créez donc un répertoire destiné à contenir les copies créées : | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# mkdir /vm-backups | ||
+ | </ | ||
+ | |||
+ | Placez-vous dans le répertoire des images **/ | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# cd / | ||
+ | [root@centos8 images]# ls -l | ||
+ | total 4029008 | ||
+ | -rw-------. 1 root root 5369757696 Sep 3 11:42 testvm1-os.qcow2 | ||
+ | -rw-------. 1 qemu qemu 2261123072 Sep 4 02:25 testvm2.qcow2 | ||
+ | </ | ||
+ | |||
+ | Copiez ensuite l' | ||
+ | |||
+ | < | ||
+ | [root@centos8 images]# cp -p testvm1-os.qcow2 / | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | **Important** : Notez que cette copie est effectuée en arrière plan afin de libérer le prompt en avant plan du terminal. | ||
+ | </ | ||
+ | |||
+ | ====3.2 - Création d'une Sauvegarde de la Configuration de la VM==== | ||
+ | |||
+ | La configuration de chaque VM est contenue dans un fichier au format XML dans le répertoire **/ | ||
+ | |||
+ | < | ||
+ | [root@centos8 images]# cd / | ||
+ | [root@centos8 qemu]# ls -lR | ||
+ | .: | ||
+ | total 16 | ||
+ | drwx------. 3 root root 42 Sep 2 10:22 networks | ||
+ | -rw-------. 1 root root 4936 Sep 3 10:07 testvm1.xml | ||
+ | -rw-------. 1 root root 4933 Sep 3 11:35 testvm2.xml | ||
+ | |||
+ | ./networks: | ||
+ | total 4 | ||
+ | drwx------. 2 root root 25 Aug 10 17:00 autostart | ||
+ | -rw-------. 1 root root 575 Sep 2 10:22 default.xml | ||
+ | |||
+ | ./ | ||
+ | total 0 | ||
+ | lrwxrwxrwx. 1 root root 14 Jun 16 06:28 default.xml -> ../ | ||
+ | </ | ||
+ | |||
+ | Si vous consultez le contenu du fichier **testvm1.xml**, | ||
+ | |||
+ | < | ||
+ | ... | ||
+ | < | ||
+ | <vcpu placement=' | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | [root@centos8 qemu]# cat testvm1.xml | ||
+ | <!-- | ||
+ | WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE | ||
+ | OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: | ||
+ | virsh edit testvm1 | ||
+ | or other application using the libvirt API. | ||
+ | --> | ||
+ | |||
+ | <domain type=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | <memory unit=' | ||
+ | < | ||
+ | <vcpu placement=' | ||
+ | <os> | ||
+ | <type arch=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <cpu mode=' | ||
+ | <clock offset=' | ||
+ | <timer name=' | ||
+ | <timer name=' | ||
+ | <timer name=' | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <pm> | ||
+ | < | ||
+ | < | ||
+ | </pm> | ||
+ | < | ||
+ | < | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | <target dev=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model name=' | ||
+ | <target chassis=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model name=' | ||
+ | <target chassis=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model name=' | ||
+ | <target chassis=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model name=' | ||
+ | <target chassis=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model name=' | ||
+ | <target chassis=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model name=' | ||
+ | <target chassis=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <model name=' | ||
+ | <target chassis=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | < | ||
+ | <mac address=' | ||
+ | <source bridge=' | ||
+ | <model type=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <serial type=' | ||
+ | <target type=' | ||
+ | <model name=' | ||
+ | </ | ||
+ | </ | ||
+ | <console type=' | ||
+ | <target type=' | ||
+ | </ | ||
+ | <channel type=' | ||
+ | <target type=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | <input type=' | ||
+ | <input type=' | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | <rng model=' | ||
+ | <backend model=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ce fichier doit donc être copié vers le répertoire **/ | ||
+ | |||
+ | < | ||
+ | [root@centos8 qemu]# cp -p testvm1.xml / | ||
+ | </ | ||
+ | |||
+ | Une fois le processus en arrière plan terminé, vous pouvez constater la présence des deux fichiers dans le répertoire | ||
+ | |||
+ | < | ||
+ | [root@centos8 vm-backups]# | ||
+ | total 3992904 | ||
+ | -rw-------. 1 root root 5369757696 Sep 3 11:42 testvm1-os.qcow2-04092021 | ||
+ | -rw-------. 1 root root 4936 Sep 3 10:07 testvm1.xml-backup-04092021 | ||
+ | </ | ||
+ | |||
+ | Notez que la taille de l' | ||
+ | |||
+ | < | ||
+ | [root@centos8 ~]# virsh vol-info / | ||
+ | Name: | ||
+ | Type: file | ||
+ | Capacity: | ||
+ | Allocation: | ||
+ | </ | ||
+ | |||
+ | ====3.3 - Sauvegarder les Copies des Fichiers==== | ||
+ | |||
+ | Ayant effectué les copies, il est maintenant possible de sauvegarder les fichiers à l'aide d'un outil classique tel **tar** : | ||
+ | |||
+ | < | ||
+ | [root@centos8 vm-backups]# | ||
+ | [root@centos8 vm-backups]# | ||
+ | [root@centos8 vm-backups]# | ||
+ | testvm1 | ||
+ | |||
+ | [root@centos8 vm-backups]# | ||
+ | testvm1/ | ||
+ | testvm1/ | ||
+ | testvm1/ | ||
+ | |||
+ | [root@centos8 vm-backups]# | ||
+ | total 846724 | ||
+ | drwxr-xr-x. 2 root root 74 Sep 4 03:19 testvm1 | ||
+ | -rw-r--r--. 1 root root 867042697 Sep 4 03:24 testvm1-backup-04092021.tar.gz | ||
+ | </ | ||
+ | |||
+ | ----- | ||
+ | Copyright © 2022 Hugh Norris |