BackupZit

Jak robić kopie zapasowe maszyn wirtualnych Proxmox VE

Kompletny poradnik: od pustego węzła Proxmox do zaplanowanych, szyfrowanych i deduplikowanych kopii wszystkich VM i kontenerów — z kopią poza siedzibą, automatycznymi testami przywracania i maszyną, która w razie potrzeby w kilka sekund działa prosto z kopii.

Co skonfigurujesz

BackupZit tworzy kopie maszyn wirtualnych (QEMU) i kontenerów (LXC) Proxmox VE bez instalowania czegokolwiek w gościach. Mały agent działa na każdym węźle Proxmox, robi tymczasowy snapshot każdego gościa, odczytuje jego dyski i zapisuje je w wybranym magazynie. Konsola webowa planuje zadania, przechowuje historię i uruchamia przywracanie.

Proxmox VE ma też własne narzędzia: vzdump i Proxmox Backup Server. Jeśli używasz tylko Proxmoxa, to dobry i darmowy wybór. BackupZit ma sens, gdy chcesz jednej konsoli dla Proxmoxa oraz serwerów Windows i Linux, VMware, Hyper-V, baz danych i Microsoft 365, albo funkcji takich jak kopie sprawdzane testem uruchomienia i repliki w innym klastrze.

Czego potrzebujesz

  • Jednego lub więcej węzłów z Proxmox VE 7, 8 lub 9 (są oparte na Debianie, więc pasuje pakiet Debian agenta).
  • Miejsca na konsolę BackupZit: mała maszyna wirtualna Linux z 2 vCPU, 2–4 GB RAM i dyskiem 16–20 GB. Konsola sama nie przechowuje danych kopii, więc może działać jako VM w tym samym klastrze.
  • Magazynu na kopie poza węzłem Proxmox — na przykład serwer Linux lub NAS przez SFTP, udział SMB, zasobnik zgodny z S3 albo wzmocnione repozytorium BackupZit (hardened repository). Agenci zapisują do niego bezpośrednio.
  • Sieć: agenci łączą się z konsolą na porcie TCP 8443.

Krok 1 — Zainstaluj konsolę

Najszybciej na Proxmoxie jest użyć gotowego obrazu appliance backupzit-appliance.qcow2 ze strony pobierania (Debian, PostgreSQL i konsola, już skonfigurowane):

  1. Utwórz VM bez dysku: 2 vCPU, 2–4 GB RAM, sieć VirtIO.
  2. Skopiuj backupzit-appliance.qcow2 na węzeł i zaimportuj jako dysk VM (zastąp <vmid>):
    qm importdisk <vmid> backupzit-appliance.qcow2 local-lvm
  3. Podłącz zaimportowany dysk jako SCSI, ustaw go jako dysk rozruchowy i włącz QEMU guest agent w opcjach VM.
  4. Uruchom VM. Na jej ekranie widać adres konsoli webowej i początkowe hasło użytkownika admin. Otwórz https://<adres>:8443, zaloguj się i zmień hasło.

Na ekranie maszyny możesz zalogować się jako bzadmin i ustawić stały adres, nazwę serwera i strefę czasową (appliance startuje w UTC, a harmonogramy działają w strefie czasowej konsoli). Wolisz istniejący serwer Debian, Ubuntu, AlmaLinux lub Rocky Linux? Jednolinijkowy skrypt instalacyjny ze strony pobierania zrobi tam to samo.

Krok 2 — Dodaj miejsce docelowe

W konsoli otwórz Magazyn i dodaj miejsce docelowe. Typowe wybory dla kopii Proxmoxa:

TypDobry do
SFTPDowolnego serwera Linux lub NAS z SSH; klucz hosta serwera jest przypinany.
Udział SMBSerwerów plików Windows, NAS Synology lub QNAP (SMB 2/3).
Zgodny z S3Kopii poza siedzibą: AWS S3, Wasabi, Backblaze B2, MinIO, Ceph; niezmienne dzięki Object Lock.
Wzmocnione repozytoriumSerwer Linux z backupzit-repo: kopii nie da się usunąć przed końcem okresu niezmienności.

