Question Sauvegarde de KVM qcow2 en cours d'exécution


Je veux une méthode robuste de sauvegarde de KVM VPS du fichier qcow2, en cours d'exécution. Après avoir cherché pendant longtemps, j'ai trouvé que nous pouvions utiliser rsync pour la sauvegarde en direct. J'ai utilisé la commande suivante pour rsync:

rsync -avh /vms/base.qcow2 /backup/backup.qcow2

Cela a fonctionné correctement. Mais j’ai bien peur que cela puisse corrompre l’image de sauvegarde qcow2 si une sauvegarde est effectuée alors que VPS est modifié en raison d’opérations d’écriture et de suppression (comme l’installation de nouveaux logiciels ou la mise à jour).

Par conséquent, prendre une sauvegarde à partir d'un instantané de VPS en direct semble une option plus intéressante.

J'ai utilisé les commandes suivantes pour effectuer une sauvegarde de VPS en cours d'exécution:

1. Créer un instantané:

qemu-img create -f qcow2 -b base.qcow2 snapshot.qcow2

2. Convertir un instantané au format d'image brute (.img):

qemu-img convert -O raw snapshot.qcow2 /backup/backup.img

Pour restaurer VPS:

3.Convertir l'image brute dans l'image qcow2:

qemu-img convert -O qcow2 /backup/backup.img base.qcow2

Ensuite, nous pouvons commencer VPS par virsh create base.xml commander.

Même si cette méthode fonctionne également parfaitement, je ne suis toujours pas sûr qu'il s'agisse d'une méthode appropriée pour effectuer une sauvegarde de VPS en cours d'exécution. J'ai trouvé une bonne documentation sur les commandes qemu-img ici et ici. Mais ils n'ont rien dit sur la conversion d'un instantané de VPS réel en image brute.

Quelle méthode est la mieux adaptée à la sauvegarde en direct VPS? La conversion d'instantané en image brute est-elle sécurisée?

Si je pouvais obtenir une bonne documentation détaillée sur le comportement des fichiers de capture instantanée et de base dans certaines conditions, cela sera très utile.

Peut-être pourrions-nous également convertir l’image de base qcow2 en fichier de sauvegarde brut au lieu de convertir un instantané. Donc, le flux de commande sera:
1. Créer un instantané
2. Convertir la base qcow2 en image brute de sauvegarde
3. Valider les modifications d'instantané dans l'image de base
4. Supprimer l'instantané

J'ai essayé cela et cela a bien fonctionné sur un petit VPS de 5 Go. Mais existe-t-il une possibilité d'erreur ou de corruption du système VPS lorsque la taille du système VPS est énorme?

Merci d'avance...


6
2017-08-18 07:57


origine


C'est l'une des raisons pour lesquelles j'aime que mes machines virtuelles résident sur des volumes logiques. Ils ont un support de capture instantanée inhérent. - Halfgaar


Réponses:


La seule chose qui vous manque est de mettre le système de fichiers invité au repos avant de prendre l'instantané, afin de garantir sa cohérence. Cela peut être fait avec virsh domfsfreeze si vous utilisez libvirtd.

Par exemple, l'ordre des opérations est le suivant:

# Freeze guest filesystems
virsh domfsfreeze $VM_NAME

# Create snapshot
qemu-img create -f qcow2 -b $VM_NAME.qcow2 snapshot.qcow2

# Thaw guest filesystems
virsh domfsthaw $VM_NAME

# Take backup from snapshot
qemu-img convert -O raw snapshot.qcow2 /backup/backup.img

Notez bien que cela nécessite la qemu-guest-agent être installé et en cours d'exécution dans la VM. En fonction des choix de distribution et d'installation, cela peut être ou non le cas.

le qemu-guest-agent est également extensible; vous pouvez y ajouter des scripts pour prendre en charge des logiciels spécifiques. Par exemple, il inclut un exemple de script pour mettre MySQL dans un état cohérent.


10
2017-08-18 13:49



La seule chose qui manque à cette réponse est la suppression de l'instantané après la sauvegarde :) - dyasny
Je suppose qu'en utilisant virsh domfsfreeze empêchera toute opération d'écriture sur VPS et cela signifie qu'il y aura un temps d'arrêt pour exécuter VPS. - Bosco D'mello
@ BoscoD'mello À moins que vous n'ayez de très mauvais disques durs, le délai devrait être inférieur à une fraction de seconde. Ce n'est pas la peine de s'inquiéter. - Michael Hampton♦
J'ai essayé d'utiliser virsh domfsfreeze mais il montre l'erreur 'commande inconnue'. Je n'ai trouvé aucune référence à domfsfreeze dans la page de manuel virsh. S'il vous plaît laissez-moi savoir sur comment puis-je utiliser cette commande pour geler le système de fichiers VPS. - Bosco D'mello
@ BoscoD'mello Quel âge a votre système? - Michael Hampton♦