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.qcow2
change 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é.
la source
qemu-img info /srv/vm/prod.qcow2
. Mais je ne sais pas comment supprimer cette trace moi-même ...Réponses:
La bonne méthode était
(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-metadata
argument.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.
la source