Proxmox Backup Server: Prune i Garbage Collection | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Proxmox Backup Server: garbage Collection i Prune

Wprowadzenie

W tym poradniku dowiesz się, jak skonfigurować konserwację Proxmox Backup Server pod kątem długoterminowego przechowywania kopii zapasowych za pomocą zadań prune i garbage collection. Skonfigurujesz prune w Proxmox, zaplanujesz garbage collection w Proxmox i oszacujesz zużycie przestrzeni, aby datastore nie rósł, aż zajmie całe dostępne miejsce na dysku.

Po zakończeniu poradnika będziesz mieć zaplanowaną politykę prune i harmonogram garbage collection dla datastore Proxmox Backup Server, wraz z praktycznymi przykładami retencji dla kopii dziennych, tygodniowych i miesięcznych.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz:

  • Proxmox Backup Server w wersji 4.2.x lub nowszej
  • Skonfigurowany datastore PBS z istniejącymi lub planowanymi kopiami zapasowymi
  • Dostęp administratora do interfejsu webowego Proxmox Backup Server
  • Dostęp do powłoki jako root lub inny użytkownik z wystarczającymi uprawnieniami administracyjnymi PBS
  • Podstawową wiedzę o zadaniach kopii zapasowych Proxmox VE i przestrzeniach nazw (namespace) PBS
  • Około 30 minut na wykonanie konfiguracji

Ten poradnik jest przeznaczony dla administratorów systemów na poziomie średniozaawansowanym.

Krok 1: Zrozum, jak współpracują prune i garbage collection

W Proxmox Backup Server przycinanie (prune) i garbage collection to osobne operacje konserwacyjne. Zrozumienie ich współpracy jest kluczowe dla skutecznego zarządzania datastore w Proxmox.

Zadanie prune decyduje, które snapshoty kopii zapasowych zachować, a które usunąć z widocznej historii kopii. Gdy PBS wykonuje prune snapshotu, usuwa jego metadane, indeksy, logi i notatki. Nie usuwa natomiast od razu nieużywanych chunków kopii zapasowych. Chunki, do których odwoływały się usunięte snapshoty, są usuwane później przez garbage collection.

Garbage collection (GC) zwalnia miejsce w datastore, usuwając nieużywane chunki z magazynu chunków. PBS używa zdeduplikowanych chunków, więc jeden chunk może być wskazywany przez wiele snapshotów kopii. Z tego powodu PBS nie może bezpiecznie usunąć chunków dokładnie w momencie wykonania prune snapshotu. Najpierw musi potwierdzić, że żaden pozostały snapshot ani uruchomiona kopia zapasowa się do nich nie odwołuje.

Info

Prune usuwa stare wpisy snapshotów kopii zapasowych. GC odzyskuje faktyczne miejsce na dysku.

PBS stosuje także okres karencji (grace period) przy usuwaniu chunków. Podczas GC chunki są oznaczane i usuwane (mark and sweep), ale chunki objęte okresem karencji są raportowane jako oczekujące na usunięcie (pending removals) i nie są kasowane od razu. Chroni to uruchomione kopie zapasowe i uwzględnia sposób działania czasów dostępu do plików w systemie plików, zwłaszcza przy powszechnie stosowanym montowaniu z opcją relatime.

Krok 2: Sprawdź bieżącą konfigurację datastore

Możesz to zrobić zarówno przez CLI, jak i przez interfejs webowy.

Wyświetl dostępne datastore:

proxmox-backup-manager datastore list

Oczekiwane wyjście: tabela z listą datastore.

Wybierz datastore, w którym przechowywane są kopie zapasowe Proxmox VE. W poniższych przykładach zastąp <DATASTORE_NAME> nazwą swojego datastore.

Sprawdź bieżący stan garbage collection:

proxmox-backup-manager garbage-collection status <DATASTORE_NAME>

Powinieneś zobaczyć bieżący stan GC dla datastore. Jeśli GC nigdy nie była uruchamiana, wyjście może nie pokazywać żadnego wcześniejszego udanego uruchomienia.

Wyświetl istniejące zadania prune:

proxmox-backup-manager prune-job list

Powinieneś zobaczyć istniejące zadania prune lub pustą listę, jeśli żadne zadanie nie zostało skonfigurowane.

