3 votes

KVM virt-clone pendant que la machine virtuelle est en cours d'exécution

Est-il possible de cloner une machine kvm en cours d'exécution sans utiliser d'outils tels que virt-clone?

ils ont déjà la vm d'origine en production, je ne peux pas l'arrêter. Si je ne me soucie pas de la corruption temporaire des données (qu'un fsck initial peut réparer) sur le clone, puis-je simplement copier le fichier d'image qcow avec un nouveau nom, créer une nouvelle définition de vm qui utilise ce disque et démarrer la machine?

1voto

shodanshok Points 42743

Si vous ne vous souciez pas des données en mémoire, vous pouvez prendre un instantané du dispositif de stockage et en faire une copie de sauvegarde.

Cela nécessite bien évidemment un pool de stockage avec support des instantanés (principalement LVM ou ZFS, car BTRFS est extrêmement lent pour le stockage des machines virtuelles).

0voto

iwaseatenbyagrue Points 3533

Je soupçonne qu'il n'est que possible de cloner un disque en évitant d'utiliser virt-clone, car (comme cela a déjà été mentionné) virt-clone refusera de fonctionner avec une machine virtuelle en cours d'exécution. Donc, vous devriez utiliser autre chose pour copier l'image disque actuelle.

Je pense que la réponse de base est que vous pouvez essayer et espérer que vous avez de la chance.

Obtenir un 'snapshot' de la configuration de l'invité est assez simple (virsh dumpxml NOM fera l'affaire). Si vous avez plus d'un disque (c'est-à-dire si vous avez un disque OS et n+1 disques de données), alors je chercherais à éviter de cloner le disque OS, et je verrais si je pouvais utiliser une nouvelle installation à la place.

Cependant, s'il y a une autre méthode que de copier des images disque, je préférerais probablement l'utiliser. Si tout cela est lié à un serveur de base de données, par exemple, j'utiliserais probablement les propres fonctionnalités de la base de données pour copier les données entre les instances en toute sécurité. Si vous travailliez directement avec un système de fichiers, il pourrait être utile de voir si quelque chose comme DRBD pourrait aider, ou si quelque chose de simple comme rsync le pourrait.

En gros, je réfléchirais soigneusement à ce que vous devez réellement faire, et j'essaierais d'éviter de passer du temps à essayer de copier une image disque qui est en cours d'utilisation (outre les problèmes liés à ce à quoi pourrait ressembler la copie, j'aurais des préoccupations sur ce que pourrait faire la tentative de copie du disque à l'original).

0voto

Gediz GÜRSU Points 402

J'avais une machine virtuelle fonctionnelle. Pendant que j'étais dedans, j'ai utilisé ssh pour me connecter à la machine KVM de base et j'ai copié son disque de sauvegarde et sa snapshot sur un lecteur nvme en utilisant cp -ar. J'ai également formaté et partitionné le nvme mentionné avant de copier ... Puis j'ai utilisé

virsh edit mykvm

modifié l'identifiant et les emplacements des disques et le nom ...

puis j'ai arrêté ma machine et redémarré la nouvelle. La seule chose perdue étaient les fenêtres ouvertes et la session chrome ...

Cela semble fonctionner, sauf si vous modifiez des fichiers système ou d'application ...

Je ne l'utiliserai bien sûr pas. Je vais expérimenter dessus et après l'expérimentation, j'implémenterai les résultats dans le fichier original.

Cependant, si jamais je devais l'utiliser comme instantané du système d'exploitation principal, je ferais simplement une vérification du système de fichiers et ensuite une vérification des fichiers système (sha1sum) ou j'utiliserais n'importe quelle commande intégrée pour vérifier les fichiers système.

0voto

jb_alvarado Points 130

Lorsque l'agent invité est installé et que votre image de disque est au format qcow2, vous pouvez également essayer :

  1. Créer des instantanés de disque :
    virsh snapshot-create-as ${vm} backup --disk-only --atomic --no-metadata --quiesce.
  2. Copier l'image de disque originale.
  3. Fusionner le fichier d'instantané avec l'image de disque originale :
    virsh blockcommit ${vm} ${disc} --active --wait --pivot.
  4. Vérifier l'état du disque : virsh domblklist ${vm} --details.
  5. Supprimer les fichiers temp *.backup.
  6. Exporter la définition de la VM : virsh dumpxml ${vm} > ${vm}.xml.

-2voto

Cela est tout à fait faisable avec le format d'image disque RAW. Je ne sais pas pour qcow2...

Debian.img : secteur d'amorçage x86; partition 1 : ID=0x83, active, starthead 32, startsector 2048, 497664 secteurs; partition 2 : ID=0x5, starthead 59, startsector 501758, 104353794 secteurs, décalage du code 0x63

Debian2.img : secteur d'amorçage x86; partition 1 : ID=0x83, active, starthead 32, startsector 2048, 497664 secteurs; partition 2 : ID=0x5, starthead 59, startsector 501758, 104353794 secteurs, décalage du code 0x63

Pour le test, j'ai copié un système linux mint en cours d'exécution avec tout. Ensuite, j'ai créé un nouveau vm avec la nouvelle image, il n'avait même pas d'incohérences de système de fichiers au démarrage. Bien que ce ne soit qu'une petite vm de bureau, ce que j'étais sur le point de "cloner" est un serveur LAMP en production avec une forte E/S sur la base de données.

Cela ne me dérangerait vraiment pas l'incohérence, je voulais juste gagner du temps pour réinstaller l'environnement LAMP, je suppose qu'il aurait été une bonne idée de créer une image de base au début ou de prendre un instantané du premier serveur web mais une fois qu'il était entièrement configuré et testé, il était trop tard, ils ont commencé à l'utiliser en production tout de suite.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X