Pozostaw włączone Szyfruj kopie (AES-256) (domyślnie): wszystko jest szyfrowane AES-256-GCM na węźle, zanim go opuści. Konsola pokaże wtedy klucz odzyskiwania — wydrukuj arkusz odzyskiwania albo zapisz klucz w menedżerze haseł, z dala od kopii. Z kluczem, lokalizacją magazynu i jego danymi dostępowymi przywrócisz dane nawet po utracie konsoli; bez klucza nikt nie odczyta kopii.

Krok 3 — Zainstaluj agenta na każdym węźle

  1. W konsoli otwórz Agenci i kliknij Utwórz token rejestracji. Otrzymasz kod rejestracji (BZ1-…) ważny 7 dni, działający dla dowolnej liczby maszyn.
  2. Pobierz na węzeł pakiet Agent Linux — Debian / Ubuntu ze strony Agenci i uruchom:
    apt install ./backupzit-agent_*.deb
    backupzit-agent enroll --code "BZ1-..."
    systemctl enable --now backupzit-agent
  3. W ciągu minuty węzeł pojawi się na stronie Agenci z oznaczeniem Proxmox VE · N guests.

Agent korzysta z narzędzi samego węzła (qm, pct, pvesm, LVM, ZFS, Ceph). W konsoli nie jest przechowywany żaden token API Proxmoxa ani hasło roota. W klastrze zainstaluj agenta na każdym węźle.

Krok 4 — Utwórz zadanie kopii

  1. Otwórz Zadania kopii, utwórz zadanie i wybierz agenta węzła.
  2. Wybierz Maszyny wirtualne (Proxmox VE, Hyper-V, VMware), a następnie Wszystkie VM (i kontenery) na hoście — goście utworzeni później są dodawani automatycznie — albo zaznacz wybranych gości.
  3. Wybierz miejsce docelowe z kroku 2.
  4. Ustaw harmonogram, na przykład w każdy dzień roboczy o 22:00. Zadania mogą też powtarzać się co 15 minut do 12 godzin, uruchamiać raz w miesiącu albo startować po innym zadaniu.
  5. Ustaw przechowywanie. Przykład: 3 najnowsze, 7 dziennych, 4 tygodniowe, 6 miesięcznych to około pół roku historii i około 20 punktów przywracania.

Co dzieje się przy każdym uruchomieniu:

  1. Tworzony jest tymczasowy snapshot Proxmoxa (backupzit_…); gość działa dalej.
  2. Każdy dysk jest czytany ze snapshotu blokami po 1 MiB. Puste bloki nie są zapisywane, a bloki już obecne w repozytorium nie są wysyłane ponownie — po pierwszej kopii przez sieć idą tylko zmienione dane. Mimo to każda kopia jest pełnym punktem przywracania.
  3. Snapshot jest usuwany. Konfiguracja gościa (CPU, pamięć, sieć, dyski) zapisywana jest razem z kopią.

Ponieważ niezmienione dane zapisywane są tylko raz, długie przechowywanie kosztuje niewiele dodatkowego miejsca.

Które dyski można kopiować przy działającym gościu

Magazyn ProxmoxKopia działającego gościa
LVM-thin (local-lvm)tak, ze snapshotu
ZFS (dyski VM / zvol)tak, ze snapshotu
Ceph RBDtak, ze snapshotu
Katalog, NFS, CIFS z qcow2tak, ze snapshotu
Katalog, NFS, CIFS z raw; gruby LVMnie — zatrzymaj gościa lub przenieś dysk

Zatrzymanych gości można kopiować na wszystkich tych magazynach. Dyski oznaczone Backup: no (backup=0), przekazane dyski fizyczne i bind mounty są pomijane i zgłaszane jako ostrzeżenia.

Krok 5 — Kopie spójne na poziomie aplikacji

Jeśli w VM działa QEMU guest agent i jest włączony w jej opcjach, Proxmox zamraża systemy plików VM na czas snapshotu, więc bazy danych i inne aplikacje są zapisywane w czystym stanie. Bez niego kopia jest spójna jak po awarii — jak po zaniku zasilania.