Aby zweryfikować to w interfejsie webowym, przejdź do Datastore - <DATASTORE_NAME> - Prune & GC Jobs:

Krok 3: Zaplanuj długoterminową politykę retencji kopii zapasowych

Polityka retencji powinna odpowiadać wymaganiom odtwarzania i pojemności przestrzeni. W wielu planach retencji kopii Proxmox praktyczna polityka długoterminowa opiera się na schemacie dziadek-ojciec-syn (grandfather-father-son):

Opcja retencji Przykładowa wartość Wynik
keep-daily 14 Zachowuje jedną kopię dziennie przez 14 dni, w których wykonano kopie
keep-weekly 8 Zachowuje jedną kopię tygodniowo przez 8 tygodni, w których wykonano kopie
keep-monthly 12 Zachowuje jedną kopię miesięcznie przez 12 miesięcy, w których wykonano kopie
keep-yearly 2 Zachowuje jedną kopię rocznie przez 2 lata, w których wykonano kopie

Opcje retencji PBS są przetwarzane według przedziałów czasu (time buckets). Na przykład keep-daily zachowuje najnowszą kopię z każdego zachowywanego dnia, a dni bez kopii nie są liczone. keep-weekly zachowuje najnowszą kopię z każdego zachowywanego tygodnia ISO, a tygodnie bez kopii nie są liczone.

Warning

Nie obliczaj retencji jako prostej sumy bez uwzględnienia nakładania się reguł. Jedna kopia może jednocześnie spełniać reguły dzienne, tygodniowe, miesięczne i roczne, więc dokładna liczba zachowanych snapshotów zależy od znaczników czasu kopii.

Dla dziennego harmonogramu kopii zapasowych zacznij od jednej z poniższych polityk:

Polityka Ustawienia retencji Zastosowanie
Zachowawcza keep-daily 7
keep-weekly 4
keep-monthly 6
Mały datastore lub krótka historia odtwarzania
Zrównoważona keep-daily 14
keep-weekly 8
keep-monthly 12
Typowe kopie maszyn wirtualnych i kontenerów
Długoterminowa keep-daily 30
keep-weekly 12
keep-monthly 24
keep-yearly 3
Większy datastore lub historia wymagana przepisami

Tip

Skonfiguruj retencję, zanim datastore będzie bliski zapełnienia. Czyszczenie datastore w Proxmox jest bezpieczniejsze, gdy PBS ma jeszcze dość wolnego miejsca na nowe kopie i zadania konserwacyjne.

Krok 4: Oszacuj zapotrzebowanie na przestrzeń przed zastosowaniem retencji

Planowanie przestrzeni dla długoterminowego przechowywania kopii zapasowych to nie to samo, co pomnożenie pełnego rozmiaru maszyny wirtualnej przez liczbę snapshotów. Proxmox Backup Server stosuje deduplikację, więc każda nowa kopia zazwyczaj zapisuje tylko zmienione chunki oraz metadane. Mimo to warto wykonać ostrożne oszacowanie.

Użyj tego wzoru:

Szacowana przestrzeń = początkowe chronione dane + dziennie zmieniane dane * ekwiwalent zachowywanych dni + margines bezpieczeństwa

Przykład 1: Zrównoważona retencja dla grupy maszyn wirtualnych:

Wartość Przykład
Chronione dane maszyn wirtualnych 2 TB
Średnia dzienna ilość zmienianych danych 80 GB
Polityka retencji 14 dziennych · 8 tygodniowych · 12 miesięcznych
Margines bezpieczeństwa 25 procent

Przybliżona liczba zachowywanych punktów zmian:

14 daily + 8 weekly + 12 monthly = 34 restore points

Przybliżona ilość zmienionych danych:

80 GB * 34 = 2720 GB

Przybliżona suma przed doliczeniem marginesu:

2000 GB + 2720 GB = 4720 GB

Dodaj 25-procentowy margines bezpieczeństwa:

4720 GB * 1.25 = 5900 GB

Dla tego obciążenia zaplanuj około 6 TB użytecznej pojemności datastore.

Przykład 2: Polityka dla mniejszego datastore:

