Soweit ich das veratanden habe löscht das Prune nur die Index Dateien, welche die Chunks referenzieren. Der GC geht dann alle Index Dateien durch, toucht dann dessen referenzierte Chunks in der ersten Phase und geht dann in der zweiten Phase einfach alle Chunks durch und löscht alles, was 24h+5min nicht getoucht wurde.
genau.
prune == logisches loeschen auf backup/snapshot meta ebene
GC == tatsaechliches loeschen nicht mehr benoetigter daten (mittels "mark & sweep" -> erst wird "markiert" was noch referenziert wird, dann wird geloescht was nicht markiert worden ist)
Dann wäre die Frage, ob gerade ein GC in Phase 1 lief, als der NFS Share ausgefallen ist, dass da nicht alle Chunks getoucht werden konnten und Phase 2 zu viel gelöscht hat.
Aber ich vermute, für so einen Fall wird das Proxmox Team schon eine Prüfung eingebaut haben, dass da Phase 2 nicht ausgeführt wirdm wenn Phase 1 nicht erfolgreich abgeschlossen werden konnte?
ja, wenn in phase 1 ein problem auftritt wird die GC natuerlich abgebrochen, weil eine unvollstaendige markierung ein loeschen von moeglicherweise noch benoetigten daten nach sich ziehen wuerde. es gibt eine einzige ausnahme - wenn das auflisten der indizes noch problemlos funktioniert hat, aber der index nachher nicht mehr existiert, dann wird das ignoriert (weil ein paralleles loeschen von indizes ja kein fehler ist - sonst muessten wir fuer die gesamte dauer der GC keinerlei prunes erlauben..). das betrifft aber wirklich nur den fehler dass die datei nicht mehr existiert. bei einem totalausfall des storages gibts zwei moeglichkeiten:
- er blockiert (dann gibts kein not found, also auch kein ueberspringen dieser indizes)
- er ist unmounted (dann gibts ein not found, aber auch keine chunks die geloescht werden koennen)
wir braeuchten also folgendes "race" und fehlerverhalten (gegen das PBS auch nichts tun kann - wenn der datastore von normal auf leer auf voll springt ohne irgendwelche fehler zu schmeissen ist dass definitiv schuld des storages!):
- mark phase beginnt
- listing der indizes geht noch ohne fehler
- storage faellt so aus, dass storage noch lesbar ist, aber indizes "verschwunden" sind
- mark phase fertig (hat zuwenig markiert)
- sweep phase beginnt
- storage wieder da
- chunks sind jetzt sichtbar, wurden aber nicht markiert, daher werden sie geloescht
- sweep fertig
in jedem fall sollte das ersichtlich sein, falls eine GC gemacht worden ist (im Log steht ja, wieviel "garbage" entfernt worden ist
). falls GC gelaufen ist, bitte die logs von allen GC tasks anhaengen.