Ich versuche, einen Live-Schnappschuss mit KVM gemäß diesem Verfahren zu erstellen .
Ich muss irgendwann durcheinander gebracht haben, weil ich in einem Zustand bin, den ich nicht verstehe.
Meine VM wird aufgerufen prod
. Es wurde in einer Datei erstellt /srv/vm/prod.qcow2
.
Anscheinend gibt es keinen laufenden Schnappschuss: Ich arbeite an der Basisdatei. Ich kann mir /srv/vm/prod.qcow2
vorstellen, dass sich das Änderungsdatum der Datei jede Minute oder so ändert. Außerdem bestätigt dieser Befehl Folgendes:
# virsh domblklist prod
Target Source
------------------------------------------------
vda /srv/vm/prod.qcow2
Und es gibt nichts zu blockieren:
# virsh blockcommit prod vda --active --pivot
error: invalid argument: top '/srv/vm/prod.qcow2' in chain for 'vda' has no backing file
Libvirt verfolgt jedoch einen alten Schnappschuss:
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
snap 2015-06-09 12:11:33 +0200 disk-snapshot
Die Deskriptordatei lautet /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>
[...]
Die Quelldatei /srv/vm/snap.qcow2
wurde gelöscht.
In Anbetracht der Methode, die ich zu implementieren versuche, ist es ziemlich wahrscheinlich, dass dieser Snapshot mit dem folgenden Befehl erstellt wurde:
virsh snapshot-create-as --domain prod snap --diskspec vda,file=/srv/vm/snap.qcow2 --disk-only --atomic
Ich kann es nicht entfernen:
# virsh snapshot-delete prod snap
error: Failed to delete snapshot snap
error: unsupported configuration: deletion of 1 external disk snapshots not supported yet
Ich bin also in einem Zustand, in dem ein Schnappschuss erstellt wurde, anscheinend nicht mehr verwendet wird und nicht gelöscht werden kann.
Kann ich etwas dagegen tun?
Sollte es mich interessieren oder kann ich es einfach ignorieren?
Bearbeiten
Ich habe gerade den Snapshot-Dateideskriptor entfernt.
# systemctl stop libvirt
# mv /var/lib/libvirt/qemu/snapshot/prod/snap.xml /home/jerome
# systemctl start libvirt
Meine VM ist wieder aktiv und ich sehe keinen Verweis mehr auf den Snapshot.
# virsh snapshot-list prod
Name Creation Time State
------------------------------------------------------------
Auch nichts im Virt-Manager.
Geht es mir gut oder gibt es noch etwas zu tun?
Bearbeiten 2
Anscheinend würde das Übergeben -–no-metadata
an virsh snapshot-create-as
dieses Problem vermeiden, indem die XML-Datei nicht erstellt wird und somit keine Spur des Snapshots erhalten bleibt.
quelle
qemu-img info /srv/vm/prod.qcow2
. Aber ich bin mir nicht sicher, wie ich diese Spur selbst entfernen soll ...Antworten:
Die richtige Methode war
(Dieser Befehl befindet sich im Wiki . Ich habe ihn ausprobiert, bevor ich hier gefragt habe, aber er ist aufgrund eines Tippfehlers fehlgeschlagen, der seitdem korrigiert wurde.)
Ich weiß nicht, was es tut, das nicht durch Entfernen der XML-Datei abgedeckt wird, während libvirtd nicht verfügbar ist. Vielleicht besteht der einzige Unterschied darin, dass libvirtd nicht gestoppt werden muss. Trotzdem könnte sich dies vielleicht in Zukunft weiterentwickeln. In jedem Fall wird empfohlen, die libvirt-API zu verwenden, anstatt direkt mit Dateien zu spielen.
Dieser Aufruf wird in der Tat nicht benötigt, wenn der Snapshot mit dem
--no-metadata
Argument erstellt wurde.Ich habe diese Klarstellung in diesem Thread der Mailingliste der libvirt-Benutzer erhalten .
Jeder, der bereit ist, Backups über Live-Schnappschüsse zu erstellen, sollte die oben genannte Wiki-Seite lesen und sich möglicherweise für den Forenthread interessieren, der meine Noob-Fragen beantwortet und auf Folien von Eric Blake verweist , sowie auf diesen Blog-Beitrag und die folgenden Kommentare.
quelle