Wartość Przykład
Chronione dane maszyn wirtualnych 1 TB
Średnia dzienna ilość zmienianych danych 30 GB
Polityka retencji 7 dziennych · 4 tygodniowe · 6 miesięcznych
Margines bezpieczeństwa 25 procent

Przybliżona liczba punktów przywracania:

7 + 4 + 6 = 17 restore points

Przybliżona wymagana przestrzeń:

1000 GB + (30 GB * 17) = 1510 GB 1510 GB * 1.25 = 1887.5 GB

Dla tego obciążenia zaplanuj około 2 TB użytecznej pojemności datastore.

Info

Te przykłady są celowo ostrożne. Rzeczywiste zużycie PBS może być niższe, ponieważ deduplikacja pozwala ponownie wykorzystywać chunki między wieloma snapshotami i między podobnymi systemami.

Krok 5: Utwórz zadanie prune w interfejsie webowym

  1. Otwórz interfejs webowy Proxmox Backup Server.
  2. Wybierz Datastore.
  3. Wybierz <DATASTORE_NAME>.
  4. Otwórz kartę Prune & GC.
  5. Kliknij Add Prune Job.
  6. Ustaw Datastore na <DATASTORE_NAME>.
  7. Ustaw Namespace, jeśli chcesz wykonać prune tylko jednej przestrzeni nazw.
  8. Skonfiguruj wartości retencji, na przykład keep-daily jako 14, keep-weekly jako 8 i keep-monthly jako 12.
  9. Ustaw harmonogram, na przykład 03:00.
  10. Zapisz zadanie prune.

Oczekiwany rezultat: PBS tworzy zaplanowane zadanie prune dla datastore lub przestrzeni nazw. Zadanie to okresowo usuwa snapshoty kopii zapasowych, które nie są już wybierane przez politykę retencji.

Krok 6: Utwórz zadanie prune z wiersza poleceń

To samo zadanie prune możesz utworzyć również z poziomu powłoki PBS.

Dla zadania prune obejmującego cały datastore:

proxmox-backup-manager prune-job create pve-longterm \ --store <DATASTORE_NAME> \ --schedule "03:00" \ --keep-daily 14 \ --keep-weekly 8 \ --keep-monthly 12 \ --comment "Long-term Proxmox backup retention"

Oczekiwany rezultat: PBS tworzy zadanie prune o nazwie pve-longterm.

Dla zadania prune przypisanego do konkretnej przestrzeni nazw:

proxmox-backup-manager prune-job create pve-namespace-longterm \ --store <DATASTORE_NAME> \ --ns <NAMESPACE> \ --schedule "03:00" \ --keep-daily 14 \ --keep-weekly 8 \ --keep-monthly 12 \ --comment "Long-term retention for namespace"

Oczekiwany rezultat: PBS wykonuje prune tylko wybranej przestrzeni nazw. Jest to przydatne, gdy różne klastry, dzierżawcy (tenants) lub środowiska wymagają odmiennych polityk retencji.

Wyświetl zadanie prune:

proxmox-backup-manager prune-job list

Oczekiwane wyjście: tabela z listą zadań czyszczenia kopii zapasowych Proxmox.

Krok 7: Skonfiguruj harmonogram garbage collection

Po tym, jak prune usunie metadane starych snapshotów, GC musi zostać uruchomiona, aby odzyskać miejsce zajmowane przez nieużywane chunki. Cotygodniowy harmonogram GC to dobry punkt wyjścia dla większości konfiguracji.

Ustaw cotygodniowy harmonogram GC:

proxmox-backup-manager datastore update <DATASTORE_NAME> \ --gc-schedule "Sun 04:00"

Możesz to skonfigurować w interfejsie webowym, przechodząc do Datastore - <DATASTORE_NAME> - Prune & GC Jobs → Garbage Collection Jobs → Edit:

Oczekiwany rezultat: PBS planuje garbage collection dla datastore w każdą niedzielę o 04:00.

Sprawdź stan GC:

proxmox-backup-manager garbage-collection status <DATASTORE_NAME>

Oczekiwane wyjście zawiera nazwę datastore oraz informacje o ostatnim lub następnym uruchomieniu GC.

GC możesz też uruchomić ręcznie:

proxmox-backup-manager garbage-collection start <DATASTORE_NAME>

Oczekiwany rezultat: PBS uruchamia zadanie GC dla datastore.