W VM z Debianem lub Ubuntu:

apt install qemu-guest-agent
systemctl enable --now qemu-guest-agent

W VM z Windows zainstaluj VirtIO guest tools. Następnie włącz agenta dla VM na węźle (zadziała po kolejnym pełnym zatrzymaniu i uruchomieniu VM):

qm set <vmid> --agent enabled=1

Strona każdego uruchomienia pokazuje dla każdego gościa, które dyski zostały odczytane i w jaki sposób gość został zapisany.

Krok 6 — Kopia poza siedzibą (3-2-1)

Zasada 3-2-1: trzy kopie danych, na dwóch różnych nośnikach, jedna poza siedzibą. Dodaj drugie zadanie typu Kopia kopii zapasowej, ze źródłem w zadaniu Proxmoxa i miejscem docelowym poza firmą, np. zasobnikiem S3 z Object Lock lub wzmocnionym repozytorium w innym budynku.

  • Agent kopiuje istniejące kopie; maszyny nie są czytane ponownie.
  • Wysyłane są tylko dane, których jeszcze nie ma w miejscu docelowym, szyfrowane jego kluczem.
  • Domyślnie kopia uruchamia się po każdej kopii zadania źródłowego; można ustawić dowolny harmonogram, np. raz na noc przy wolnym łączu.
  • Kopia ma własne przechowywanie, np. 7 dziennych na NAS i 12 miesięcznych w chmurze.

Z kopii przywraca się VM tak samo jak z oryginału — całe maszyny, pojedyncze pliki i natychmiastowe odtwarzanie. Więcej o niezmiennych kopiach w sekcji ochrona przed ransomware.

Krok 7 — Udowodnij, że kopie się uruchamiają

Czytelne bloki nie dowodzą, że VM nadal się uruchomi. W Ustawienia → Testy przywracania włącz Test uruchomienia dla kopii VM Proxmox. Test przywracania uruchamia wtedy kolejno każdą VM z najnowszej kopii na węźle zadania, prosto z kopii, z nowym ID i odłączonymi kartami sieciowymi, aby nie kolidowała z oryginałem — a potem ją usuwa.

  • VM przechodzi test, gdy jej QEMU guest agent odpowie na czas, czyli system się uruchomił. Maszyny bez guest agenta przechodzą, jeśli działają przez minutę, i są pokazane jako działające, a nie uruchomione.
  • Na czas testu węzeł potrzebuje wolnej pamięci na jedną dodatkową VM.
  • Dodatkowo kontrola danych (domyślnie co miesiąc) czyta wszystkie zapisane dane i porównuje je z sumami kontrolnymi, aby wykryć uszkodzenia samego magazynu, zanim kopia będzie potrzebna.

Przywracanie

Otwórz uruchomienie kopii (ze strony zadania lub z Aktywność) i wybierz Przywróć VM lub kontener.

Cała VM lub kontener

  • Przywracanie na dowolny węzeł z agentem — także węzeł innego klastra.
  • Jako nowy gość z następnym wolnym ID (domyślnie), podczas gdy oryginał nadal działa; kopia dostaje nowe adresy MAC. Albo z pierwotnym ID po usunięciu gościa, opcjonalnie zastępując istniejącego.
  • Wybierz nazwę i magazyn dla dysków oraz to, czy gość ma wystartować po przywróceniu.
  • Każde przywrócenie nadaje VM nowy identyfikator generacji (vmgenid), dzięki czemu kontrolery domeny Windows bezpiecznie wykrywają cofnięcie.

Natychmiastowe odtwarzanie: VM działa w kilka sekund

Zwykłe przywracanie trwa tyle, ile kopiowanie dysków. Z opcją Natychmiast, działając z kopii agent udostępnia dyski z kopii tylko do odczytu i uruchamia nową VM, której zapisy trafiają do lokalnych nakładek. Gdy wszystko jest w porządku, Zakończ przenosi dyski do wybranego magazynu, a VM działa dalej (qm disk move); Odrzuć VM usuwa maszynę i jej zmiany. VM działa tak szybko jak magazyn kopii, więc najlepiej sprawdza się repozytorium na dysku lokalnym lub szybkim udziale sieciowym. Natychmiastowe odtwarzanie dotyczy VM, nie kontenerów.

