Jak skonfigurować przycinanie i kompaktowanie w Borgu bez długich przerw między kopiami zapasowymi

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Aby uniknąć długich przerw w wykonywaniu kopii zapasowych Borg, uruchamiaj czyszczenie zasad przechowywania po pomyślnym wykonaniu kopii, ale kompaktowanie repozytorium planuj rzadziej i poza głównym oknem tworzenia kopii. Borg 1.4 oddziela usuwanie archiwów od fizycznego odzyskiwania miejsca, dlatego nie ma potrzeby uruchamiania borg compact po każdym borg prune.

Ten poradnik dotyczy aktualnego modelu poleceń Borg 1.4.x stable. Borg 2 zmienia semantykę repozytoriów i archiwów w kilku obszarach, dlatego przed skopiowaniem automatyzacji z innej głównej wersji sprawdź zainstalowaną wersję.

Potwierdź wersję Borg i repozytorium

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

W FAQ Borg zaznaczono, że Borg używa blokady obejmującej całe repozytorium i tylko jeden proces może mieć dostęp zapisu w danym momencie. Jeśli długotrwałe kompaktowanie koliduje z kolejną zaplanowaną kopią zapasową, wykonanie kopii czeka na zwolnienie blokady lub kończy się niepowodzeniem po przekroczeniu limitu czasu oczekiwania na blokadę.

Najpierw zdefiniuj zasady przechowywania za pomocą testowego uruchomienia

borg prune usuwa historię archiwów. Dokumentacja Borg dotyczącą polecenia prune zdecydowanie zaleca testowanie za pomocą opcji --dry-run i --list.

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

Jeśli jedno repozytorium zawiera kopie zapasowe z wielu maszyn lub zbiorów danych, filtr archiwów jest niezbędny. Bez restrykcyjnego filtra Borg 1.4 uznaje wszystkie archiwa w repozytorium za kandydatów do zastosowania tych samych reguł przechowywania.

Uruchamiaj prune tylko po pomyślnym wykonaniu kopii zapasowej

#!/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"

Nie wykonuj prune tylko dlatego, że uruchomił się harmonogram; wykonuj prune, ponieważ nowa kopia zapasowa została pomyślnie ukończona, a zasady przechowywania zostały już zweryfikowane.

-15% OFF

Zrozum, dlaczego Prune nie zwalnia miejsca natychmiast

Od wersji Borg 1.2 kompaktowanie jest oddzielone od zwykłych poleceń zapisujących dane w repozytorium. osobne uwagi dotyczące kompaktowania w Borg wyjaśniają, że usunięcie lub przycięcie archiwów nie powoduje natychmiastowego odzyskania całego miejsca na dysku repozytorium.

borg create
    |
nowe archiwum zatwierdzone
    |
borg prune
    |
stare archiwa usunięte z puli przechowywania
    |
borg compact
    |
odzyskane miejsce w niewykorzystanych segmentach

Jest to przydatne przy planowaniu, ponieważ codzienne kopie zapasowe nie muszą ponosić pełnego kosztu przepisywania częściowo wykorzystanych segmentów repozytorium.

Uruchamiaj Compact rzadziej niż Prune

  • backup: każdej nocy;
  • prune: po każdej pomyślnie wykonanej kopii zapasowej lub kilka razy w tygodniu;
  • compact: raz w tygodniu, w spokojnym okresie;
  • pełne sprawdzanie repozytorium: według osobnego, rzadszego harmonogramu.
# Codzienna kopia zapasowa + prune
0 1 * * * /usr/local/sbin/borg-backup

# Cotygodniowe compact
0 4 * * 0 /usr/local/sbin/borg-compact

Jeśli kopie zapasowe często trwają kilka godzin, zaplanuj compact w większych odstępach lub użyj czasomierza z jawnymi zależnościami.

Użyj domyślnego progu compact przed wymuszeniem maksymalnej liczby przepisań

Aktualna dokumentacja polecenia compact domyślnie używa progu 10%.

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

To dobry punkt wyjścia, gdy priorytetem jest krótki czas konserwacji. Unikaj automatycznego używania --threshold 0; przepisuje dane za każdym razem, gdy można odzyskać choć trochę miejsca, i może działać znacznie wolniej w dużym repozytorium.

Chroń konserwację przed kolizją z następną kopią zapasową

Jeśli zadanie może zgodnie z prawem poczekać na inny proces Borg, ustaw ograniczony czas oczekiwania na blokadę:

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

Nie używaj bardzo długiego czasu oczekiwania na blokadę jako substytutu dobrego harmonogramu. Monitoruj, kiedy kopia zapasowa faktycznie się rozpoczyna i kończy.

Jeśli kilka klientów współdzieli jedno repozytorium, rozłóż ich harmonogramy w czasie. FAQ Borga wskazuje, że wiele repozytoriów może zmniejszyć rywalizację o blokadę, gdy deduplikacja między klientami nie jest istotna.

Używaj szybkich statystyk, gdy raportowanie spowalnia prune

Dodano w Borg 1.4.5 --quick-stats aby tworzyć, usuwać i przycinać archiwa, unikając wolniejszych statystyk obejmujących całe repozytorium, gdy nie są potrzebne.

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

Zachowaj wolne miejsce, zanim będzie potrzebne compact

Nie czekaj, aż system plików repozytorium całkowicie zapełni się i zabraknie wolnego miejsca. Borg nie może niezawodnie wykonywać standardowych operacji zapisu w repozytorium na całkowicie pełnym systemie plików.

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

W szerszym planie tworzenia kopii zapasowych NAS przewodnik ZimaOS tworzenia kopii zapasowych w schemacie 3-2-1 przypomina, że retencja repozytorium to tylko jedna warstwa projektu kopii zapasowych.

Zweryfikuj harmonogram, zanim mu zaufasz

  • Czy każda kopia zapasowa utworzyła nowe archiwum?
  • Czy prune uruchamiało się tylko po pomyślnym wykonaniu kopii zapasowych?
  • Czy zestaw retencji odpowiadał planowi z uruchomienia próbnego?
  • Czy cotygodniowe compact zakończyło się przed kolejną kopią zapasową?
  • Czy po compact zwiększyła się ilość wolnego miejsca?
  • Czy którekolwiek zadanie spędziło niespodziewanie dużo czasu, czekając na blokadę Borg?

Jeśli compact wielokrotnie nakłada się na kolejną kopię zapasową, zmniejsz częstotliwość kompaktowania, zachowaj domyślny próg, przenieś compact na spokojniejsze okno czasowe albo podziel niezależne obciążenia na osobne repozytoria.

Wzorzec konserwacji Borg z minimalnymi przerwami

CODZIENNIE
01:00  borg create
        |
        +-- powodzenie --> borg prune
        |
        +-- niepowodzenie --> zachowaj stare archiwa, wyślij alert

CO TYDZIEŃ
04:00  borg compact

OKRESOWO
        borg check
        przywracanie wybranych plików

Podstawowa zasada jest prosta: prune chroni zasady retencji; compact odzyskuje miejsce; nie muszą być uruchamiane z taką samą częstotliwością.

Wsparcie i wskazówki

Więcej do przeczytania

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.