ubuntuusers.de

[KVM/QEMU] Gespenster-Gast?

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

Emma2

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 628

Ich habe einen KVM/QEMU-Gast, der läuft - obwohl seine virtuelle Platte (qcow2) "nicht da" ist. 😳

Ich habe gestern ein paar Dinge aus dem Backup wiederhergestellt und kann nicht ausschließen, dass ich die virtuelle Disk sogar selbst gelöscht habe.

Aber wieso kann dann der Gast noch laufen (und funktionieren)?

... und viel wichtiger: Wenn es irgendeinen "Cache" für die in Benutzung befindliche qcow2-Datei gibt, kann ich diese speichern, um sie nicht zu verlieren?

Jetzt bin ich echt verwirrt...

Berlin_1946 Team-Icon

Supporter, Wikiteam

Anmeldungsdatum:
18. September 2009

Beiträge: 10841

Hallo Emma2,
dann such doch mal auf deinen System nach alle dort befindlichen qcow2.

sudo find / -iname "*.qcow2"

Nachtrag:
ich sichere die mit rsync. Hast du vllt so was gemeint, -eine Sicherung-?

rsync -h --progress --stats -r -tgo -p -l -D --update --delete-after /pfad/der/qcow2 /pfad/der/vm-sicherungen/

achte auf das richte setzen der "/" oder benutze Grsync

Je nach dem wie du gelöscht hast, könnte noch was im Papierkorb liegen, sollte der find aber auch anzeigen. Will sagen, jetzt nicht den Papierkorb leeren.

Nachtrag:
Wenn dir der Name bekannt ist, dann suche auch mal hiermit, da steht der Pfad :

$ virsh dumpxml <name>| grep -i qcow2
      <driver name='qemu' type='qcow2' discard='unmap'/>
      <source file='/pfad/zur/<name>.qcow2'/>

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 628

Ja, guter Tipp, das habe ich auch schon versucht, zeigt mir aber keine Datei an.

Berlin_1946 Team-Icon

Supporter, Wikiteam

Anmeldungsdatum:
18. September 2009

Beiträge: 10841

Sry habe einen Nachtrag eingebracht.
Bitte schreibe doch zukünftig was du schon selber alles gemacht hast.

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 628

Ok, ich war genau und erläutere es etwas genauer:

Mir ist ein anderer Host "stehen geblieben", und da ich nicht vor Ort bin, kann ich den auch nicht neu starten.

(NB: Der Rechner ist per PING erreichbar, nicht aber per SSH noch per WEBMIN, ich muss also ans Blech, oder?, kann das aber erst nächste Woche tun.)

Ich habe deshalb ein paar wichtige VMs aus dem (ja, per RSYNC erstellten) Backup "wiederhergestellt". Technisch habe ich aber deren qcow2-dateien auf einen anderen Host kopiert und die VMs dort neu gestartet.

Und jetzt gerade, beim Einrichten der Backups auf dem neuen Host, fällt mir auf, dass eine der vorher dort befindlichen VMs "keine qcow2 mehr hat"...

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 628

Berlin_1946 schrieb:

Wenn dir der Name bekannt ist, dann suche auch mal hiermit, da steht der Pfad :

$ virsh dumpxml <name>| grep -i qcow2
      <driver name='qemu' type='qcow2' discard='unmap'/>
      <source file='/pfad/zur/<name>.qcow2'/>

Diese Info kann ich auch in der GUI sehen (ich nutze den VirtManager), und da steht der "normale", mir bekannte Pfad.

Die VM kann doch nicht erfolgrich weiterlaufen, wenn die virtuelle Disk gelöscht ist! Oder etwa doch?

Berlin_1946 Team-Icon

Supporter, Wikiteam

Anmeldungsdatum:
18. September 2009

Beiträge: 10841

Emma2 schrieb:

Und jetzt gerade, beim Einrichten der Backups auf dem neuen Host, fällt mir auf, dass eine der vorher dort befindlichen VMs "keine qcow2 mehr hat"...

du beginnst mit:

Aber wieso kann dann der Gast noch laufen (und funktionieren)?

Habe ich das richtig verstanden und die soll auch ohne qcow2 startbar sein?

