Sauvegarde des invités qcow2 kvm

13

Je ne trouve aucune bonne information sur la sauvegarde des invités qcow2 kvm. Je ne suis pas vraiment intéressé par l'état d'exécution des invités, seulement par le système de fichiers. Cette question suggère d'utiliser savevmmais qui crée un instantané en place. Je voudrais sauvegarder le système de fichiers à distance.

Existe-t-il un meilleur moyen que:

  1. suspendre virt_machine # pause machine virtuelle
  2. rsync --sparse /home/vm/image.qcow2 /tmp/image.dec_14_2010.qcow2 # copier l'image sur le même lecteur
  3. reprendre virt_machine
  4. rsync --sparse /tmp/image.dec_14_2010.qcow2 ssh: // backup @ backupmachine: / vmbackups

Il y a quelques inconvénients à cela. Tout d'abord, la copie d'un énorme fichier image prend un temps (relativement) long. Deuxièmement, je dois toujours m'assurer d'avoir suffisamment d'espace pour sauvegarder mes machines. Ce n'est pas idéal. Existe-t-il d'autres meilleures façons de gérer les sauvegardes KVM?

Merci.

Quatre vingt huit
la source

Réponses:

7

Je suggérerais la fonction d'instantané de qemu-nbd:

qemu-nbd --snapshot --connect=/dev/nbd0 image.qcow2

puis montez / dev / nbd0p1 (partition 1), rsync, démontez et enfin déconnectez:

qemu-nbd --disconnect / dev / nbd0

phhe
la source
5

Image sale avec cela (votre pause peut probablement aider, mais peut-être pas encore entièrement cohérente):

Faites un instantané sur le système de fichiers LVM contenant le fichier fragmenté qcow2 (encore une fois en supposant que vous avez de la place pour l'instantané LVM)

Montez l'instantané LVM.

Montez la télécommande à l'aide de sshfs.

Copier sur le point de montage sshfs en utilisant une copie clairsemée (cp --sparse = toujours src dest)

Moins de temps à copier, mais cela prendra tout de même le temps total si l'image est presque pleine.

Les sauvegardes de données à partir de la VM sont probablement une meilleure idée (moins d'espace / temps). Traitez les VM individuelles comme des hôtes réguliers à sauvegarder / restaurer - c'est-à-dire, obtenez simplement ce dont vous avez besoin et conservez un ensemble de VM de stub sans les données pour les sauvegarder et les exécuter rapidement.

ax25
la source
Intéressant, merci. Je n'ai pas LVM sur mon système de fichiers, pour plus de simplicité. Je préférerais copier l'image entière, car cela me permettrait d'avoir un basculement en attente prêt à fonctionner au cas où la machine tomberait en panne à un moment donné.
EightyEight
1
Aucun problème. Le LVM vous éviterait de devoir suspendre la machine virtuelle et vous permettrait de prendre un instantané pendant qu'elle continue de fonctionner.
ax25
3

Personnellement, j'ai eu un moment très difficile avec ce problème et j'ai constaté que, même en cas de suspension, les sauvegardes invitées étaient souvent irrégulières. N'oubliez pas - si vous n'essayez pas régulièrement de restaurer ces sauvegardes, vous ne savez vraiment pas si elles fonctionnent.

Après beaucoup d'expérimentation, je me suis entièrement investi dans la sauvegarde d'images et j'ai opté pour une solution de sauvegarde réseau traditionnelle que l'on pourrait utiliser pour les serveurs bare metal. Dans mon cas, nous avons opté pour BackupPC, qui est ancien, mais super fiable. Sur chaque serveur, j'ai configuré la solution de sauvegarde pour les applications particulières utilisées. Par exemple sqldump pour MySQL, plugin pour Joomla, etc.

C'est un PIA, mais il est beaucoup plus rapide et très fiable.

hdave
la source
Merci @hdave. J'ai l'impression qu'avec cette approche, je perds l'un des principaux avantages des machines virtuelles, le confinement. Pour restaurer, je devrais tout réinstaller manuellement et configurer. Pas vraiment l'approche que je veux adopter. Cependant, merci quand même, c'est une technique valable.
EightyEight
100% conviennent que c'est une douleur royale. Si vous craquez cet écrou, faites-nous savoir comment vous l'avez fait!
hdave
@EightyEight: Je recommande fortement un logiciel de gestion de configuration comme Chef ou Puppet. C'est beaucoup plus flexible et aussi moins douloureux si vous souhaitez configurer un deuxième serveur identique (physique ou virtuel, peu importe). Chef a des plugins pour presque tous les hyperviseurs et peut vous aider à approvisionner et configurer un hôte. De cette façon, vous avez l'avantage d'utiliser moins d'espace pour les sauvegardes (une machine virtuelle entière est plus grande par rapport à des ensembles de données spécifiques) et un temps de déploiement plus rapide dans de nouveaux environnements. De plus, CM est comme la documentation d'infrastructure dans le code.
Rafael Bugajewski
2

Peu importe où vous faites l'instantané - LVM ou qcow2, la machine virtuelle doit toujours être mise au repos avant de la prendre. Sinon, vous obtenez des données perdues et des images corrompues.

Dyasny
la source
pas plus que si vous tiriez sur le cordon d'alimentation?
1
ni plus, ni moins bien sûr :)
dyasny
en y réfléchissant un peu plus, la mise au repos du domaine n'ajoute rien - de toute façon, l'instantané est «cohérent avec les plantages», rien de plus, rien de moins, ai-je raison?
errr, définissez "cohérent avec les plantages". Le système d'exploitation invité peut avoir des données en vol destinées au disque v, qui seront perdues si vous débranchez la prise. Théoriquement, ces données peuvent être écrites sur l'instantané après leur prise en direct, mais il y a une bonne raison que les instantanés en direct sur toutes les plates-formes virt incluent la suspension / décongélation des agents invités. De plus, si les données ne sont pas perdues, elles finiront toujours dans l'instantané au lieu de l'image de base, ce qui va à l'
encontre
"crash-consistent" signifie simplement "aussi cohérent que ce à quoi vous vous attendez en cas de crash" iiuc - c'est-à-dire en s'appuyant sur des journaux, etc. et en acceptant certaines pertes de données en raison du manque de fsync en temps opportun. "il y a une bonne raison pour laquelle les instantanés en direct sur toutes les plates-formes virt incluent la suspension / décongélation des agents invités", si je comprends bien, la bonne raison est exactement la même que pour prendre un instantané LVM - savez-vous différent? KVM ne semble pas fsync avant la mise au repos plus qu'un instantané LVM? Bien sûr, si vous n'utilisez pas LVM pour les instantanés, vous seriez stupide de ne pas vous arrêter - mais c'est différent et pas ce que vous dites.