Come configurare la potatura e la compattazione di Borg senza lunghe interruzioni dei backup

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Per evitare lunghi intervalli tra i backup Borg, esegui il pruning della conservazione dopo un backup riuscito, ma pianifica la compattazione del repository meno spesso e al di fuori della finestra principale dei backup. Borg 1.4 separa l'eliminazione degli archivi dal recupero fisico dello spazio, quindi non è necessario eseguire borg compact dopo ogni borg prune.

Questa guida è destinata all'attuale modello di comandi stabile di Borg 1.4.x. Borg 2 modifica la semantica dei repository e degli archivi in diversi ambiti, quindi verifica la versione installata prima di copiare l'automazione da un'altra versione principale.

Conferma la versione di Borg e il repository

borg --version
borg info /mnt/backup/borg-repo
borg list /mnt/backup/borg-repo

Le FAQ di Borg indicano che Borg utilizza un blocco a livello di repository e che un solo processo alla volta può avere accesso in scrittura. Se una lunga compattazione si sovrappone al backup pianificato successivo, il backup attende il blocco oppure non riesce quando scade il timeout del blocco.

Definisci prima la conservazione con una simulazione

borg prune è distruttivo per la cronologia degli archivi. La documentazione di Borg sul pruning raccomanda vivamente di eseguire prima i test con --dry-run e --list.

borg prune   --dry-run   --list   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   /mnt/backup/borg-repo

Se un repository contiene backup provenienti da più macchine o dataset, il filtro degli archivi è essenziale. Senza un filtro restrittivo, Borg 1.4 considera tutti gli archivi del repository come candidati per le stesse regole di conservazione.

Esegui il pruning solo dopo un backup riuscito

#!/bin/sh
set -eu
REPO=/mnt/backup/borg-repo
ARCHIVE='{hostname}-{now:%Y-%m-%d_%H-%M}'

borg create --stats "$REPO::$ARCHIVE" /srv/data

borg prune   --list   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   "$REPO"

Non eseguire prune perché si è attivata una pianificazione; eseguilo perché un nuovo backup è stato completato correttamente e il criterio di conservazione è già stato convalidato.

-15% OFF

Comprendi perché prune non libera immediatamente spazio

A partire da Borg 1.2, la compattazione è separata dai normali comandi di scrittura del repository. Le note sulla compattazione separata di Borg spiegano che l'eliminazione o il pruning degli archivi non recuperano immediatamente tutto lo spazio su disco del repository.

borg create
    |
nuovo archivio salvato
    |
borg prune
    |
vecchi archivi rimossi dal gruppo di conservazione
    |
borg compact
    |
spazio inutilizzato dei segmenti recuperato

È utile per la pianificazione, perché i backup giornalieri non devono sostenere l'intero costo della riscrittura dei segmenti del repository utilizzati solo parzialmente.

Pianifica compact meno frequentemente di prune

  • backup: ogni notte;
  • prune: dopo ogni backup completato correttamente o alcune volte alla settimana;
  • compact: una volta alla settimana durante un periodo di inattività;
  • controllo completo del repository: con una pianificazione separata e meno frequente.
# Backup e prune giornalieri
0 1 * * * /usr/local/sbin/borg-backup

# Compattazione settimanale
0 4 * * 0 /usr/local/sbin/borg-compact

Se i backup vengono eseguiti spesso per diverse ore, distanzia maggiormente la compattazione oppure usa un timer con dipendenze esplicite.

Usa la soglia predefinita di compact prima di forzare il numero massimo di riscritture

La documentazione attuale di compact utilizza una soglia predefinita del 10%.

borg compact --progress /mnt/backup/borg-repo

Questa impostazione predefinita è un buon punto di partenza quando la priorità è una breve finestra di manutenzione. Evita di usare automaticamente --threshold 0; riscrive ogni volta che è possibile recuperare spazio e può essere significativamente più lento su un repository di grandi dimensioni.

Evita che la manutenzione entri in conflitto con il backup successivo

Se un processo può legittimamente attendere un altro processo Borg, imposta un'attesa del blocco con limite:

borg --lock-wait 1800 create   /mnt/backup/borg-repo::'{hostname}-{now}'   /srv/data

Non usare un'attesa del lock molto lunga come sostituto di una buona pianificazione. Monitora quando il backup inizia e termina effettivamente.

Se più client condividono un repository, sfalsa le relative pianificazioni. Le FAQ di Borg indicano che più repository possono ridurre la contesa per i lock quando la deduplicazione tra client non è importante.

Usa Quick Stats quando i report rallentano prune

Aggiunto in Borg 1.4.5 --quick-stats per creare, eliminare ed eseguire prune, evitando statistiche più lente sull'intero repository quando non sono necessarie.

borg prune   --quick-stats   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   /mnt/backup/borg-repo

Mantieni spazio libero disponibile prima di aver bisogno di compact

Non aspettare che il file system del repository esaurisca lo spazio libero. Borg non può eseguire in modo affidabile le normali operazioni di scrittura del repository su un file system completamente pieno.

df -h /mnt/backup
borg info /mnt/backup/borg-repo

Per un piano di backup NAS più ampio, la guida al backup 3-2-1 di ZimaOS ricorda utilmente che la conservazione del repository è solo un livello della progettazione del backup.

Convalida la pianificazione prima di affidarti a essa

  • Ogni backup ha creato un nuovo archivio?
  • prune è stato eseguito solo dopo backup completati correttamente?
  • L'insieme di conservazione corrispondeva al piano di simulazione?
  • La compattazione settimanale è terminata prima del backup successivo?
  • Lo spazio libero è aumentato dopo compact?
  • Un processo ha impiegato un tempo imprevisto in attesa del lock di Borg?

Se compact si sovrappone ripetutamente al backup successivo, riduci la frequenza della compattazione, mantieni la soglia predefinita, sposta compact in una fascia oraria più tranquilla oppure separa i carichi di lavoro non correlati in repository distinti.

Un modello Borg di manutenzione con intervalli ridotti

GIORNALIERO
01:00  borg create
        |
        +-- successo --> borg prune
        |
        +-- errore --> mantieni gli archivi precedenti, invia un avviso

SETTIMANALE
04:00  borg compact

PERIODICO
        borg check
        ripristina i file selezionati

La regola fondamentale è semplice: prune protegge la politica di conservazione; compact recupera spazio di archiviazione; non devono essere eseguiti con la stessa frequenza.

Supporto e consigli

Altro da leggere

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.