I have a PVE cluster (v8.1.4) doing backups to a PBS server. The backups are done every 3 hours with a */3:11 schedule.
On PBS (v3.2-2), I have a prune policy setting like this:
IIUC, this should keep a copy of the last day of the month for 12 months and for the last day of the year. If you configure this parameters in prune simulator [1] it does confirm this.
PBS is removing that last backup of the last day of the month of all VMs. Focusing on the backup of VM 1008, I looked in logs to find when the backup of 2025-02-28 was removed. That happened on 2025-03-04 "remove vm/1008/2025-02-28T23:11:02Z":
I've checked other PBS servers and this seems to affect other versions too: the last backup of each month isn't always the last backup of the last day of the month. This seems to work ok for daily and weekly retentions, were the last backup of each period is kept correctly. There are no prune policies in PVE and all PVE reach PBS with a user that only has Datastore.Audit and Datastore.Backup, so there is no chance that PVE can prune backups.
Why is it removing those backups? I really need RPO predictability, specially in long term backups.
[1] https://pbs.proxmox.com/docs/prune-simulator/index.html
On PBS (v3.2-2), I have a prune policy setting like this:
Code:
keep-daily 30
keep-hourly 24
keep-last 3
keep-monthly 12
keep-weekly 4
keep-yearly 2
IIUC, this should keep a copy of the last day of the month for 12 months and for the last day of the year. If you configure this parameters in prune simulator [1] it does confirm this.
PBS is removing that last backup of the last day of the month of all VMs. Focusing on the backup of VM 1008, I looked in logs to find when the backup of 2025-02-28 was removed. That happened on 2025-03-04 "remove vm/1008/2025-02-28T23:11:02Z":
/var/log/proxmox-backup/tasks# find . -type f -name "*prune*" -exec grep -H 'remove vm/1008/2025-02-28T' {} \;
Code:
./F0/UPID:PBS01:00000AFC:000007F0:00005384:67C75BC0:prunejob:DS01:root@pam::2025-03-04T21:00:00+01:00: remove vm/1008/2025-02-28T11:11:03Z
./F0/UPID:PBS01:00000AFC:000007F0:00005384:67C75BC0:prunejob:DS01:root@pam::2025-03-04T21:00:00+01:00: remove vm/1008/2025-02-28T14:11:01Z
./F0/UPID:PBS01:00000AFC:000007F0:00005384:67C75BC0:prunejob:DS01:root@pam::2025-03-04T21:00:00+01:00: remove vm/1008/2025-02-28T17:11:02Z
./F0/UPID:PBS01:00000AFC:000007F0:00005384:67C75BC0:prunejob:DS01:root@pam::2025-03-04T21:00:00+01:00: remove vm/1008/2025-02-28T23:11:02Z
./F0/UPID:PBS01:00000AFC:000007F0:00004CBB:67C60A40:prunejob:DS01:root@pam::2025-03-03T21:00:00+01:00: remove vm/1008/2025-02-28T02:11:02Z
./F0/UPID:PBS01:00000AFC:000007F0:00004CBB:67C60A40:prunejob:DS01:root@pam::2025-03-03T21:00:00+01:00: remove vm/1008/2025-02-28T05:11:02Z
./F0/UPID:PBS01:00000AFC:000007F0:00004CBB:67C60A40:prunejob:DS01:root@pam::2025-03-03T21:00:00+01:00: remove vm/1008/2025-02-28T08:11:02Z
./F0/UPID:PBS01:00000AFC:000007F0:00011ED0:67EEDAB0:prunejob:DS01:root@pam::2025-04-03T21:00:00+02:00: remove vm/1008/2025-02-28T20:11:03Z
I've checked other PBS servers and this seems to affect other versions too: the last backup of each month isn't always the last backup of the last day of the month. This seems to work ok for daily and weekly retentions, were the last backup of each period is kept correctly. There are no prune policies in PVE and all PVE reach PBS with a user that only has Datastore.Audit and Datastore.Backup, so there is no chance that PVE can prune backups.
Why is it removing those backups? I really need RPO predictability, specially in long term backups.
[1] https://pbs.proxmox.com/docs/prune-simulator/index.html