pvesnap-recovery: Snapshots als Maschine starten
Zwei Betriebsarten:
live abgeschottet ohne Netzwerk - zum Hineinschauen ueber die
noVNC-Konsole, Dump ziehen, Daten ueber ein Austauschlaufwerk
herausholen
recovery mit Netzwerk und gleicher Identitaet (SMBIOS-UUID, vmgenid,
MAC-Adressen, Hostname) - warnt, wenn das Original noch laeuft
Die Datentraeger werden ueber PVE::Storage::vdisk_clone geklont, also mit
derselben Funktion und Cluster-Sperre, die Proxmox selbst verwendet. Auf
Ceph/ZFS/LVM-thin ist das Copy-on-Write: 32 GiB waren im Test in 0,8s
geklont, das Original bleibt unberuehrt.
Enthaelt der Snapshot den Arbeitsspeicher, wird er mitkopiert - die Maschine
laeuft dann genau dort weiter, wo sie stand, statt zu booten. Dafuer muss die
Geraeteausstattung exakt passen:
- vmgenid und smbios1 bleiben erhalten (ohne vmgenid bricht das Laden mit
"Unknown savevm section" ab)
- runningmachine/runningcpu werden uebernommen
- die Netzwerkkarte wird abgeklemmt statt entfernt
- das Austauschlaufwerk kommt erst nach dem Fortsetzen per Hotplug dazu,
sonst bemerkt der Gast es nie (nachgewiesen ueber "info virtio-status")
Proxmox meldet einen fehlgeschlagenen RAM-Ladevorgang als TASK OK und laesst
die Maschine angehalten stehen - deshalb wird das Task-Protokoll mitgelesen,
fortgesetzt und deutlich gemeldet, wenn stattdessen kalt gebootet wurde.
Austausch mit dem Host: bei VMs eine formatierte Zusatzplatte, bei
Containern ein durchgereichtes Verzeichnis - dort passt auch ein bereits
eingehaengtes Netzlaufwerk.
Verworfen wird restlos, samt Aufheben des rbd-Snapshot-Schutzes, den das
Klonen setzt - sonst koennte die Vorhaltezeit den Snapshot nie mehr loeschen.
Angefasst wird nur, was den Tag pvesnap-recovery traegt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8577b23b0c
commit
725fbf8732
+22
-1
@@ -49,6 +49,27 @@ if [ "$YES" -eq 0 ]; then
|
||||
esac
|
||||
fi
|
||||
|
||||
# Laufende Wiederherstellungen sind echte VMs, deren Datentraeger an Snapshots
|
||||
# haengen. Verschwindet pvesnap, laesst sich beides nicht mehr sauber aufloesen.
|
||||
if [ -x "${BIN}-recovery" ]; then
|
||||
RUNNING="$("${BIN}-recovery" list 2>/dev/null | tail -n +2 || true)"
|
||||
if [ -n "$RUNNING" ]; then
|
||||
warn "Es gibt noch Wiederherstellungen von pvesnap-recovery:"
|
||||
printf '%s\n' "$RUNNING" >&2
|
||||
warn "Bitte zuerst verwerfen: pvesnap-recovery destroy <VMID>"
|
||||
warn "Sonst bleiben Klone und geschuetzte Snapshots zurueck, die die"
|
||||
warn "Vorhaltezeit spaeter nicht mehr loeschen kann."
|
||||
if [ "$YES" -eq 0 ]; then
|
||||
printf 'Trotzdem weitermachen? [j/N] '
|
||||
read -r answer
|
||||
case "$answer" in
|
||||
j|J|y|Y) ;;
|
||||
*) echo "Abgebrochen."; exit 0 ;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
for unit in pvesnap.service pvesnap-web.service; do
|
||||
if systemctl list-unit-files 2>/dev/null | grep -q "^${unit}"; then
|
||||
info "Stoppe und deaktiviere ${unit}"
|
||||
@@ -72,7 +93,7 @@ done
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
systemctl reset-failed pvesnap.service pvesnap-web.service 2>/dev/null || true
|
||||
|
||||
for command in "$BIN" "${BIN}-explorer" "${BIN}-web"; do
|
||||
for command in "$BIN" "${BIN}-explorer" "${BIN}-web" "${BIN}-recovery"; do
|
||||
if [ -e "$command" ]; then
|
||||
info "Entferne $command"
|
||||
rm -f "$command"
|
||||
|
||||
Reference in New Issue
Block a user