Platz vor jedem Snapshot pruefen, bei Mangel alte loeschen, per Mail warnen
Volle Ceph-Pools legen alle VMs darauf lahm. Vor jedem Snapshot gilt jetzt je Storage des Gastes: frei >= sofortiger Verbrauch + space_min_free (Vorgabe 20 %). Die Reserve bleibt also auch nach dem Snapshot frei. Reicht es nicht, wird der aelteste pvesnap-Snapshot des Gastes geloescht und neu geprueft, bis es reicht. Sind nur noch die neuesten space_keep (Vorgabe 7) uebrig, entfaellt der Snapshot und der naechste Gast kommt dran. Gezaehlt wird je Gast ueber alle Gruppen, anders als bei der Vorhaltezeit. Auf dem Testhost haette eine Grenze je Gruppe nie gegriffen: keep_count = 5 liegt unter 7, und 13 GiB steckten in einer Gruppe, die es nicht mehr gibt. Sofortiger Verbrauch: Dicke ZFS-Zvols muessen ihre Reservierung auch nach dem Snapshot garantieren, das kostet alles seit dem letzten Snapshot Geschriebene. Exakt ist das refreservation - usedbyrefreservation; die Werte kommen per zfs get, bei anderen Nodes per ssh ueber die IP aus dem Clusterstatus, weil Node-Namen nicht ueberall aufloesen. Dazu kommt der RAM bei vmstate. --dry-run zeigt die Rechnung je Storage. Ceph und ZFS geben Platz erst im Hintergrund frei. Deshalb wird nach jedem Loeschen gewartet, solange der Platz waechst, und erst nach space_settle (Vorgabe 30s) ohne Zuwachs weitergemacht. Ohne das wurde auf Ceph ein Snapshot zu viel geloescht. Laesst sich der Platz nicht feststellen, wird nichts geloescht und der Snapshot trotzdem versucht. Neu ist [mail]: eine Alarm-Mail je Gruppe und Lauf, wenn ein Snapshot wegen Platzmangels ausfaellt. STARTTLS oder SSL/TLS mit Zertifikatspruefung, ohne Rueckfall auf Klartext. Einzurichten im Editor (Taste m) oder von Hand, Test mit pvesnap mail-test. Liegt ein Passwort in der Datei, setzt der Editor die Rechte auf 600, auch fuer die .bak. Das Handbuch beschreibt, wie man Ceph (Ratios) und ZFS (Notreserve) frueher "voll" sagen laesst und was im Notfall zu tun ist. Ausserdem war "pvesnap run --dry-run" ueberall falsch: Die Option ist global und muss vor dem Unterbefehl stehen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
d9d9345d03
commit
74be5aee59
@@ -135,6 +135,7 @@ task_timeout = 15m
|
||||
retries = 2 # Wiederholungen, wenn eine Sperre belegt ist
|
||||
retry_delay = 60s
|
||||
pause_between = 0s # Pause zwischen zwei Gästen
|
||||
space_settle = 30s # Geduld, bis gelöschter Platz zurückkommt
|
||||
run_on_start = no # beim Start sofort einen Durchlauf machen?
|
||||
dry_run = no # yes = nichts wirklich tun, nur protokollieren
|
||||
description = pvesnap | Gruppe: {group} | erstellt: {datetime} | Vorhaltezeit: {keep_time}
|
||||
@@ -209,6 +210,42 @@ Beides ist kombinierbar — gelöscht wird, was *eine* der beiden Grenzen reißt
|
||||
Mindestens eine der beiden Angaben muss gesetzt sein, sonst würde die Zahl der
|
||||
Snapshots unbegrenzt wachsen (`pvesnap check` weist darauf hin).
|
||||
|
||||
### Platz vor dem Snapshot
|
||||
|
||||
```ini
|
||||
space_min_free = 20% # so viel bleibt auf jedem Storage der VM auch danach frei (auch 2T; 0 = aus)
|
||||
space_keep = 7 # so viele bleiben auch bei Platzmangel stehen
|
||||
```
|
||||
|
||||
Geprüft wird `frei ≥ sofortiger Verbrauch + space_min_free`. Sofort kosten nur der
|
||||
mitgesicherte RAM und dick angelegte ZFS-Zvols, deren Kosten pvesnap exakt berechnet
|
||||
(bei Gästen auf anderen Nodes per `ssh`). Die Rechnung zeigt `pvesnap --dry-run run
|
||||
--force`.
|
||||
|
||||
Fehlt der Platz, löscht pvesnap vom ältesten pvesnap-Snapshot der VM an, über
|
||||
alle Gruppen hinweg, bis er reicht, und legt dann den neuen an. Sind nur noch die
|
||||
neuesten `space_keep` übrig und es reicht trotzdem nicht, entfällt der Snapshot
|
||||
dieser VM mit einem Fehler im Protokoll, und die nächste kommt dran. Von Hand
|
||||
angelegte Snapshots bleiben unangetastet. Ceph und ZFS geben Platz erst im
|
||||
Hintergrund frei, deshalb wartet pvesnap nach jedem Löschen, bis sich
|
||||
`space_settle` (Vorgabe `30s`, in `[global]`) lang nichts mehr tut.
|
||||
|
||||
Fällt ein Snapshot aus, warnt pvesnap auf Wunsch per Mail, mit STARTTLS oder
|
||||
SSL/TLS. Einzurichten im Editor (`pvesnap config`, Taste `m`) oder von Hand:
|
||||
|
||||
```ini
|
||||
[mail]
|
||||
enabled = yes
|
||||
server = mail.example.org
|
||||
security = starttls # oder ssl; none nur ohne Anmeldung
|
||||
user = pvesnap@example.org
|
||||
password = geheim
|
||||
sender = pvesnap@example.org
|
||||
recipients = admin@example.org
|
||||
```
|
||||
|
||||
`pvesnap mail-test` schickt eine Test-Mail.
|
||||
|
||||
### Welche VMs?
|
||||
|
||||
Alle Angaben wirken als **ODER**, Ausschlüsse gewinnen immer:
|
||||
@@ -267,11 +304,12 @@ pvesnap status # Übersicht: Gruppen, letzte und nächste Lä
|
||||
pvesnap vms # alle VMs und die Gruppen, in denen sie stecken
|
||||
pvesnap list # vorhandene pvesnap-Snapshots (-a = auch fremde)
|
||||
pvesnap check # Konfiguration prüfen
|
||||
pvesnap mail-test # Test-Mail senden
|
||||
pvesnap config # ncurses-Editor
|
||||
|
||||
pvesnap run # jetzt fällige Gruppen ausführen
|
||||
pvesnap run --force -g täglich # eine Gruppe sofort ausführen
|
||||
pvesnap run --force --dry-run # Probelauf, ändert nichts
|
||||
pvesnap --dry-run run --force # Probelauf, ändert nichts
|
||||
pvesnap prune -g stündlich # nur aufräumen, keine neuen Snapshots
|
||||
|
||||
systemctl status pvesnap
|
||||
|
||||
Reference in New Issue
Block a user