tuto:sauvegardes:backup_libvirt_vm_avec_backuppc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tuto:sauvegardes:backup_libvirt_vm_avec_backuppc [19/10/2009 19:37]
dani créée
tuto:sauvegardes:backup_libvirt_vm_avec_backuppc [12/07/2012 23:26] (Version actuelle)
dani Page moved from backup_libvirt_vm_avec_backuppc to tuto:sauvegardes:backup_libvirt_vm_avec_backuppc
Ligne 1: Ligne 1:
 ====== Sauvegardes de machines virtuelles ====== ====== Sauvegardes de machines virtuelles ======
  
-Les machines virtuelles offrent des possibilités inédites de sauvegardes. Il est d'une part possible de les sauvegarder au niveau du système de fichier, comme un vrai serveur (cela permet de conserver un historique fichier par fichier), mais il est aussi possible de les sauvegarder au niveau des périphériques blocs. Cette technique permet une restauration complète, et très rapide. Nous appellerons ce type de sauvegarde une sauvegarde de "bas niveau". Vous trouverez les instructions pour la mise en place d'une sauvegarde bas niveau avec BackupPC (une sauvegarde au nveau FS se fait comme pour une machine physique, et n'est donc pas abordée ici)+Les machines virtuelles offrent des possibilités inédites de sauvegardes. Il est d'une part possible de les sauvegarder au niveau du système de fichier, comme un vrai serveur (cela permet de conserver un historique fichier par fichier), mais il est aussi possible de les sauvegarder au niveau des périphériques blocs. Cette technique permet une restauration complète, et très rapide. Nous appellerons ce type de sauvegarde une sauvegarde de "bas niveau". Vous trouverez les instructions pour la mise en place d'une sauvegarde bas niveau avec BackupPC (une sauvegarde au niveau FS se fait comme pour une machine physique, et n'est donc pas abordée ici)
  
 Dans cet exemple, nous utiliserons BackupPC pour la sauvegarde (mais il est possible de le faire avec d'autres outils) Dans cet exemple, nous utiliserons BackupPC pour la sauvegarde (mais il est possible de le faire avec d'autres outils)
Ligne 9: Ligne 9:
 ===== Mise en place du script de pre-backup ===== ===== Mise en place du script de pre-backup =====
  
