Użycie polecenia backup do tworzenia rotacyjnych kopio zapasowych maszyn wirtualnych w chmurze NSIS Cloud
Pojęcie Rotacyjne kopie zapasowe w OpenStack odnosi się do strategii tworzenia kopii zapasowych, w której starsze kopie zapasowe są automatycznie usuwane po utworzeniu określonej liczby kopii zapasowych. Zapewnia to, że pamięć masowa nie rośnie w nieskończoność, jednocześnie utrzymując określoną liczbę ostatnich kopii zapasowych na potrzeby odzyskiwania w razie awarii.
Algorytm rotacyjnego tworzenia kopii zapasowych
Tworzenie rotacyjnych kopii zapasowych maszyn wirtualnych to proces składający się z następujących kroków:
- Określenie okresu tworzenia kopii zapasowych
Zazwyczaj codziennie, co tydzień, co miesiąc lub w dowolnym innym przedziale czasowym.
- Definiowanie limitu rotacji
Ile kopii zapasowych ma zostać zachowanych (w całym artykule będziemy odnosić się do tej liczby jako maxN).
- Usuwanie starszych kopii zapasowych
Po osiągnięciu limitu rozpocznie się usuwanie istniejących kopii zapasowych, zwykle najstarszych.
Tworzenie kopii zapasowych a tworzenie obrazów
Istnieją dwa sposoby tworzenia kopii zapasowych w OpenStack. Można to zrobić za pomocą jednego z dwóch poniższych poleceń:
openstack server backup create oraz openstack server image create
Poniżej przedstawiono ich porównanie:
Funkcja |
openstack server backup create |
openstack server image create |
|---|---|---|
Powiązanie z maszyną wirtualną |
Powiązane przy użyciu właściwości backup obrazu |
Powiązane przy użyciu nazwy kopii zapasowej |
Obsługa rotacji |
Rotation with |
Brak wbudowanej obsługi rotacji |
Klasyfikacja w Horizon |
Oznaczony jako obraz |
Oznaczony jako migawka |
Horizon Select Boot Source |
Wybierz Instance Snapshot. |
Wybierz Image |
Zastosowanie |
Używane głównie do tworzenia kopii zapasowych, może być rotowane i zarządzane |
Tworzy pojedynczą migawkę maszyny wirtualnej bez rotacji |
Obsługa przyrostowych kopii zapasowych |
Tak, obsługuje przyrostowe kopie zapasowe |
Nie, zawsze tworzy pełną migawkę |
Wiele harmonogramów rotacji |
Nie, tylko jeden |
Tak (codziennie, co tydzień, co miesiąc itp.) |
Najlepszy scenariusz użytkowania |
Zautomatyzowane strategie tworzenia kopii zapasowych z rotacją |
Przechwytywanie bieżącego stanu maszyny wirtualnej na potrzeby klonowania lub przywracania. |
Możliwość użycia skryptów |
Tak |
Tak |
W tym artykule użyjemy polecenia openstack server backup create w OpenStack do tworzenia rotacyjnych kopii zapasowych maszyn wirtualnych.
Wymagania wstępne
Nr 1 Konto
Jest wymagane konto hostingowe NSIS z dostępem do interfejsu Horizon: https://horizon.cloudferro.com
Nr 2 Maszyna wirtualna, której kopie zapasowe zostaną utworzone
Potrzebna jest maszyna wirtualna, której kopia zapasowa zostanie utworzona. Jeśli jej nie masz, możesz ją utworzyć, postępując zgodnie z jednym z poniższych artykułów:
Aby dowiedzieć się, jak utworzyć maszynę wirtualną Windows, zobacz artykuł Jak utworzyć maszynę wirtualną Windows w OpenStack Horizon i uzyskać do niej dostęp przez konsolę internetową w chmurze NSIS Cloud.
Nazwa maszyny wirtualnej, której kopię zapasową wykonamy w tym artykule, to vm-to-backup. Pamiętaj, aby w całym artykule podać własną nazwę.
Nr 3 Serwer, na którym będzie wykonywany proces tworzenia kopii zapasowej
Potrzebny jest serwer, który będzie wykonywał polecenia tworzenia kopii zapasowych maszyny wirtualnej z Wymagania wstępnego nr 2. Serwer ten może znajdować się w tym samym regionie i chmurze, co instancja, której kopia zapasowa jest tworzona, ale może też znajdować się w zupełnie innej chmurze, na innym hostingu itd.
Dla uproszczenia, niech ten serwer ma nazwę backing-server. Użyj informacji z wymagania wstępnego nr 2, aby utworzyć go jako maszynę Ubuntu 24.04 LTS z własnym adresem Floating IP i dostępną przez SSH.
Nr 4 OpenStackClient zainstalowany na serwerze do tworzenia kopii zapasowych
Musisz mieć zainstalowany OpenStackClient na maszynie backing-server. Zobacz artykuł Jak zainstalować OpenStackClient dla systemu Linux na NSIS.
Tak więc, wchodzisz na maszynę backing-server przez SSH, instalujesz openstack, a następnie używasz tego środowiska do przekazywania poleceń do vm-to-backup.
Nr 5 Instalacja poświadczeń aplikacji
Być może używasz schematu uwierzytelniania dwuskładnikowego, aby logować się jako użytkownik do NSIS. Tutaj tworzymy zautomatyzowane operacje, więc uwierzytelnianie powinno być również zautomatyzowane. Dlatego do automatyzacji będziemy używać poświadczeń aplikacji.
Skorzystaj z artykułu Jak wygenerować lub użyć poświadczeń aplikacji za pośrednictwem CLI na NSIS Cloud, aby dowiedzieć się, jak utworzyć parę poświadczeń aplikacji i umieścić je w pliku clouds.yml.
Skopiuj ten plik do odpowiedniego katalogu na maszynie backing-server.
W tym pliku można przechowywać wiele par poświadczeń. Aby wybrać odpowiednie poświadczenia, użyjemy parametru --os-cloud. W tym artykule użyjemy wartości zastępczej backup_test dla nazwy pary poświadczeń. Upewnij się, że używasz własnych danych za każdym razem, gdy ją widzisz.
W NSIS poświadczenia aplikacji działają w wielu regionach, więc określimy region, którego będziemy używać za pomocą parametru --os-region. Wartością tego parametru jest nazwa używanej chmury, WAW4-1.
Aby przetestować działanie, wykonaj poniższe polecenie, które powinno wyświetlić listę maszyn wirtualnych w projekcie:
openstack server list --os-cloud backup_test --os-region WAW4-1
Zastąp użyte tutaj wartości backup_test i WAW4-1 konkretnymi wartościami ze swojego środowiska.
Nr 6 Znajomość programu cron w systemie Linux
cron to standardowe polecenie systemu Linux służące do wykonywania zadań zgodnie z wcześniej zdefiniowanym harmonogramem. W niektórych częściach tego artykułu będziemy używać tego narzędzia, ale tylko jego najbardziej podstawowych funkcji.
Jeśli cron jest zainstalowany, polecenie
systemctl status cron
wygeneruje następujące dane wyjściowe:
Jeśli cron nie jest zainstalowany, można go zainstalować w następujący sposób:
sudo apt update
sudo apt install cron -y
sudo systemctl enable --now cron
systemctl status cron
Wynik powinien być podobny do powyższej ilustracji.
Podstawowe polecenie służące do wprowadzania lub zmieniania zadań cron to
crontab -e
Domyślnie nastąpi przeniesienie do wstępnie zainstalowanego edytora vim, jednak jeśli chcesz użyć nano, zainstaluj go najpierw:
sudo apt install nano
Aby otworzyć crontab za pomocą edytora**nano**, użyj następującego polecenia:
EDITOR=nano crontab -e
Nr 7 Polecenie openstack server backup create
Podstawowa składnia polecenia CLI do tworzenia kopii zapasowej serwerów jest opisana w artykule Jak wykonać kopię zapasową instancji i pobrać ją na pulpit z hostingu NSIS OpenStack
Utwórz pierwszą kopię zapasową
To polecenie tworzy ręcznie rotacyjne kopie zapasowe. Jego składnia jest następująca:
openstack server backup create \
--name my-backup1 \
--rotate 3 vm-to-backup \
--os-cloud backup_test \
--os-region WAW4-1
W poniższym przykładzie my-backup1 to nazwa kopii zapasowej, a vm-to-backup to maszyna wirtualna, której kopia zapasowa zostanie utworzona. Pozostałe dwa parametry, --os-cloud i --os-region dotyczą chmury i określonego regionu w chmurze.
Jak wyświetlić utworzone kopie zapasowe
Kopie zapasowe tworzone przez to polecenie są obrazami i w Horizon można je wyświetlić w sekcji Compute -> Images. Aby wyświetlić listę obrazów za pomocą interfejsu CLI , wykonaj poniższe polecenie:
openstack image list \
--os-cloud backup_test \
--os-region WAW4-1
Domyślnie to polecenie powinno wyświetlić wszystkie obrazy znalezione w projekcie. Można jednak przefiltrować listę tak, aby wyświetlane były tylko kopie zapasowe utworzone przy użyciu powyższej metody (zakładając, że nie zmieniono właściwości obrazów).
openstack image list \
--property image_type=backup \
--os-cloud backup_test \
--os-region WAW4-1
Dodaj do serii kolejną kopię zapasową
Pierwsza kopia zapasowa w serii rotacyjnych kopii zapasowych została właśnie utworzona. Aby dodać do serii kolejną kopię zapasową, wykonaj to samo polecenie, ale zmień nazwę; w tym przykładzie pierwszą nazwą była my-backup1, a teraz zmieniamy ją na my-backup2:
openstack server backup create \
--name my-backup2 \
--rotate 3 vm-to-backup \
--os-cloud backup_test \
--os-region WAW4-1
Zauważ, że wartość parametru --rotate wynosi tutaj 3, podobnie jak w przypadku pierwszego polecenia. Bardzo ważne jest, aby wartość parametru --rotate była zawsze taka sama, w przeciwnym razie wyniki mogą być nieprzewidywalne.
Teraz będziesz mieć dwie kopie zapasowe tej samej maszyny wirtualnej o nazwach my-backup1 i my-backup2.
Wykonaj polecenie jeszcze raz z nazwą my-backup3. Liczba w parametrze --rotate została osiągnięta, więc następna kopia zapasowa spowoduje usunięcie jednego ze starszych plików. Aby to sprawdzić, wykonaj polecenie o nazwie my-backup4:
Ponownie wyświetl listę z użyciem polecenia
openstack image list \
--property image_type=backup \
--os-cloud backup_test \
--os-region WAW4-1
Pozostały tylko trzy pliki o numerach od 2 do 4.
Problemy i wady poleceń tworzenia kopii zapasowych
Powyższa procedura jest ściśle ręczna – użytkownik musi zainicjować tworzenie nowej kopii zapasowej.
To polecenie nie rozróżnia dziennych, tygodniowych i miesięcznych kopii zapasowych. Ponadto parametr --rotate (tutaj równy 3) powinien być taki sam za każdym razem, gdy polecenie jest wykonywane.
Używasz tej samej nazwy dwa razy?
W przypadku dwukrotnego użycia tego samego kodu w poleceniu backup, kopia zapasowa powinna zostać utworzona z dodatkowym komunikatem:
More than one Image exists with the name 'my-backup1'.
Należy o tym pamiętać przy przywracaniu kopii zapasowej i używać do przywracania id kopii zapasowej zamiast nazwy pliku kopii zapasowej.
Automatyzacja za pomocą zadań cron
Polecenie cron w Ubuntu jest sposobem na zautomatyzowanie tworzenia rotacyjnych kopii zapasowych. Szczegółowe informacje techniczne dotyczące obsługi polecenia cron zawiera sekcja Wymaganie wstępne nr 6.
Otwórz plik crontab, wykonując polecenie
crontab -e
Dodaj zadanie cron, które tworzy kopię zapasową maszyny wirtualnej. Takie zadanie cron może wyglądać następująco:
4 3 * * * openstack server backup create --name "backup_cron_$(date +\%Y-\%m-\%d_\%H-\%M)" --rotate 3 vm-to-backup --os-cloud backup_test --os-region WAW4-1 >> $HOME/log_backup 2>> $HOME/log_backup
To polecenie wyglądałoby tak w edytorze nano:
Jest to bardzo długi wiersz, więc chociaż można go edytować bezpośrednio w nano, lepiej jest edytować polecenie crontab lokalnie, a dopiero potem dostarczyć je zdalnie.
Komentarze wstępnie załadowane w edytorze opisują sposób użycia parametrów. W tym przykładzie dla zadania są określone następujące parametry:
- czas wykonania
Zadanie uruchamia się codziennie o godzinie 3:04 rano (zgodnie ze strefą czasową ustawioną na maszynie wirtualnej, prawdopodobnie UTC+0, jeśli używasz jednego z obrazów domyślnych).
- utworzona kopia zapasowa
Tworzy kopię zapasową maszyny wirtualnej o nazwie vm-to-backup; nazwa kopii zapasowej zawiera następujące elementy:
fraza backup_, po której następuje
bieżąca data w formacie: Rok-Miesiąc-Dzień_Godzina-Minuta, na przykład: 2025-01-21_3-4 (21 stycznia 2025 r.)
- liczba przechowywanych kopii zapasowych
maxN, liczba przechowywanych kopii zapasowych, ma wartość 3.
- para kluczy
Uwierzytelnienie za pomocą pary kluczy backup_test z pliku clouds.yml.
- utrzymywane dzienniki
Dołącza oba typy danych wyjściowych (standardowe komunikaty i standardowe błędy) do pliku log_backup, który zostanie umieszczony w katalogu domowym użytkownika.
Przywracanie kopii zapasowych
W tej sekcji omówiono sposoby przywracania maszyny wirtualnej do poprzedniego stanu z kopii zapasowej.
Przebudowa instancji
Przebudowa instancji polega na zastąpieniu bieżącej zawartości dysku twardego maszyny wirtualnej zawartością obrazu. W tym procesie zachowane zostaną metadane, takie jak nazwa lub identyfikator maszyny wirtualnej. Dotyczy to również adresów Floating IP.
Podczas tego procesu maszyna wirtualna będzie niedostępna.
Aby wyświetlić listę obrazów za pomocą OpenStackClient wykonaj następujące polecenie,
openstack image list --os-cloud backup_test --os-region WAW4-1 --private
Wynik powinien zawierać tylko obrazy kopii zapasowych:
+--------------------------------------+--------------------------------------------+--------+
| ID | Name | Status |
+--------------------------------------+--------------------------------------------+--------+
| 37848a3a-d1ec-479e-a8eb-6cc20f48966f | my-backup1 | active |
| 213813ea-66dd-45a5-a536-4990eb86fdd1 | my-backup2 | active |
+--------------------------------------+--------------------------------------------+--------+
Polecenie przywracania z kopii zapasowej to:
openstack server rebuild --image my-backup2 vm-to-backup --os-cloud backup_test --os-region WAW4-1
W tym poleceniu użyliśmy nazw:
my-backup2 –- zastąp ją identyfikatorem lub nazwą obrazu
vm-to-backup – zastąp ją identyfikatorem (lub nazwą) instancji.
Powinny zostać wyświetlone dane wyjściowe podobne do tych:
+-------------------+----------------------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| accessIPv4 | |
| accessIPv6 | |
| addresses | cloud_079093_1=10.0.0.56; eodata=100.66.18.182 |
| adminPass | zrWv6nfof7Mn |
| created | 2025-10-24T07:35:41Z |
| flavor | eo1.xsmall (eo1.xsmall) |
| hostId | ba802c1d8c7353ca3dd616eada2523116e51fec0e8458fbb6e82e0c2 |
| id | 4db478e9-accd-451a-a398-d49ab9e7c5ae |
| image | my-backup2 (213813ea-66dd-45a5-a536-4990eb86fdd1) |
| name | vm-to-backup |
| progress | 0 |
| project_id | 4b13223c8d4e40ef9b70efd8c15e00ee |
| properties | |
| status | REBUILD |
| updated | 2025-10-24T08:31:21Z |
| user_id | 64265fc37a55407a97d92b8acd9009e8 |
+-------------------+----------------------------------------------------------+
Poczekaj, aż przywracanie zostanie ukończone.
Co można zrobić dalej?
W tym artykule użyliśmy polecenia openstack server backup create. Jeśli potrzebujesz wielu harmonogramów rotacyjnych, polecenie openstack server image create może być lepszym wyborem. Zobacz artykuł Użycie skryptu do tworzenia codziennych, tygodniowych i miesięcznych rotacyjnych kopii zapasowych maszyn wirtualnych w NSIS..