web-dev-qa-db-fra.com

Sauvegarde de l'exécution KVM Qcow2 VPS

Je veux une méthode robuste de prise de sauvegarde KVM VPS de fichier Qcow2, en cours d'exécution. Une fois la recherche pendant une longue période, j'ai constaté que nous pouvons 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 je crains que cela puisse corrompre la sauvegarde Qcow2 Image si la sauvegarde est prise pendant que VPS est modifiée en raison des opérations d'écriture et de suppression (telles que l'installation de nouveaux logiciels ou de la mise à jour).

Par conséquent, la sauvegarde de l'instantané de VPS Live semble plus intéressante.

J'ai utilisé des commandes suivantes pour avoir pris de la sauvegarde des VPS en cours:

1. Créate d'instantané:

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

2.Convert instantané dans le format d'image brute (.IMG):

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

Pour restaurer les VPS:

3.Convert 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 commande.

Même si cette méthode fonctionne également parfaitement, je ne sais toujours pas si la méthode est correcte de la sauvegarde des VP exécutant. J'ai trouvé une belle documentation sur les commandes qemu-img ici et ici . Mais ils n'ont rien mentionné sur la conversion d'instantané de VPS en direct dans l'image brute.

Quelle méthode est plus appropriée pour la sauvegarde VPS en direct? Conversion d'instantané dans l'image brute en sécurité?

Si je pouvais obtenir une bonne documentation détaillée sur la manière dont les instantanés et les fichiers de base se comportent dans certaines conditions qui seront très utiles.

Peut-être pouvons-nous également convertir une image de base Qcow2 en fichier de sauvegarde brute 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. Commettre des changements d'instantané dans l'image de base
[.____] 4. Supprimer instantané

J'ai essayé cela et ça a fonctionné bien sur les petits VPS de 5 Go. Mais existe-t-il une possibilité d'erreur ou de corruption VPS lorsque la taille VPS est énorme?

Merci d'avance...

8
Bosco D'mello

La seule chose que vous manquez est de faire valoir le système de fichiers invités avant de prendre l'instantané, afin de vous assurer qu'il est cohérent. Cela peut être fait avec virsh domfsfreeze Si vous utilisez libvirtd.

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

# 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 le qemu-guest-agent être installé et courir dans la machine virtuelle. Selon les choix de distribution et d'installation, cela peut ou non être le cas.

Les qemu-guest-agent est également extensible; Vous pouvez ajouter des scripts à celui-ci pour prendre en charge des logiciels spécifiques. Par exemple, il comprend un exemple de script pour mettre MySQL dans un état cohérent.

11
Michael Hampton

Il existe une autre approche qui consiste à créer des instantanés temporaires pendant la sauvegarde et de les valider ensuite.

# Create a temporary backup snapshot which records changes during backup
virsh snapshot-create-as vm backup-tmp --disk-only --atomic --quiesce --no-metadata --diskspec sda,file=/tmp/sda_temp.qcow2
# Now the main image is frozen and the changes are going into /tmp/sda_temp.qcow2

# Do your backup here
...

# Now we commit back data from temp snapshot into the main image
virsh blockcommit vm sda --active --pivot
# Remove the temporary snapshot file
rm /tmp/sda_temp.qcow2

Pour plus d'informations, voir: https://wiki.libvirt.org/page/live-Disk-backup-withAactive-BlockCommez

1
Thuffir