Restic e quota ZFS¶
Il problema¶
Un repository Restic su un dataset ZFS con quota si riempie in poche settimane, anche se i dati salvati cambiano poco.
Le due cause¶
Dump compressi. Un dump di database passato in gzip cambia quasi per intero a ogni esecuzione, anche se i dati sono gli stessi. Restic deduplica a blocchi: su un file compresso non trova blocchi uguali e ricarica tutto ogni notte.
forget senza prune. restic forget toglie gli snapshot dall'elenco ma non libera spazio. Lo spazio torna solo con prune.
La correzione¶
- Salvare i dump non compressi: Restic comprime e deduplica da solo.
- Usare
forget --prunecon la politica di conservazione:
pg_dump -U utente database > staging/database.sql
restic forget --prune --keep-daily 7 --keep-weekly 5 --keep-monthly 6
Il dump non compresso occupa più spazio sul disco di partenza: va previsto.
Se la quota è già piena¶
prune ha bisogno di spazio per lavorare, e su un dataset pieno fallisce.
- Alzare la quota temporaneamente:
zfs set quota=300G pool/backup. restic prune.restic check.- Eliminare gli snapshot ZFS del dataset. Gli snapshot trattengono i blocchi appena liberati e contano nella quota: senza questo passo lo spazio non scende.
- Riportare la quota al valore di prima.
Come accorgersene prima¶
Guardare la dimensione aggiunta da ogni snapshot (restic stats --mode raw-data): se cresce ogni notte di una quantità simile alla dimensione di un dump, la causa è la prima.