Pojedyncze pliki

Kliknij Przeglądaj pliki w tabeli gości uruchomienia kopii. Konsola czyta dysk prosto z kopii — niczego wcześniej nie przywraca — i pozwala przeglądać NTFS, ext2/3/4 i XFS, także wewnątrz LVM. Pobierz pliki (kilka jako ZIP) albo przywróć je do folderu na dowolnym agencie. Przeglądanie w konsoli wymaga kopii w magazynie sieciowym (SFTP, S3, SMB, Azure lub wzmocnione repozytorium).

Repliki najważniejszych gości

W sekcji Zaawansowane zadania opcja Utrzymuj repliki maszyn wirtualnych po każdej kopii aktualizuje zatrzymaną kopię każdego gościa na innym węźle lub klastrze. Zapisywane są tylko zmienione bloki — zwykle kilka sekund na kopię. Jeśli gość zostanie utracony, Uruchom replikę startuje go z danymi z ostatniej kopii, bez przywracania.

Z wiersza poleceń

Wszystko działa też bez konsoli, na przykład przy odbudowie węzła po awarii:

backupzit-agent pve list
backupzit-agent pve show    --repo ... latest
backupzit-agent pve restore --repo ... --vmid 100 --new-vmid -1 --storage local-lvm --start latest

Kopia samego hosta Proxmox

Goście to tylko połowa węzła: definicje magazynów, sieć, użytkownicy, zapora, certyfikaty i ustawienia każdej VM i kontenera są w jego konfiguracji. Zabezpiecz ją zwykłym zadaniem Pliki i foldery na agencie węzła, np. codziennie, ze ścieżkami /etc (zawiera /etc/pve, sieć i /etc/hosts) oraz /var/lib/pve-cluster (baza konfiguracji config.db). Aby uzyskać w pełni spójną kopię bazy podczas pracy węzła, dodaj to jako Polecenie przed kopią i uwzględnij też /root/pve-config.db:

# one-time: apt install sqlite3
sqlite3 /var/lib/pve-cluster/config.db ".backup /root/pve-config.db"

Odbudowa uszkodzonego węzła: zainstaluj tę samą wersję Proxmox VE z tą samą nazwą hosta i adresem, zainstaluj agenta, przywróć /etc/network/interfaces i /etc/hosts, zatrzymaj usługę klastra (systemctl stop pve-cluster), przywróć config.db do /var/lib/pve-cluster, uruchom usługę ponownie, a potem przywróć gości. W klastrze ponownie dołącz przeinstalowany węzeł do klastra zamiast przywracać config.db.

Ograniczenia

  • Obsługiwane są Proxmox VE 7, 8 i 9. XCP-ng nie jest obsługiwany.
  • Dyski kontenerów na podwoluminach ZFS nie są jeszcze obsługiwane.
  • Dyski raw na magazynie typu katalog, NFS lub CIFS oraz dyski na grubym LVM można kopiować tylko przy zatrzymanym gościu.
  • W klastrze zadanie kopiuje gości swojego węzła. Gość przeniesiony na inny węzeł jest zgłaszany jako ostrzeżenie — użyj Wszystkie VM (i kontenery) na hoście na każdym węźle, aby przeniesieni goście byli dalej chronieni.
  • Napędy cloud-init nie są zapisywane; przy przywracaniu są odtwarzane z konfiguracji.

Co dalej

BackupZit jest darmowy i open source (AGPLv3), bez limitu VM ani węzłów. Pobierz go, zobacz wszystkie funkcje dla Proxmoxa albo przeczytaj pełny rozdział o Proxmox VE w podręczniku w konsoli. Pytania mile widziane w GitHub Discussions. Firmy mogą skorzystać z płatnego wsparcia MaxZit (tylko po angielsku).