Supprimer l'instantané libvirt «orphelin»

11

J'essaie de vivre instantané en utilisant KVM selon cette procédure .

J'ai dû gâcher à un moment donné parce que je suis dans un état que je ne comprends pas.

Ma VM est appelée prod. Il a été créé dans un fichier /srv/vm/prod.qcow2.

Apparemment, il n'y a pas d'instantané en cours d'exécution: je travaille sur le fichier de base. Je peux deviner parce que la date de modification du fichier /srv/vm/prod.qcow2change toutes les minutes environ. Cette commande le confirme d'ailleurs:

# virsh domblklist prod
Target     Source
------------------------------------------------
vda        /srv/vm/prod.qcow2

Et il n'y a rien à bloquer:

# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file

Cependant, libvirt conserve la trace d'un ancien instantané:

# virsh snapshot-list prod
 Name                 Creation Time             State
------------------------------------------------------------
 snap                 2015-06-09 12:11:33 +0200 disk-snapshot

Son fichier descripteur est /var/lib/libvirt/qemu/snapshot/prod/snap.xml:

<domainsnapshot>
  <name>snap</name>
  <state>disk-snapshot</state>
  <creationTime>1433844693</creationTime>
  <memory snapshot='no'/>
  <disks>
    <disk name='vda' snapshot='external' type='file'>
      <driver type='qcow2'/>
      <source file='/srv/vm/snap.qcow2'/>
    </disk>
  </disks>
[...]

Le fichier source a /srv/vm/snap.qcow2été supprimé.

Compte tenu de la méthode que j'essaie d'implémenter, il est fort probable que cet instantané ait été créé avec la commande suivante:

virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic

Je ne peux pas le supprimer:

# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet

Je suis donc dans un état où un instantané a été créé, n'est apparemment plus utilisé et ne peut pas être supprimé.

Y a-t-il quelque chose que je puisse faire à ce sujet?

Dois-je m'en soucier ou puis-je simplement l'ignorer?

Éditer

Je viens de supprimer le descripteur de fichier d'instantané.

# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt

Ma machine virtuelle est à nouveau opérationnelle et je ne vois plus aucune référence à l'instantané.

# virsh snapshot-list prod
 Name                 Creation Time             State
------------------------------------------------------------

Rien dans virt-manager non plus.

Suis-je bien ou y a-t-il encore du ménage à faire?

Modifier 2

Apparemment, passer -–no-metadataà virsh snapshot-create-aséviterait ce problème en ne créant pas le fichier .xml, ne conservant ainsi aucune trace de l'instantané.

Jérôme
la source
1
Après avoir supprimé le descripteur de fichier d'instantané, il devrait toujours y avoir des preuves d'un instantané existant laissé dans l'image de la machine virtuelle elle-même qui peut être vérifiée avec qemu-img info /srv/vm/prod.qcow2. Mais je ne sais pas comment supprimer cette trace moi-même ...
sdittmar
@sdittmar, vous voudrez peut-être contacter la liste de diffusion des utilisateurs de libvirt (voir ma réponse) pour obtenir une réponse précise à cela.
Jérôme

Réponses:

16

La bonne méthode était

virsh snapshot-delete prod --metadata snap

(Cette commande peut être trouvée sur le wiki . Je l'ai essayée avant de demander ici mais elle a échoué en raison d'une faute de frappe qui a été corrigée depuis.)

Je ne sais pas ce qu'il fait qui n'est pas couvert par la suppression du fichier .xml pendant que libvirtd est arrêté. La seule différence est peut-être que l'arrêt de libvirtd n'est pas nécessaire. Néanmoins, cela pourrait peut-être évoluer à l'avenir. Dans tous les cas, il est recommandé d'utiliser l'API de libvirt plutôt que de jouer directement avec des fichiers.

Cet appel n'est en effet pas nécessaire si l'instantané a été créé avec l' --no-metadataargument.

J'ai obtenu cette clarification dans ce fil de la liste de diffusion libvirt-users .

Quiconque souhaite effectuer des sauvegardes via des instantanés en direct doit lire la page wiki susmentionnée et peut être intéressé par le fil du forum qui répond à mes questions noob et pointe vers des diapositives d'Eric Blake , ainsi que cet article de blog et les commentaires suivants.

Jérôme
la source