-Télécharger ce [[http://repo.firewall-services.com/misc/virt-backup.pl|script]] et le placer dans /usr/local/binpuis lui donner les droits d'exécutions: +Le script virt-backup est maintenant inclus dans le paquet virt-stack, disponible sur notre [[:repo_fws|dépôt de rpms]]. Sinonvous pouvez récupérer la dernière version sur notre [[http://gitweb.firewall-services.com/?p=virt-backup;a=summary|dépôt git]].
-<code> +
-wget http://repo.firewall-services.com/misc/virt-backup.pl -O /usr/local/bin/ +
-chmod +x /usr/local/bin/virt-backup.pl +
-</code> +
- +
-Créer le répertoire de sauvegarde +
-<code> +
-mkdir -p /var/lib/libvirt/backup +
-chmod 750 /var/lib/libvirt/backup +
-</code>+
  
-Il est recommandé (mais pas obligatoire) de monter un système de fichier indépendant dans ce répertoire. Ce système de fichier doit être le plus rapide possible (RAID0, RAID10). 
  
 +Il est recommandé (mais pas obligatoire) de monter un système de fichier indépendant dans le répertoire de sauvegarde (/var/lib/libvirt/backup). Ce système de fichier doit être le plus rapide possible (RAID0, RAID10).
 ===== Vérifier le fonctionnement du script ===== ===== Vérifier le fonctionnement du script =====
 Vérifier en local que le script fonctionne, en sauvegardant une machine virtuelle Vérifier en local que le script fonctionne, en sauvegardant une machine virtuelle
 <code> <code>
-virt-backup.pl --pre --vm=machine_virtuelle --debug+virt-backup --vm=machine_virtuelle --debug
 </code> </code>
  
 Pour nettoyer les fichiers générés: Pour nettoyer les fichiers générés:
 <code> <code>
-virt-backup.pl --post --vm=machine_virtuelle --debug+virt-backup --cleanup --vm=machine_virtuelle --debug
 </code> </code>
  
 Pour obtenir une liste d'options disponibles: Pour obtenir une liste d'options disponibles:
 <code> <code>
-virt-backup.pl+virt-backup
 </code> </code>
  
 ===== Configurer la sauvegarde ===== ===== Configurer la sauvegarde =====
-Le serveur de sauvegarde doit pouvoir accéder au répertoire de sauvegarde (rsync+ssh est recommandé). L'utilisateur local sur le machine hôte doit avoir les droits d'éxécuter le script virt-backup.pl en tant que root (si il est différent de root): +Le serveur de sauvegarde doit pouvoir accéder au répertoire de sauvegarde (tar+ssh est recommandé). L'utilisateur local sur le machine hôte doit avoir les droits d'exécuter le script virt-backup en tant que root:
 <code> <code>
-Cmnd_Alias BACKUPPC /usr/local/bin/virt-backup.pl, /usr/bin/rsync+Cmnd_Alias BACKUPPC /usr/bin/virt-backup, /usr/bin/rsync
 [...] [...]
 backup ALL=(root) NOPASSWD: BACKUPPC backup ALL=(root) NOPASSWD: BACKUPPC
 </code> </code>
  
-Ensuite, il faut configurer un nouvel hôte à sauvegarder dans BackupPC (peu importe le nom), puis modifier la configuration comme suit:+Ensuite, il faut configurer un nouvel hôte à sauvegarder dans BackupPC (peu importe le nom), puis modifier la configuration comme suit (dans cet exemple, la VM que l'on sauvegarde se nomme smetest)
 <code> <code>
-$Conf{BackupFilesOnly} = { +$Conf{BackupFilesOnly} = {}; 
-  '/var/lib/libvirt/backup' => [ +$Conf{ClientNameAlias} = 'localhost'; 
-    '/cos5*' +$Conf{DumpPostUserCmd} = '/usr/bin/sudo /usr/bin/virt-backup --cleanup --vm smetest'; 
-  ] +$Conf{DumpPreUserCmd} = '/usr/bin/sudo /usr/bin/virt-backup --keep-lock --compress=pbzip2 --vm smetest --state';
-}; +
-$Conf{ClientNameAlias} = 'virt.domain.tld'; +
-$Conf{DumpPostUserCmd} = '$sshPath -l backup $host /usr/bin/sudo /usr/local/bin/virt-backup.pl --post --vm cos5'; +
-$Conf{DumpPreUserCmd} = '$sshPath -l backup $host /usr/bin/sudo /usr/local/bin/virt-backup.pl --pre --compress=pbzip2 --vm cos5 --state';+
 $Conf{EMailNotifyMinDays} = '1.5'; $Conf{EMailNotifyMinDays} = '1.5';
 $Conf{EMailNotifyOldBackupDays} = '2'; $Conf{EMailNotifyOldBackupDays} = '2';
Ligne 67: Ligne 52:
 $Conf{IncrKeepCnt} = '7'; $Conf{IncrKeepCnt} = '7';
 $Conf{IncrKeepCntMin} = '2'; $Conf{IncrKeepCntMin} = '2';
-$Conf{RsyncClientCmd} = '$sshPath -q -x -l backup $host ionice -c2 -n7 nice -n 10 /usr/bin/sudo $rsyncPath $argList+'; 
-$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l backup $host /usr/bin/sudo $rsyncPath $argList+'; 
-$Conf{RsyncShareName} = [ 
-  '/var/lib/libvirt/backup' 
-]; 
 $Conf{UserCmdCheckStatus} = '1'; $Conf{UserCmdCheckStatus} = '1';
 $Conf{IncrLevels} = [ $Conf{IncrLevels} = [
Ligne 77: Ligne 57:
 ]; ];
 $Conf{CompressLevel} = '0'; $Conf{CompressLevel} = '0';
 +$Conf{TarClientCmd} = 'env LC_ALL=C /usr/bin/sudo $tarPath -c -v -f - -C $shareName+ --totals';
 +$Conf{TarClientRestoreCmd} = 'env LC_ALL=C /usr/bin/sudo $tarPath -x -p --numeric-owner --same-owner -v -f - -C $shareName+';
 +$Conf{TarShareName} = [
 +  '/var/lib/libvirt/backup/smetest/'
 +];
 +$Conf{XferMethod} = 'tar';
 +$Conf{TarIncrArgs} = '--newer=$incrDate $fileList+';
 +
 </code> </code>
  
-Dans cet exemple: 
-  * **virt.domain.tld** est la machine hôte 
-  * **backup** est l'utilisateur local (sur virt.domain.tld) responsable des sauvegardes 
-  * **cos5** est le nom de la machine virtuelle à sauvegarder 
-  * le script pre-backup.pl compresse les copies des disques virtuels à la volé, en utilisant pbzip2 (**--compress=pbzip2**) 
-  * l'état complet de la machine virtuelle est sauvegarder (dump de la mémoire), permettant de la restaurer dans l'état exacte où elle était au moment de la sauvegarde (!! Attention, provoque parfois des instabilités pour le système invité, à tester avant !!) (**--state**) 
-  * Les sorties des commandes pre et post sont vérifié, et la sauvegarde est considérée comme mauvaise si une erreur est détecté (**$Conf{UserCmdCheckStatus} = '1'**) 
-  * On désactive les sauvegardes incrémentielles multi-niveau (**$Conf{IncrLevels} = ['1']**) 
-  * La compression de BackupPC est désactivée (puisque les images des disques sont déjà compressées) (**$Conf{CompressLevel} = '0'**) 
  
  • tuto/sauvegardes/backup_libvirt_vm_avec_backuppc.1255973825.txt.gz
  • Dernière modification: 19/10/2009 19:37
  • de dani