Emma2 schrieb:

Diese Info kann ich auch in der GUI sehen (ich nutze den VirtManager), und da steht der "normale", mir bekannte Pfad.

Wenn du nicht genauer wirst, dann kann hier niemand helfen. Wir wissen nicht, was du mit -da steht der "normale", mir bekannte Pfad.- meinst.

Suche deine qcow2 auf dem Host oder wo die auch immer liegen und prüfe die Pfade, wenn du willst in der GUI (VMM).

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 628

Nein, startbar ist sie nicht, das habe ich auch nicht gesagt. Ich schrieb, dass sie weiterhin läuft, obwohl ich ihr offenbar die qcow2 "unterm Hintern weg" gelöscht habe. Mit "normaler Pfad" meinte ich den ursprünglichen Pfad der qcow2. Und, nein, es GIBT echt keine weitere "Kopie" dieser Datei (wäre ja auch speichertechnisch irre) ... nur einen Symlink dorthin:

Ich konnte das Problem nun selbst lösen, denn offenbar (be)hält QEMU, solange die VM läuft, ein Handle auf diese Datei (obwohl sie im Dateisystem als gelöscht gilt). Dieses Handle kann ich in /proc/<PID_der_VM>/fd finden, denn es ist mit "deleted" gekennzeichnet.

... und solange die VM noch läuft, kann ich diese "gelöschte" Datei an eine andere Stelle kopieren und auf diese Weise "retten". 😀

Danke für Eure Tipps!

Berlin_1946 Team-Icon

Supporter, Wikiteam

Anmeldungsdatum:
18. September 2009

Beiträge: 10841

gelöscht

von.wert

Anmeldungsdatum:
23. Dezember 2020

Beiträge: 14597

Emma2 schrieb:

Die VM kann doch nicht erfolgrich weiterlaufen,

Läuft sie denn wirklich oder wird einfach nur noch Bild angezeigt, unveränderlich?

Ich erinnere mich da an einen Fall vor 25 Jahren, wir haben damals Mainboards Bravo Baby-AT gehabt, unterqualitatives Zeug, aber da in Massen billig eingekauft und 2 PS/2-Slots und 2 SDR-RAM-Slots (Belegung nicht mischbar, entweder oder) habend, habe ich eines nur auf dem Karton liegend mit AT-NT, einer einfachen Graka, FDD, KB bestückt ständig RAM oder HDDs getestet.

In einer Unterhaltung hat da jemand (äh, ich) das RAM 'rausgezogen gehabt...oh, Sch...das Ding ist noch an! Der Monitor hat das letztdargestellte Bild weiter ausgegeben. 😀 Die Graka hat ja Videomem gehabt, geladen gewesen ist ein Test-Tool. Bei RAM-Checks darf natürlich nicht wirklich was ins zu testende RAM geladen werden, damals hat's da spezielle Tricks gegeben.

Mit anderen Worten, ja, sowas ist möglich. Natürlich funktioniert nichts mehr.

...und bei Dir ist das möglicherweise gar kein Voodoo, vielleicht hast Du toram gesetzt. 😉

Ansonsten mal in Roswell anrufen!

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 628

😇

Janee, is' klar... aber die VM lief tatsächlich noch, und sie lief sogar richtig gut. ... und es ist wirlich so, wie ich geschrieben habe:

  • Ich habe die qcow2-Datei in der Bash gelöscht (und damit ihren Directory-Eintrag gelöscht)

  • Solange der Gast aber noch läuft, hat wohl QEMU/KVM "einen Finger auf der Datei" und merkt sich einen eigenen Symlink

  • Dieses Handle konnte ich mit ls -l /proc/<ID-des-laufenden-Gastes>/fd | grep -i deleted herausfinden...

  • ... und dann mit cp /proc/<ID-des-laufenden-Gastes>/fd/<ID-des-Symlinks-auf-gelöschte-Datei> gerettet.qcow2 "in Sicherheit" kopieren

  • Anschließend konnte ich den Gast herunterfahren, die qcow2 war endgültig verloren,...

  • ... und aus der "geretteten" qcow2 wiederherstellen

Antworten |