Neustart sauber statt mit Stromausfall

Beim Umstellen der Anzeige habe ich die Maschine mit stop+start neu gestartet -
also mit "qm stop", einem virtuellen Stromausfall. Bei einer laufenden Maschine
mit eingehaengten Dateisystemen genau das Falsche.

Jetzt uebernimmt das Proxmox' eigener reboot-Endpunkt: er faehrt den Gast per
ACPI herunter, der haengt seine Dateisysteme selbst aus, danach geht er wieder
hoch - und dabei werden vorgemerkte Aenderungen wirksam ("Applies pending
changes"). Antwortet der Gast nicht, schlaegt es fehl statt ihm den Strom zu
ziehen; das ist die richtige Richtung.

Der naheliegende Gedanke, im Gast selbst neu zu starten, hilft hier nicht: dabei
setzt sich nur die Maschine zurueck, der QEMU-Prozess laeuft mit der alten
Grafikkarte weiter und die Aenderung bliebe vorgemerkt liegen. Steht so auch im
Warnhinweis.

Gemessen: eintragen, Neustart in 5s, danach vga=qxl und der SPICE-Kanal da.

Ausserdem reichte spice_file() das nackte "no spice port" von Proxmox durch.
Das heisst schlicht, dass die Maschine ohne qxl laeuft - steht jetzt auch so
da, mitsamt dem Weg dorthin.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-08-09 10:38:10 +02:00
co-authored by Claude Opus 5
parent 91c23ce2c0
commit 9d5bf50f99
3 changed files with 45 additions and 11 deletions
+15 -7
View File
@@ -589,12 +589,20 @@ def _display(stdscr, proxmox, instance):
# geladene Arbeitsspeicher ist danach weg - Proxmox gibt ihn schon
# beim ersten Start frei, ein zweiter startet also kalt.
warnung = ["Dafuer muss %s neu starten - die Grafikkarte laesst sich "
"im Betrieb nicht wechseln." % instance.label]
"im Betrieb nicht wechseln." % instance.label,
"",
"Der Neustart laeuft sauber: Proxmox faehrt den Gast per ACPI "
"herunter, er haengt seine Dateisysteme selbst aus, danach "
"geht er wieder hoch. Kein Stromausfall.",
"",
"Ein Neustart von innen im Gast wuerde nichts bringen - dabei "
"setzt sich nur die Maschine zurueck, der QEMU-Prozess laeuft "
"weiter mit der alten Grafikkarte."]
if instance.resumed:
warnung.append("")
warnung.append("ACHTUNG: der geladene Arbeitsspeicher ist danach "
"endgueltig weg. Die Maschine bootet kalt, offene "
"Programme und ungespeicherte Daten sind verloren.")
warnung.append("Im Gast vorher sauber herunterfahren, was noch laeuft.")
key = _pages(stdscr, [(line, curses.color_pair(C_WARN) | curses.A_BOLD)
for eintrag in warnung for line in _wrap(eintrag, 74)],
"Neustart noetig", "j = trotzdem | andere Taste = abbrechen")
@@ -612,12 +620,12 @@ def _display(stdscr, proxmox, instance):
if not geaendert:
message(stdscr, "War schon so eingestellt.")
return
if neustart and confirm(stdscr, "%s jetzt neu starten?" % instance.label):
_do(stdscr, "Starte %s neu ..." % instance.label,
lambda: (proxmox.stop_guest(instance.guest),
start(proxmox, instance))[1])
if neustart and confirm(stdscr, "%s jetzt sauber neu starten?" % instance.label):
_do(stdscr, "Fahre %s herunter und wieder hoch ..." % instance.label,
lambda: proxmox.reboot_guest(instance.guest))
elif neustart:
message(stdscr, "Eingetragen - wirksam beim naechsten Start.")
message(stdscr, "Eingetragen - wirksam beim naechsten Start. Im Gast "
"herunterfahren, dann hier mit s starten.")
else:
message(stdscr, "Uebernommen.")