Warning

Nie oczekuj, że GC usunie każdy nieużywany chunk natychmiast po prune. PBS może raportować niektóre chunki jako oczekujące na usunięcie (pending removals), dopóki nie upłynie okres karencji.

Krok 8: Wybierz bezpieczny harmonogram prune i GC

Praktyczny harmonogram wygląda następująco:

Zadanie Przykładowy harmonogram Uzasadnienie
Zadanie kopii zapasowej Proxmox VE

Codziennie o 01:00

Najpierw tworzy nowe kopie
Zadanie prune PBS

Codziennie o 03:00

Usuwa snapshoty spoza retencji
Zadanie GC PBS

Co tydzień w niedzielę o 04:00

Odzyskuje nieużywane chunki po prune

Ta kolejność sprawia, że nowe kopie są dostępne, zanim stare snapshoty zostaną usunięte. Daje też PBS czas na dokończenie zapisu kopii przed uruchomieniem zadań prune i GC.

W mocno obciążonych środowiskach unikaj jednoczesnego uruchamiania zadań kopii zapasowych, weryfikacji, prune, synchronizacji i GC. Rozłóż zadania konserwacyjne w czasie, aby ograniczyć rywalizację o zasoby I/O.

Tip

Jeśli datastore codziennie otrzymuje wiele kopii zapasowych, zacznij od cotygodniowej GC. Jeśli datastore szybko się zapełnia po prune, rozważ częstsze uruchamianie GC, ale monitoruj wpływ na I/O.

Krok 9: Zweryfikuj konfigurację

Wyświetl zadania prune:

proxmox-backup-manager prune-job list

Upewnij się, że zadanie ma oczekiwany datastore, przestrzeń nazw, harmonogram i wartości keep.

Wyświetl jedno zadanie prune:

proxmox-backup-manager prune-job show pve-longterm

Oczekiwany rezultat: PBS wyświetla skonfigurowane opcje retencji.

Sprawdź konfigurację GC:

proxmox-backup-manager garbage-collection list

Oczekiwany rezultat: PBS wyświetla stan garbage collection dla wszystkich datastore, także tych bez zadań GC.

Sprawdź zajętość datastore w interfejsie webowym:

  • Otwórz Datastore.
  • Wybierz <DATASTORE_NAME>.
  • Sprawdź zajętość datastore i historię zadań.
  • Otwórz Tasks i upewnij się, że zadania prune i GC kończą się powodzeniem.

Oczekiwany rezultat: datastore wykazuje zaplanowaną aktywność konserwacyjną, a stare snapshoty są usuwane zgodnie ze skonfigurowanym prune w Proxmox.

Krok 10: Monitoruj przyrost zajętości przestrzeni w czasie

Po skonfigurowaniu zadań prune w PBS monitoruj zajętość przestrzeni przez co najmniej jeden pełny cykl retencji. Na przykład jeśli skonfigurujesz keep-monthly 12, potrzebujesz danych z kilku miesięcy, zanim długoterminowy trend stanie się czytelny.

Sprawdzaj następujące metryki:

Metryka Co sprawdzić
Zajęta przestrzeń datastore Potwierdza, czy optymalizacja przestrzeni kopii zapasowych działa
Logi zadań prune Potwierdzają, że snapshoty są usuwane
Logi zadań GC Potwierdzają, że nieużywane chunki są usuwane
Oczekujące usunięcia (pending removals) Wskazują chunki czekające na zakończenie okresu karencji GC
Trend rozmiaru zadań kopii zapasowych Pokazuje, czy ilość zmienianych danych rośnie

Jeśli datastore rośnie szybciej, niż oczekiwano, zmniejsz retencję lub dodaj przestrzeń, zanim system plików się zapełni.

Typowe korekty:

Problem Korekta
Datastore zapełnia się zbyt szybko Zmniejsz keep-daily, keep-weekly lub keep-monthly
Zbyt mało ostatnich punktów przywracania Zwiększ keep-daily
Historia miesięczna jest zbyt krótka Zwiększ keep-monthly
Kopie zapasowe nakładają się na konserwację Przenieś prune lub GC na późniejszą porę
GC zwalnia niewiele miejsca Sprawdź, czy zadania prune faktycznie usuwają stare snapshoty

