Genau, aber woher soll PVE wissen was inkrementell gebackupped werden soll?
Theoretisch müsste PBS dem PVE dann ja genau mitteilen, was dem bereits erstellten Backup noch fehlt.
Das kann ich mir nicht vorstellen, dass das geht.
Deshalb hat PBS ja ohne GC auch die vollen Backups angezeigt, weil es immer volle Backups waren bis zu dem Zeitpunkt wo PBS mit GC ein inkrementelles Backups daraus erstellt hat.
Das läuft so:
Sagen wir du hast ne 100GB virtuelle Disk von einer VM. Beim Backup zerstückelt PVE die 100GB in 25.000x 4MB Chunks und berechnet dann für jeden dieser Chunks die Prüfsumme. Dann fragt PVE den PBS: "Hab hier ein Chunk mit Prüfsumme XYZ. Hast du das schon?". PBS antwortet dann PVE entweder "Ja hab ich schon, brauchst nicht nochmal schicken." oder alternativ "Ne ist mir unbekannt, schick mal rüber, brauch ich noch". Im letzteren fall wird PVE das dann komprimieren und ggf. verschüsseln und dann zum PBS senden. Beim ersten mal muss PVE also alle chunks zum PBS senden, da der ja noch nichts davon hat. Bei allen weiteren Backups der VM wird PVE nur das zum PBS senden, was seit dem letzten Backup neu hinzugekommen ist, da PBS ja alles andere schon gespeichert hat und wegen Deduplizierung nichts doppelt gespeichert werden muss.
Also Senden/Schreiben ist immer "inkrementell" da ja Nichts gesendet werden muss, was schon am PBS existiert. Gelesen werden muss aber trotzdem jedes mal die vollen 100GB, was natürlich ordentlich dauert, da man ja sonst nicht besprechen kann, was noch gesendet werden muss und was nicht.
Um das Lesen am PVE zu beschleunigen gibt es dann aber einen Trick namens Dirty-Bitmapping, was quasi inkrementelles Lesen erlaubt. Damit PVE nicht jedes mal die vollen 100GB erneut einlesen, in 25.000x Chunks zerstückeln und dann die Prüfsummen erneut berechnen muss, kann PVE Dirty-Bitmapping benutzen, was quasi Buch führt, was sich seit dem letzen Backup an der virtuellen Disk geändert hat und was nicht. Dann muss sich PVE nur die Stellen der virtuellen Disk angucken, die seit dem letzen Backup beschrieben/überschrieben wurden und kann alles andere ignorieren, weil es sich ja nicht seit dem letzten Backup verändert haben kann. Das klappt aber auch wirklich nur für VMs und nicht für LXCs. Bei LXCs muss immer die komplette virtuelle Disk erneut eingelesen, zerstückelt und gehasht werden, egal ob die sich verändert hat oder nicht.
Und bei VMs geht die Dirty-Bitmap verloren, sobald du die VM stoppst/neustartest. Nach so einem Stop/Neustart muss auch eine VM wieder die komplette virtuelle disk erneut einlesen. Dirty Bitmapping klappt also nur bei Snapshot-Mode Backups von VMs auf Servern die man nie neustartet.
Nicht von klassischen Backupmodellen verwirren lassen. PBS arbeitet da ganz anders und macht keine differenziellen Backups wie du es sonst wohl kennst. Jedes PBS Backup ist gleichzeitig ein volles Backup und ein inkrementelles Backup, ohne dabei differentiell zu sein. Man hat keinerlei Ketten von Abhängigkeiten da neue Backups nicht auf vorherigen Backups aufbauen.
Pruning löscht die Indexe von Backups. Es löscht aber keine nicht mehr benötigten Chunks. Es wird also keinPlatz wieder freigegeben. Das macht dann erst der GC, der dann endgülig auch die Chunks löscht. Das aber auch nur, wenn der Prune mindestens 24 Stunden her ist.