Les sauvegardes de mes machines KVM/QEMU
Depuis de nombreuses années, l’ensemble de mes services reposent sur des systèmes Linux. Ils me sont devenus indispensables au quotidien, notamment pour la gestion de mes données personnelles et plus généralement dans mes activités d’administrateur. J’ai souhaité donc pouvoir reprendre mon activité en cas de problème : instabilité logiciel, cyberattaque ou simplement en cas d’erreur humaine de ma part. J’ai donc entrepris de revoir mon plan de sauvegarde qui respecte alors la règle des 1-2-3 :
- Disposer de trois copies de vos données au moins.
- Stocker ces copies sur deux supports différents.
- Conserver une copie de la sauvegarde hors site.
Dans mon plan, j’ai sélectionné la solution Veeam for Linux qui est gratuite est disponible sur ce lien. Pour continuer à explorer les possibilités de la solution, j’utilise également Veeam Backup & Réplication v9.5 U2 qui est la console de management de Veeam (payant) que je n’évoquerai pas dans cet article.
Le sommaire
- Le plan de désastre sur l’hôte KVM/QEMU
- Les sauvegardes des VM : mode image
- L’installation de Veeam for Linux sur Debian 8
- Conclusion sur mon plan de sauvegarde
Le plan de désastre sur l’hôte KVM/QEMU
La pièce maîtresse est mon hypeviseur KVM/QEMU installé sur un serveur dédié HP DL160G8.
En cas de problème il doit être capable d’être restauré rapidement via ILO. J’ai décidé de réaliser une sauvegarde de l’ensemble de mes partitions (hormis /var/libvirt/libvirt/images qui contient les VM).
Voici mes différents emplacements de sauvegarde :
Emplacement 1 | Emplacement 2 | Emplacement 3 | |
---|---|---|---|
Un répertoire distant : via NFS avec ACL | Un répertoire distant : via FTP avec ACL | Un support chiffré qui se trouve chez moi |
Exemple : mon serveur est défectueux ou hors d’état de fonctionnement :
- Lancement de la console Online.net pour activation de l’ILO.
- Démarrage du serveur depuis l’ISO Veeam Recovery Media.
- Récupération de mes volumes via mon repository accessible en NFS.
Les sauvegardes des VM : mode image
Depuis de longues années, la virtualisation permet de créer des snapshots qui permettent à un instant T de figer l’état de la machine pour en déplacer et extraire toutes modifications vers un second emplacement temporaire. L’API libvirt me permet de réaliser aisément ses étapes de sauvegarde avec un script maison mais j’ai décidé de réaliser des sauvegardes en mode image du système Linux dans son intégralité avec l’agent Veeam for Linux. Comment cela fonctionne ?
- L’agent est installé sur l’ensemble des machines virtuelles.
- La sauvegarde est paramétrée pour sauvegarder l’ensemble de la VM (mode image).
- La sauvegarde est réalisée vers la destination : Veeam Backup & Réplication hébergé sur une VM Windows Server.
Emplacement 1 | Emplacement 2 | Emplacement 3 | |
---|---|---|---|
Une VM locale : | Un répertoire distant : via FTP | Un support chiffré qui se trouve chez moi. |
Exemple : une VM est défectueuse ou hors d’état de fonctionnement :
- Redémarrage forcé de la machine virtuelle.
- Récupération de mes volumes via l’application Veeam Backup & Réplication.
- Ou bien démarrage depuis l’ISO Veeam Recovery Media.
- Récupération de mes volumes via le repository Windows.
L’installation de Veeam for Linux sur Debian 8.
L’installation est très simple, quand bien même elle requiert 1GB de mémoire et certaines dépendances que voici :
apt-get install install dkms gcc make perl libudev-dev libacl1 libattr1-dev lvm2 libfuse-dev linux-headers-$(uname -r)
Les ports utilisés par Veeam sont documentés sur la page du helpcenter. Dans mon cas, la communication entre mon hôte KVM et le serveur NFS m’impose l’ouverture du port 2051. Pour les VM, elles devront communiquer avec le serveur veeam via le port : 10002 et la de 2500 à 5000 pour réaliser les sauvegardes.
Le téléchargement de Veeam software repository est disponible à ce lien.
Lancer l’installation du paquage et exécuter une mise à jour des repository :
dpkg -i ./veeam-release* && apt-get update
L’installation de Veeam est désormais disponible :
apt-get install veeeam
Le résultat devrait être similaire à celui-ci :
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
veeamsnap
Les NOUVEAUX paquets suivants seront installés :
veeam veeamsnap
0 mis à jour, 2 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 22,8 Mo dans les archives.
Après cette opération, 51,8 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] O
Réception de : 1 http://repository.veeam.com/backup/linux/agent/dpkg/debian/x86_64/ noname/veeam veeamsnap all 1.0.0.944 [71,1 kB]
Réception de : 2 http://repository.veeam.com/backup/linux/agent/dpkg/debian/x86_64/ noname/veeam veeam amd64 1.0.0.944 [22,8 MB]
22,8 Mo réceptionnés en 1s (20,5 Mo/s)
Sélection du paquet veeamsnap précédemment désélectionné.
(Lecture de la base de données... 58604 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../veeamsnap_1.0.0.944_all.deb ...
Dépaquetage de veeamsnap (1.0.0.944) ...
Sélection du paquet veeam précédemment désélectionné.
Préparation du dépaquetage de .../veeam_1.0.0.944_amd64.deb ...
Dépaquetage de veeam (1.0.0.944) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.0.2-5) ...
Traitement des actions différées (« triggers ») pour systemd (215-xxxxxx+xxxx) ...
Paramétrage de veeamsnap (1.0.0.944) ...
Loading new veeamsnap-1.0.0.944 DKMS files...
First Installation: checking all kernels...
Building only for 3.xx.xx-x-amd64
Building initial module for 3.xx.xx-x-amd64
Done.
veeamsnap:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/3.xx.xx-x-amd64/updates/dkms/
depmod............
DKMS: install completed.
Paramétrage de veeam (1.0.0.944) ...
J’ai rencontré un soucis sur une VM lors du lancement du module veeamsnap, un code d’erreur apparaît :
Failed to load module [veeamsnap] with parameters [zerosnapdata=1 debuglogging=0].
Pour résoudre le problème, voici la marche à suivre :
dkms status
veeamsnap, 1.0.0.944, 3.xx.xx-x-amd64, x86_64: installed
Il faut le supprimer, le rebuilt et le réinstaller pour qu’il se charge ensuite normalement :
dkms remove -m veeamsnap/1.0.0.944 --all
dkms build -m veeamsnap -v 1.0.0.944
dkms install -m veeamsnap -v 1.0.0.944
L’installation de Veeam for Linux sous Debian 8 est terminée. Désormais la commande principale de création de job est :
veeam
Veeam Agent for Linux apparaît dans le terminal, il nous propose d’utiliser le produit gratuitement ou avec une licence :
Désormais, vous êtes fin prêt à réaliser vous aussi votre plan de sauvegarde avec la solution Veeam For Linux.
Pour les instructions en ligne de commande : création de job, suppression, etc… c’est par ici.
Conclusion sur mon plan de sauvegarde
Je crois que le plus long n’est pas de sélectionner la solution de sauvegarde mais bien de réfléchir au plan de sauvegarde en lui-même. Au cas échéant, celui-ci orientera forcement le choix de la solution de sauvegarde.
J’ajouterai également qu’une semaine après mon plan de sauvegarde déployé je me suis décidé à faire un test de restauration de l’ensemble de mes machines. Pour conclure, le plan de reprise d’activité fonctionne parfaitement et ma rétention est de 15 jours. Veeam for Linux est une solution que je vous conseille d’autant qu’elle est gratuite.