Les sauvegardes de mon infrastructure KVM/QEMU avec Veeam for linux

Les sauvegardes de mon infrastructure KVM/QEMU

Depuis de nombreuse années, l'ensemble de mes services reposent sur des systèmes Linux. Ils me sont devenus indispensable 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és 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 au lien suivant. 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

  1. Le plan de désastre sur l'hôte KVM/QEMU.
  2. Les sauvegardes des VMs : mode image.
  3. L'installation de Veeam for Linux sur Debian 8.
  4. Conclusion sur mon plan de sauvegarde.

Le plan de désastre sur l'hôte KVM/QEMU

La pièce maîtresse de mon échiquier est mon hypeviseur KVM/QEMU installé sur un serveur dédié HP DL160G8. 
En cas de coup dur il doit être capable d'être restauré rapidement via ILO. De ce fait, j'ai décider de réaliser une sauvegarde de l'ensemble de mes partitions sauf "/var/libvirt/libvirt/images" qui contient les VMs.
Voici mes différents emplacement de sauvegarde :

Emplacement 1 Emplacement 2 Emplacement 3  
Un répertoire distant :
via NFS avec ACLs
Un répertoire distant :
via FTP avec ACLs
Un support chiffré
qui ce trouve chez moi
 

Exemple : mon serveur est défectueux ou hors d'état de fonctionnement ?

  1. Lancement de la console Online.net pour activation de l'ILO.
  2. Démarrage du serveur depuis l'ISO Veeam Recovery Media.
  3. Récupération de mes volumes via mon repository accessible en NFS.

Les sauvegardes des VMs : mode image

Depuis de longue année, la virtualisation permet de créer des snapshot 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 sauvegarde en "mode image" du système Linux dans son intégralité avec l'agent Veeam for Linux. Comment cela fonctionne ?

  1. L'agent est installé sur l'ensemble des machines virtuelles
  2. La sauvegarde est paramétrée pour sauvegarder l'ensemble de la VM (mode image).
  3. La sauvegarde est réalisé vers la destination : Veeam Backup & Réplication hébergé sur une VM Windows Server.
Emplacement 1 Emplacement 2 Emplacement 3  

Une VM locale :
vers disques 2 Windows

Un répertoire distant :
via FTP
Un support chiffré
qui ce trouve chez moi.
 

Exemple : une VM est défectueuse ou hors d'état de fonctionnement ?

  1. Redémarrage forcé de la machine virtuelle.
  2. Récupération de mes volumes via l'application Veeam Backup & Réplication.
  3. Ou bien démarrage depuis l'ISO Veeam Recovery Media.
  4. Récupération de mes volumes via le repository NFS Windows.

Sauvegardes niveau système de fichier

En complément, j'ai un second job de sauvegarde : niveau système de fichier pour les configurations des applications.
Je reste dans le même schéma que dans le "mode image". La sauvegarde au niveau fichier me permet alors de récupérer granulairement les données, cela me fait gagner du temps dans la restauration.

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 VMs celle-ci 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 au lien suivant.
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 sauvegardes 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 l'infrastructure.  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.

Commentaires