snapshots in KVM verloren

peterwalber

Cadet 1st Year
Registriert
Apr. 2021
Beiträge
10
Ich nutze unter OpenSuse Linux KVM und qemu. Ich habe eine Virtuelle Maschine für Windows 10 als Gast erstellt. Von dieser VM habe ich häufiger im Virtual Machine Manager (VMM) sog. interne Snapshots erzeugt. Mir sind zwei dieser Snapshots zusammen mit den dazugehörigen Dateien verloren gegangen (ich habe sie aus Versehen gelöscht-ja Unix ist gemein beim Löschen).

Wenn ich nun die VM für Windows 10 in KVM im VMM wieder starten möchte, erhalte ich die Fehlermeldung
fehler beim starten der domain: cannot access backing file '/srv/virtual_machines/aenderungen_drucker.qcow2' of storage file '/srv/virtual_machines//aenderungen-snap5.qcow2' (as uid:459, gid:460): datei oder verzeichnis nicht gefunden

Auf dem beigefügten Screenshot kann man sehen, dass die internen snapshots 3 und 5 fehlen.
Wie kann ich die VM doch noch starten ? Kann man irgendwie direkt snapshot 7 starten ? Wenn ich diesen Aktivieren möchte (Rechtsklick und "snapshot starten", kommt sofort die obige Fehlermeldung. Achtung: Die Aussage "VM-Status: Wird ausgeführt" bezieht sich auf den Moment, zu dem der snapshot erstellt wurde.

Screenshot_20210419_171409.jpg
 
Zuletzt bearbeitet:
Snapshots bauen aufeinander auf, daher müssen die VHDs auch konsolidiert werden wenn man Snapshots löschen möchte. Irreversibel gelöscht?
 
Irreversibel gelöscht ja.

Was heißt VHDs konsolidieren ? Wie macht man das ?
 
coxeroni schrieb:
Snapshots bauen aufeinander auf,
Kommt immer drauf an. In dem Fall aber korrekt.

@peterwalber in Snapshot 1 Friest du sozusagen einen status ein. Du merkst dir jetzt nur noch die differenzen zum gespeicherten Status. In Snapshot 2 merkst du dir die differenzen zu den differenzen aus der 1. ebene.. Usw.

Wenn da nunn eine Ebene an differenzen fehlt, kommst du bei dieser Art von Snapshots nicht mehr zurueck
 
  • Gefällt mir
Reaktionen: peterwalber und Asghan
Danke für die Antworten. Habe jetzt verstanden, was aufeinander aufbauen heißt. Aber was kann ich den jetzt noch machen, um die Kette der Snapshots wieder korrekt herzustellen. Linux, KVM und Virtual Machine Manager. Gibt es irgendwelche Optionen in virsh? Was bedeute VHDs konsolidieren ? KVM kennt doch keine VHDs
 
In dem Fall etwa "Zusammen legen" - du kannst halt nicht einfach eine Ebene raus loeschen. alle gemerkten aendderungen muessen zusammengefasst werden
 
wie mache ich das "Zusammenlegen" in KVM mit den Linux Bordmitteln ? Welche Kommandos kann ich nutzen ? Ich finde keine Möglichkeit in VMM und keine in virsh
 
peterwalber schrieb:
(ja Unix ist gemein beim Löschen).
Vielleicht hilft da ein: alias rm='rm -i' in deiner .bashrc. :-)

Aber was mich wunder ist, dass du sagst du hast interne Backups angelegt. Bei qcow2 Images würde das interne Backup eigentlich direkt in das Image mit rein geschrieben.

Wenn du alle Snapshots, außer 1,2 und 3 löschst sollte die VM doch zumindest noch mal starten. Vielleicht vorher noch mal ein Backup von XML und Images machen.
 
  • Gefällt mir
Reaktionen: peterwalber
Danke. Habe die snapshots 4,6 und 7 gelöscht. Dann konnte ich snapshot 2 wieder aktivieren und die vm konnte gestartet werden. (habe vorher ein backup die win10.xml sowie der qcow2 Dateien gemacht).

Ich hatte auch externe snapshots und habe dort mit virsh -c qemu:///system snapshot-delete --domain win10 .... snapshots und ihre Dateien gelöscht (erst die Metadaten, dann die Dateien). Vielleicht kommt ja die Fehlermeldung von VMM weil er die Dateien der externen snapshots nicht mehr findet.

Wie ist das Soll-Verhalten ?

kann man aus den internen snapshots von VMM einfach einen herauslöschen ? Ich finde nicht wirklich vollständige Doku im Internet. Wo ist das Verhalten der snapshots bei KVM gut dokumentiert ?
 
Habe mal folgenden Test gemacht:
  1. Snapshot 1 erstellt
    1. gebootet und Datei 1 erstellt
    2. Shutdown
  2. Snapshot 2 erstellt
    1. gebootet und Datei 2 erstellt
    2. Shutdown
  3. Snapshot 3 erstellt
    1. gebootet und Datei 3 erstellt
    2. Shutdown
  4. Snapshot 2 gelöscht
    1. gebootet
    2. Datei 1,2 und 3 waren vorhanden
    3. Shutdown
  5. Snapshot 1 ausgewählt
    1. gebootet
    2. keine Datei war vorhanden
    3. Shutdown
  6. Snapshot 3 ausgewählt
    1. gebootet
    2. Datei 1 und 2 waren vorhanden
Also im Prinzip scheint es zu gehen :-)...
 
Frage dazu : Das waren alles externe snapshots, weil ja jeweils eine Datei entstanden ist ? Heißt "gebootet" dass die vm jeweils ordnungsgemäß, ohne Fehlermeldung gestartet ist? Wie wurden die snapshots gelöscht ? virsh snapshot-delete ? Wurden die Dateien dann von Hand mit "rm" gelöscht.
 
Das VM Image hat das qcow2 Format. Habe interne Snapshots direkt mit virt-manager gemacht. Dabei entstehen keine externen Dateien und gelöscht habe ich den zweier Snapshot auch wieder mit virt-manager, als die VM aus war. Bootvorgang war jedes mal tadellos.

Externe Snapshots mit virsh kenne ich nur im Online-Modus, mittels:

Bash:
# Snapshot erstellen
virsh snapshot-create-as ${vm} backup --disk-only --atomic --no-metadata --quiesce

# Snapshot zurückmischen
virsh blockcommit ${vm} ${disc} --active --wait --pivot

# Snapshot löschen
rm {disc}

Würde mich da aber nicht getrauen mehrere Snapshots zu erstellen und einen mittendrin zu löschen. Den müssten man dann vorher mit einem anderen Snapshot davor oder danach mischen.

Online Snapshots sollten auch nur gemacht werden, wenn die Disk mit qemu-guest-agent eingefroren werden kann. Und wenn noch Datenbanken im Spiel sind, müssen die vor dem Gefrieren aus dem Ram entleert werden.
 
Zurück
Oben