Skip to main content
  • »
  • OPENSTACK CLI »
  • Użycie polecenia backup do tworzenia rotacyjnych kopio zapasowych maszyn wirtualnych w chmurze NSIS Cloud

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:

Porównanie poleceń tworzenia kopii zapasowych i obrazów

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 --backup-type and incremental backups

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:

../_images/install-cron-1.png

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.

openstackcli/how-to-create-rotating-backups-05_nsis_pl.png

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

  1. Powyższa procedura jest ściśle ręczna – użytkownik musi zainicjować tworzenie nowej kopii zapasowej.

  2. 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.

  3. 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:

../_images/install-cron-2_nsis_pl.png

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..