Différences
Ci-dessous, les différences entre deux révisions de la page.
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" | + | 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" |
Dans cet exemple, nous utiliserons BackupPC pour la sauvegarde (mais il est possible de le faire avec d' | Dans cet exemple, nous utiliserons BackupPC pour la sauvegarde (mais il est possible de le faire avec d' | ||
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:// | + | Le script virt-backup est maintenant inclus dans le paquet virt-stack, disponible sur notre [[:repo_fws|dépôt de rpms]]. Sinon, vous pouvez récupérer la dernière version sur notre [[http://gitweb.firewall-services.com/ |
- | < | + | |
- | wget http://repo.firewall-services.com/ | + | |
- | chmod +x / | + | |
- | </ | + | |
- | + | ||
- | Créer le répertoire de sauvegarde | + | |
- | < | + | |
- | mkdir -p / | + | |
- | chmod 750 / | + | |
- | </ | + | |
- | 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 (/ | ||
===== 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 | ||
< | < | ||
- | virt-backup.pl --pre --vm=machine_virtuelle --debug | + | virt-backup --vm=machine_virtuelle --debug |
</ | </ | ||
Pour nettoyer les fichiers générés: | Pour nettoyer les fichiers générés: | ||
< | < | ||
- | virt-backup.pl --post --vm=machine_virtuelle --debug | + | virt-backup --cleanup |
</ | </ | ||
Pour obtenir une liste d' | Pour obtenir une liste d' | ||
< | < | ||
- | virt-backup.pl | + | virt-backup |
</ | </ | ||
===== Configurer la sauvegarde ===== | ===== Configurer la sauvegarde ===== | ||
- | Le serveur de sauvegarde doit pouvoir accéder au répertoire de sauvegarde (rsync+ssh est recommandé). L' | + | Le serveur de sauvegarde doit pouvoir accéder au répertoire de sauvegarde (tar+ssh est recommandé). L' |
< | < | ||
- | Cmnd_Alias BACKUPPC /usr/local/ | + | Cmnd_Alias BACKUPPC / |
[...] | [...] | ||
backup ALL=(root) NOPASSWD: BACKUPPC | backup ALL=(root) NOPASSWD: BACKUPPC | ||
</ | </ | ||
- | 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) |
< | < | ||
- | $Conf{BackupFilesOnly} = { | + | $Conf{BackupFilesOnly} = {}; |
- | '/ | + | $Conf{ClientNameAlias} = 'localhost'; |
- | '/ | + | $Conf{DumpPostUserCmd} = '/ |
- | ] | + | $Conf{DumpPreUserCmd} = '/ |
- | }; | + | |
- | $Conf{ClientNameAlias} = 'virt.domain.tld'; | + | |
- | $Conf{DumpPostUserCmd} = '$sshPath -l backup $host / | + | |
- | $Conf{DumpPreUserCmd} = '$sshPath -l backup $host / | + | |
$Conf{EMailNotifyMinDays} = ' | $Conf{EMailNotifyMinDays} = ' | ||
$Conf{EMailNotifyOldBackupDays} = ' | $Conf{EMailNotifyOldBackupDays} = ' | ||
Ligne 67: | Ligne 52: | ||
$Conf{IncrKeepCnt} = ' | $Conf{IncrKeepCnt} = ' | ||
$Conf{IncrKeepCntMin} = ' | $Conf{IncrKeepCntMin} = ' | ||
- | $Conf{RsyncClientCmd} = ' | ||
- | $Conf{RsyncClientRestoreCmd} = ' | ||
- | $Conf{RsyncShareName} = [ | ||
- | '/ | ||
- | ]; | ||
$Conf{UserCmdCheckStatus} = ' | $Conf{UserCmdCheckStatus} = ' | ||
$Conf{IncrLevels} = [ | $Conf{IncrLevels} = [ | ||
Ligne 77: | Ligne 57: | ||
]; | ]; | ||
$Conf{CompressLevel} = ' | $Conf{CompressLevel} = ' | ||
+ | $Conf{TarClientCmd} = 'env LC_ALL=C / | ||
+ | $Conf{TarClientRestoreCmd} = 'env LC_ALL=C / | ||
+ | $Conf{TarShareName} = [ | ||
+ | '/ | ||
+ | ]; | ||
+ | $Conf{XferMethod} = ' | ||
+ | $Conf{TarIncrArgs} = ' | ||
+ | |||
</ | </ | ||
- | Dans cet exemple: | ||
- | * **virt.domain.tld** est la machine hôte | ||
- | * **backup** est l' | ||
- | * **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' | ||
- | * 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} = ' | ||
- | * On désactive les sauvegardes incrémentielles multi-niveau (**$Conf{IncrLevels} = [' | ||
- | * La compression de BackupPC est désactivée (puisque les images des disques sont déjà compressées) (**$Conf{CompressLevel} = ' | ||