Cofanie zmian

Aby usunąć zadanie prune:

proxmox-backup-manager prune-job remove pve-longterm

Oczekiwany rezultat: PBS usuwa konfigurację zadania prune.

Aby wyłączyć harmonogram GC bez usuwania datastore:

proxmox-backup-manager datastore update <DATASTORE_NAME> \ --delete gc-schedule

Oczekiwany rezultat: PBS usuwa automatyczny harmonogram GC dla datastore.

Aby zmienić retencję zamiast usuwać zadanie prune:

proxmox-backup-manager prune-job update pve-longterm \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 6

Oczekiwany rezultat: PBS zachowuje zadanie prune, ale stosuje nową politykę retencji podczas kolejnych uruchomień prune.

Warning

Cofnięcie polityki prune nie przywraca snapshotów, które zostały już usunięte. Gdy snapshot zostanie usunięty, a jego chunki później usunięte przez GC, nie można go odtworzyć z PBS.

Rozwiązywanie problemów

GC nie zwalnia miejsca natychmiast

Przyczyna: Prune usunął metadane snapshotów, ale chunki są nadal wskazywane przez inne snapshoty lub objęte okresem karencji GC.
Rozwiązanie: Poczekaj na upływ okresu karencji i uruchom GC ponownie później. Sprawdź logi zadań pod kątem oczekujących usunięć (pending removals).

Prune zachowuje więcej kopii, niż oczekiwano

Przyczyna: keep-daily, keep-weekly i keep-monthly działają na przedziałach czasu. Dni, tygodnie lub miesiące bez kopii nie są liczone. Reguły retencji również się nakładają.
Rozwiązanie: Przed zmianą retencji w środowisku produkcyjnym użyj symulatora prune w PBS. Pozwala on zobaczyć podgląd działania retencji przed zastosowaniem zmian.

Datastore nadal rośnie po prune i GC

Przyczyna: Dzienna ilość zmienianych danych może być większa niż szacowana, kopie mogą obejmować nowe dyski lub retencja może być zbyt duża dla danego datastore.
Rozwiązanie: Przelicz szacunek wolumenu na podstawie rzeczywistej ilości zmienianych danych. Zmniejsz retencję lub rozbuduj przestrzeń.

Zadanie prune nie obejmuje przestrzeni nazw

Przyczyna: Zadanie prune może być skonfigurowane dla niewłaściwej przestrzeni nazw lub niewłaściwej głębokości przestrzeni nazw.
Rozwiązanie: Sprawdź ustawienia zadania prune i potwierdź wartość --ns. Jeśli zadanie ma dotyczyć tylko jednej przestrzeni nazw, ustaw ją jawnie.

Klienci kopii zapasowych nadal mogą usuwać kopie

Przyczyna: Poświadczenia kopii zapasowych mogą mieć uprawnienia do usuwania lub retencja może być skonfigurowana poza PBS.
Rozwiązanie: Stosuj zasadę najmniejszych uprawnień dla klientów kopii zapasowych. Dla odporności na ransomware preferuj zadania prune po stronie PBS zamiast nadawania klientom uprawnień do usuwania.

Podsumowanie

Skonfigurowałeś konserwację Proxmox Backup Server pod kątem długoterminowej retencji, tworząc zadanie prune i planując garbage collection. Dowiedziałeś się też, dlaczego chunki nie są usuwane natychmiast, jak GC kończy czyszczenie datastore oraz jak oszacować zapotrzebowanie na przestrzeń przed zastosowaniem retencji długoterminowej. Te praktyki wspierają optymalizację kopii zapasowych Proxmox, poprawiając efektywność wykorzystania przestrzeni i zapewniając przewidywalną, łatwą w zarządzaniu retencję kopii.

W kolejnych krokach dodaj zadania weryfikacji, skonfiguruj powiadomienia o nieudanych zadaniach prune i GC oraz co miesiąc sprawdzaj przyrost datastore. Dzięki temu optymalizacja przestrzeni kopii zapasowych pozostanie przewidywalna, a ustawienia retencji nie zajmą po cichu całej dostępnej pojemności.

Wersja dokumentu: 1.0
Ostatnia aktualizacja: czerwiec 2026
Właściciel: Zespół dokumentacji technicznej

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA