Löschen Sie den verwaisten libvirt-Schnappschuss

11

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.qcow2vorstellen, 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.qcow2wurde 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-metadataan virsh snapshot-create-asdieses Problem vermeiden, indem die XML-Datei nicht erstellt wird und somit keine Spur des Snapshots erhalten bleibt.

Jérôme
quelle
1
Nachdem Sie den Snapshot-Dateideskriptor gelöscht haben, sollte noch ein Hinweis auf einen vorhandenen Snapshot im VM-Image vorhanden sein, mit dem überprüft werden kann qemu-img info /srv/vm/prod.qcow2. Aber ich bin mir nicht sicher, wie ich diese Spur selbst entfernen soll ...
sdittmar
@sdittmar Vielleicht möchten Sie die Mailingliste der libvirt-Benutzer kontaktieren (siehe meine Antwort), um eine genaue Antwort darauf zu erhalten.
Jérôme

Antworten:

16

Die richtige Methode war

virsh snapshot-delete prod --metadata snap

(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-metadataArgument 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.

Jérôme
quelle