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.
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.
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 7keep-weekly 4keep-monthly 6 |
Mały datastore lub krótka historia odtwarzania |
| Zrównoważona | keep-daily 14keep-weekly 8keep-monthly 12 |
Typowe kopie maszyn wirtualnych i kontenerów |
| Długoterminowa | keep-daily 30keep-weekly 12keep-monthly 24keep-yearly 3 |
Większy datastore lub historia wymagana przepisami |
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.
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
- Otwórz interfejs webowy Proxmox Backup Server.
- Wybierz Datastore.
- Wybierz
<DATASTORE_NAME>. - Otwórz kartę Prune & GC.
- Kliknij Add Prune Job.
- Ustaw Datastore na
<DATASTORE_NAME>. - Ustaw Namespace, jeśli chcesz wykonać prune tylko jednej przestrzeni nazw.
- Skonfiguruj wartości retencji, na przykład
keep-dailyjako14,keep-weeklyjako8ikeep-monthlyjako12. - Ustaw harmonogram, na przykład
03:00. - 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.
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.
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.
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