web-dev-qa-db-fra.com

Supprimer "Orphel" Libvirt Snapshot

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

Je dois avoir foiré à un moment donné parce que je suis dans un état que je ne comprends pas.

Mon VM est appelé prod. Il a été créé dans le fichier /srv/vm/prod.qcow2.

Apparemment, il n'y a pas d'instantané en cours: je travaille sur le fichier de base. Je peux deviner parce que la date de modification du fichier /srv/vm/prod.qcow2 change chaque minute environ. En outre, cette commande le confirme:

# 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 garde 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 de 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 /srv/vm/snap.qcow2 A été supprimée.

Considérant la méthode que j'essaie de mettre en œuvre, il est assez 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 l'enlever:

# 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 être supprimé.

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

Devrais-je m'occuper ou puis-je simplement l'ignorer?

Edit

Je viens de supprimer le descripteur de fichier instantané.

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

Mon VM est à nouveau en hausse et je ne vois plus aucune référence à l'instantané.

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

Rien dans virt-gestionnaire non plus.

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

Edit 2

Apparemment, passant -–no-metadata à virsh snapshot-create-as éviterait cette question en ne créant pas le fichier .xml, ce qui ne conserve aucune trace de l'instantané.

11
Jérôme

La méthode appropriée était

virsh snapshot-delete prod --metadata snap

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

Je ne sais pas ce que cela ne correspond pas à ce que cela ne soit pas couvert en supprimant le fichier .xml pendant que libvirtd est en panne. Peut-être que la seule différence est que l'arrêt libvirtd n'est pas nécessaire. Malgré tout, peut-être que cela pourrait évoluer à l'avenir. Dans tous les cas, il est recommandé d'utiliser l'API de Libvirt plutôt que de jouer avec des fichiers directement.

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

J'ai obtenu cette clarification dans ce thread de la liste LibVirt-Utilisateurs-utilisateurs .

Toute personne désireuse de faire des sauvegardes via des instantanés vivants devrait lire une page de wiki susmentionnée et peut être intéressée par le thread du forum qui répond à mes questions noob et pointe vers diapositives d'Eric Blake , ainsi que Ce blog post et des commentaires suivants.

16
Jérôme