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é.
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.