Skip to main content
  • »
  • OPENSTACK CLI »
  • Użycie skryptu do tworzenia codziennych, tygodniowych i miesięcznych rotacyjnych kopii zapasowych maszyn wirtualnych w NSIS.

Użycie skryptu do tworzenia codziennych, tygodniowych i miesięcznych rotacyjnych kopii zapasowych maszyn wirtualnych w NSIS.

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.

Tworzenie kopii zapasowej a tworzenie obrazu

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 snapshot

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

Wiele harmonogramów rotacji

Nie, tylko jeden

Tak (codziennie, co tydzień, co miesiąc itp.)

Obsługa przyrostowych kopii zapasowych

Tak, obsługuje przyrostowe kopie zapasowe

Nie, zawsze tworzy pełną migawkę

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 dowiesz się, jak utworzyć wiele serii rotacyjnych kopii zapasowych za pomocą skryptu, który wykorzystuje w tym celu wiele poleceń OpenStackClient.

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

Ten artykuł obejmuje tylko tworzenie kopii zapasowych maszyn wirtualnych, które:

  • nie mają dołączonych żadnych volume, oraz

  • używają pamięci ephemeral (a nie persistent).

Zobacz artykuł Opcja pamięci masowej efemerycznej i trwałej - Utwórz nowy volume w NSIS.

Nr 3 Serwer lub inny komputer, na którym będzie wykonywany proces tworzenia kopii zapasowej

Potrzebne jest środowisko, z którego będą wykonywane polecenia tworzenia kopii zapasowej maszyny vm-to-backup.

W tym artykule zakładamy, że to środowisko działa z systemem Ubuntu 24.04 LTS i że można nim zarządzać. Nazwiemy je backing-server, ponieważ może to być nazwa maszyny wirtualnej używanej do tego celu.

Może to być między innymi:

  • Maszyna wirtualna w chmurze NSIS.

  • Własny serwer fizyczny

  • Maszyna wirtualna działająca poza chmurą NSIS

Upewnij się, że z tego środowiska możesz połączyć się z chmurą NSIS.

To środowisko musi być uruchomione za każdym razem, gdy chcesz utworzyć nową kopię zapasową.

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.

Nr 5 Instalacja poświadczeń aplikacji

Być może używasz schematu uwierzytelniania dwuskładnikowego, aby logować się jako użytkownik do NSIS. Tutaj będziemy wykonywać zautomatyzowane operacje, więc uwierzytelnianie powinno być również zautomatyzowane.

W tym celu wykorzystamy poświadczenia aplikacji, które będziemy przechowywać w pliku clouds.yml.

Aby utworzyć plik clouds.yml z danymi uwierzytelniającymi aplikacji, postępuj zgodnie z artykułem Jak wygenerować lub użyć poświadczeń aplikacji za pośrednictwem CLI na NSIS Cloud,

Skopiuj plik clouds.yml na serwer backing-server. Po zainstalowaniu środowiska openstack to polecenie domyślnie wyszukuje plik clouds.yml w następujących dwóch lokalizacjach:

  • $HOME/.config/openstack/clouds.yml

  • /etc/openstack/clouds.yml

więc możesz umieścić plik clouds.yml w jednej z nich. Następnie będzie można łatwo użyć tego pliku do uwierzytelnienia z dowolnego folderu w systemie operacyjnym.

$HOME to zmienna środowiskowa, która zwykle oznacza katalog domowy użytkownika.

Możesz również umieścić plik clouds.yml w dowolnym innym folderze, ale pamiętaj, aby wykonać polecenie openstack również z tego folderu.

Ważne

W pliku clouds.yml dane uwierzytelniające są przechowywane w postaci zwykłego tekstu, bez dodatkowego szyfrowania. Dlatego należy upewnić się, że lokalizacja wybrana do przechowywania tych poświadczeń jest wystarczająco bezpieczna.

W pliku clouds.yml można przechowywać wiele par poświadczeń. Aby wybrać odpowiednią parę poświadczeń, użyjemy parametru --os-cloud. W tym artykule dla nazwy pary poświadczeń zostanie użyta wartość zastępcza backup_test. Upewnij się, że używasz własnych danych za każdym razem, gdy widzisz tę wartość.

W NSIS poświadczenia aplikacji działają w wielu regionach, więc region, którego będziemy używać, określimy za pomocą parametru --os-region. Wartością tego parametru jest nazwa używanego regionu, na przykład 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 tym artykule będziemy używać polecenia cron do automatyzacji rotacyjnych kopii zapasowych.

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.

Nr 7 Twój ulubiony edytor zwykłego tekstu zainstalowany na serwerze do tworzenia kopii zapasowych

Dwa z najpopularniejszych edytorów to vim i nano. Poniżej opisano, jak je zainstalować.

vim
sudo apt install vim
nano
sudo apt install nano

Aby wybrać domyślny edytor tekstu w Ubuntu 24.04, wykonaj polecenie:

select-editor

Powinien zostać wyświetlony prompt proszący o wybranie edytora poprzez podanie jego numeru, na przykład:

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]:

Wybierz program, którego chcesz użyć, podając jego numer i naciśnij Enter.

Algorytm rotacyjnego tworzenia kopii zapasowych

Przed pierwszym uruchomieniem skryptu kopii zapasowej należy wykonać następujące czynności:

Określenie nazwy serii kopii zapasowych

Na przykład daily, weekly lub monthly

Określanie limitu rotacji

Ile kopii zapasowych ma zostać zachowanych (w całym artykule będziemy odnosić się do tej liczby jako maxN).

Po spełnieniu tych wymagań, za każdym razem, gdy wykonywany jest skrypt kopii zapasowej, są wykonywane następujące operacje:

Zmiana nazwy kopii zapasowych

Zmiana nazw istniejących kopii zapasowych, tak aby ich numery nadal wskazywały, która kopia zapasowa jest najstarsza, a która najnowsza. Kopia zapasowa nr 1 musi być zawsze najstarszym plikiem.

Usuwanie najstarszej kopii zapasowej

Jeśli liczba istniejących kopii zapasowych jest teraz większa niż maxN, najstarsza kopia zapasowa zostanie usunięta.

Tworzenie kopii zapasowej

Utworzona zostanie kopia zapasowa z numerem 1 w nazwie.

Ręczne tworzenie kopii zapasowej bez rotacji

Polecenie server image create tworzy pełne snapshot, ale nie ma wbudowanego parametru dla tworzenia rotacyjnych kopii zapasowych. Najprostsza możliwa forma tego polecenia w tym środowisku będzie wyglądać następująco:

openstack server image create \
--name my-vm-backup \
--os-cloud backup_test \
--os-region WAW4-1 \
my-vm

W tym poleceniu:

  • my-vm-backup jest nazwą kopii zapasowej

  • my-vm to nazwa maszyny wirtualnej.

Pozostałe dwa parametry, --os-cloud i --os-region służą do wyboru nazwy poświadczeń aplikacji i regionu, które będą używane do uwierzytelniania. Więcej informacji można znaleźć w sekcji Wymaganie wstępne nr 5.

Ogólna forma polecenia usuwania starego obrazu to:

openstack image delete <old-image>

gdzie <old-image-id> to nazwa lub identyfikator obrazu, który ma zostać usunięty.

W tym artykule użyjemy polecenia

openstack image delete \
--os-cloud backup_test \
--os-region WAW4-1 \
my-vm-backup

gdybyśmy chcieli usunąć obraz my-vm-backup.

Wiele harmonogramów rotacji

Polecenia te są ściśle ręczne, co może być przyczyną błędów. Można zapomnieć je wykonać, użyć niewłaściwej nazwy maszyny wirtualnej lub kopii zapasowej itd. Rozwiązaniem jest skorzystanie ze skryptu, który będzie wykonywał się we wcześniej zdefiniowanych momentach. Daje to paradoksalnie pełną swobodę organizowania rotacyjnych kopii zapasowych nie tylko w jednej serii kopii zapasowych, ale także w dowolnej liczbie serii.

Ten skrypt tworzy snapshot przy użyciu tej samej metody, która została opisana w poprzedniej sekcji, ale dodaje rotację kopii zapasowych i wiele harmonogramów.

W skrypcie zostaną użyte polecenia:

  • openstack image set, aby zmieniać nazwy istniejących kopii zapasowych, tak aby ich nazwy wskazywały, która z nich jest najstarsza, a która najnowsza itd,

  • openstack server image create, aby utworzyć kopię zapasową,

  • openstack image delete, aby usunąć najstarszą kopię zapasową

Dzięki temu organizowanie wielu serii rotacyjnych kopii zapasowych jest wygodniejsze.

Każda kopia zapasowa będzie miała nazwę zawierającą następujące elementy:

  • nazwa instancji, na przykład vm-to-backup

  • kreska -

  • nazwa serii kopii zapasowych, na przykład weekly

  • kreska -

  • liczba wersji kopii zapasowych od 1 do maxN, na przykład 3.

Nazwa brzmiałaby wtedy: vm-to-backup-weekly-3.

Krok 1: Utwórz skrypt

Otwórz swój ulubiony edytor tekstu (taki jak vim lub nano), utwórz plik backup.sh i wprowadź następujący skrypt:

#!/bin/bash
if [[ "$#" -ne 3 ]]
then
  echo "Expecting 3 arguments: vm name, backup name, number of backups"
  exit
fi
vm_name=$1
backup_core_name=$1"-"$2
reifnumber='^[0-9]+$'
if ! [[ $3 =~ $reifnumber ]]
then
  echo "Given backup count is not a number"
  exit
fi
count=$3
# Rename all previous backups - add 1 to their number
for i in $(seq $count -1 1)
do
  openstack image set --name $backup_core_name"-"$((i+1)) $backup_core_name"-"$i --os-cloud backup_test --os-region WAW4-1
done
# Delete oldest backup (the one which has number number greater by 1 than the number of backups to rotate
openstack image delete $backup_core_name"-"$((count+1)) --os-cloud backup_test --os-region WAW4-1
# Create a new backup - with number 1
openstack server image create --name $backup_core_name"-1" $vm_name --os-cloud backup_test --os-region WAW4-1

Jak zwykle, w tym skrypcie należy zmienić wartość każdego z parametrów:

  • parametr --os-cloud na nazwę poświadczeń używanych w pliku clouds.yaml.

  • parametr ** --os-region** na nazwę używanej chmury.

Zapisz plik backup.sh w swoim katalogu domowym.

Nadaj mu uprawnienie wykonywalny:

chmod +x backup.sh

Krok 2: Uruchom skrypt

Z katalogu domowego spróbuj utworzyć kopię zapasową za pomocą tego skryptu.

Skrypt akceptuje trzy argumenty:

  • nazwa (lub identyfikator) maszyny wirtualnej – nasza maszyna wirtualna nazywa się vm-to-backup,

  • nazwa serii kopii zapasowych – nasza seria kopii zapasowych nazywa się manual-backup, i

  • liczba kopii zapasowych, tu maxN wynosi 3

Polecenie uruchamiające skrypt jest następujące:

./backup.sh vm-to-backup manual-backup 3

Wynik powinien być podobny do tego:

../_images/use-script-rotating-backups-01_nsis_pl.png

Wyświetlanie plików kopii zapasowej

Pliki kopii zapasowych tworzone przez skrypt są w rzeczywistości migawkami. Poniższe polecenie wyświetli listę wszystkich migawek w projekcie (z zastrzeżeniem, że parametr image_type=snapshot), niezależnie od metody użytej do utworzenia każdej konkretnej migawki:

openstack image list \
--property image_type=snapshot \
--os-cloud backup_test \
--os-region WAW4-1
../_images/use-script-rotating-backups-02_nsis_pl.png

Niektóre snapshot mogą być kopiami zapasowymi utworzonymi przez użytkownika, inne snapshot mogły zostać zaimportowane itd.

Uruchamianie skryptu

Oto, co się stanie, gdy uruchomisz ten skrypt z tymi samymi opcjami, co w przykładzie raz, dwa razy, trzy razy i cztery razy z rzędu.

Kopie zapasowe przed tym uruchomieniem

W naszym projekcie nie ma kopii zapasowych.

Próba zmiany nazwy

Skrypt próbował zmienić nazwy obrazów – zmienić numery kopii zapasowych:

+————–=—+————————-+——————+ | Oryginalny numer | Numer po zmianie nazwy | Wynik | +—————=–+————————-+——————+ | 3 | 4 | Niepowodzenie | +————–=—+————————-+——————+ | 2 | 3 | Niepowodzenie | +—————=–+————————-+——————+ | 1 | 2 | Niepowodzenie | +————–=—+————————-+——————+

Ponieważ w naszym projekcie te obrazy jeszcze nie istnieją, nie powiodła się żadna z tych operacji - stąd w wynikach pojawiają się wiersze No Image found.

Usunięcie najstarszego obrazu

Skrypt próbował usunąć obraz o nazwie vm-to-backup-manual-backup-4, ponieważ jego numer jest większy o jeden niż maxN. Taki obraz nie istnieje, więc próba nie powiodła się.

Utworzenie nowej kopii zapasowej

Skrypt utworzył nową kopię zapasową o nazwie vm-to-backup-manual-backup-1. Operacja zakończyła się powodzeniem.

Kopie zapasowe po tym uruchomieniu

Liczba kopii zapasowych w projekcie jest wynosi 1 (na razie):

  • vm-to-backup-manual-backup-1

Krok 3: Otwórz plik crontab

Użyjemy teraz polecenia cron z Wymagania wstępnego nr 6, aby zautomatyzować rotacyjne tworzenie kopii zapasowych.

Istnieje kilka metod otwierania pliku zawierającego zadania cron:

Metoda 1: Dostęp do pliku bez wybierania edytora tekstu

Podstawowym poleceniem służącym do definiowania zadań cron jest:

crontab -e

Jeśli ją wykonasz, może wystąpić jedna z poniższych sytuacji:

  • plik jest otwierany w domyślnym edytorze tekstu ustawionym w systemie lub

  • zostanie wyświetlony prompt proszący o wybranie domyślnego edytora tekstu, jak wyjaśniono w sekcji Wymaganie wstępne nr 7, a następnie plik zostanie otwarty w tym edytorze tekstu

Metoda 2: Wybór edytora tekstu przy każdym otwarciu pliku crontab

Możesz użyć zmiennej środowiskowej EDITOR, aby wybrać edytor, którego chcesz użyć do edytowania pliku crontab przy każdym uruchomieniu.

Na przykład, aby otworzyć plik crontab w nano, wykonaj polecenie:

EDITOR=nano crontab -e

Alternatywnie, aby użyć vim, można wykonać polecenie:

EDITOR=vim crontab -e

Krok 4: Edycja pliku crontab

Jeśli chcesz, możesz usunąć z tego pliku wszystkie poprzednie harmonogramy kopii zapasowych.

W zależności od potrzeb utwórz nowe odpowiednie zadania cron dla różnych harmonogramów tworzenia kopii zapasowych. Dane crontab wyglądałyby yak (biorąc pod uwagę poniższe przykłady):

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

Wstępnie załadowane komentarze w pliku określają sposób korzystania z parametrów.

Kiedy zakończysz, zamknij plik i zamknij edytor. Jeśli zadania zostały zdefiniowane poprawnie, powinny zacząć być wykonywane.

Przykłady zadań cron

Codziennie

10 0 * * * /home/eouser/backup.sh vm-to-backup daily_backup 5

To zadanie uruchamia codzienną kopię zapasową, która jest wykonywana każdego dnia 10 minut po północy. Nazwa kopii zapasowej to daily_backup, a nazwa maszyny wirtualnej to vm-to-backup. Liczba kopii zapasowych podlegających rotacji wynosi 5.

Po pięciu dniach uruchamiania tego skryptu lista kopii zapasowych utworzonych dla tej maszyny wirtualnej powinna wyglądać następująco:

../_images/use-script-rotating-backups-03_nsis_pl.png

gdzie kopia zapasowa o numerze 1 jest najnowsza, a kopia zapasowa o numerze 5 jest najstarsza.

Co tydzień

15 0 * * 1 /home/eouser/backup.sh vm-to-backup weekly_backup 4

W tym przypadku każdego pierwszego dnia tygodnia 15 minut po północy jest tworzona kopia zapasowa o nazwie weekly_backup maszyny wirtualnej o nazwie vm-to-backup. Będą rotowane cztery kopie zapasowe.

Po 4 tygodniach uruchamiania tego skryptu lista kopii zapasowych utworzonych dla tej maszyny wirtualnej powinna wyglądać następująco:

../_images/use-script-rotating-backups-04_nsis_pl.png

Miesięcznie

20 0 2 * * /home/eouser/backup.sh vm-to-backup monthly_backup 3

W tym przypadku każdego drugiego dnia miesiąca 20 minut po północy jest tworzona kopia zapasowa o nazwie monthly_backup maszyny wirtualnej o nazwie vm-to-be-backed_up. Będą rotowane trzy kopie zapasowe.

Po 3 miesiącach uruchamiania tego skryptu lista kopii zapasowych utworzonych dla tej maszyny wirtualnej powinna wyglądać następująco:

../_images/use-script-rotating-backups-05_nsis_pl.png

Ograniczenia

Ten skrypt ilustruje jeden z możliwych sposobów tworzenia wielu serii rotacyjnych kopii zapasowych.

Należy jednak pamiętać, że po utworzeniu jednej serii kopii zapasowych nie należy uruchamiać dla tej serii skryptu z mniejszą liczbą kopii zapasowych z tej serii niż poprzednio. Spowoduje to nieprawidłowe działanie skryptu.

Na przykład, jeśli masz maszynę wirtualną o nazwie my-vm i masz serię 5 kopii zapasowych o nazwie weekly, nie uruchamiaj następującego polecenia:

./backup.sh my-vm weekly 4

Ponadto skrypt nie zawiera żadnej obsługi ani raportowania błędów, więc niewykonanie kopii zapasowej (na przykład z powodu braku połączenia z OpenStackClient API) może prowadzić do nieoczekiwanych rezultatów.

Nie należy również używać podobnych lub takich samych nazw lub konwencji nazewnictwa dla obrazów, które można utworzyć bez użycia tego skryptu. Może to spowodować nieoczekiwane zachowanie skryptu.

Jak przywracać kopie zapasowe?

Kopie zapasowe utworzone za pomocą skryptu przedstawionego w tym artykule, podobnie jak inne obrazy w OpenStack, mogą być używane do

  • tworzenia nowych maszyn wirtualnych lub

  • zastępowania zawartości dysku twardego maszyny wirtualnej zawartością takiego obrazu (przebudowy).

W przypadku przywracania kopii zapasowych, ta pierwsza możliwość może być przydatna na przykład, jeżeli masz wielu maszyn wirtualnych, z których każda reprezentuje inne podejście do problemu, który próbujesz rozwiązać. Druga opcja może być przydatna, jeśli chcesz po prostu przywrócić stan maszyny wirtualnej z poprzedniej kopii zapasowej.

Jednak zanim to zrobisz, zaleca się skopiowanie tego obrazu, aby skrypt nie przerwał wykonywania serii kopii zapasowych w nieoczekiwany sposób i mógł kontynuować normalną pracę.

Niniejsza sekcja obejmuje wszystkie te operacje.

Krok 1 Znajdź rozmiar i nazwę lub identyfikator obrazu, który chcesz przywrócić

Sprawdź identyfikator lub nazwę kopii zapasowej, którą chcesz przywrócić, w tym celu wyświetl snapshot znajdujące się w projekcie.

openstack image list \
--property image_type=snapshot \
--os-cloud backup_test \
--os-region WAW4-1

W tym przykładzie wybierzemy nazwę my-backup2

Zapisz nazwę lub identyfikator tego obrazu.

W następnym kroku należy również sprawdzić minimalny rozmiar dysku.

Aby to zrobić, wykonaj polecenie:

openstack image show \
-c min_disk \
--os-cloud backup_test \
--os-region WAW4-1 \
my-backup2

gdzie my-backup2 to nazwa lub identyfikator obrazu.

Dane wyjściowe powinny zwrócić tabelę zawierającą żądaną wartość w GB:

+----------+-------+
| Field    | Value |
+----------+-------+
| min_disk | 8     |
+----------+-------+

Krok 2: Utwórz volume z obrazu

Ponieważ w OpenStack nie można bezpośrednio skopiować obrazu, należy najpierw utworzyć z niego volume.

Aby utworzyć volume z obrazu, wykonaj następujące polecenie:

openstack volume create \
--image my-backup2 \
--size 8 \
--os-cloud backup_test \
--os-region WAW4-1 \
my-backup2-volume

gdzie:

  • my-backup2 to nazwa lub identyfikator obrazu.

  • 8 to minimalny rozmiar volume dla obrazu w GB (jest to volume tymczasowy, nie jest wymagane, aby był większy).

  • my-backup2-volume to nazwa tworzonego volume.

Dane wyjściowe tego polecenia powinny zawierać informacje o volume. Na początku będzie to prawdopodobnie status uploading

Poczekaj, aż volume będzie miał status available

Możesz wyświetlić jego aktualny stan, wykonując polecenie:

openstack volume show \
-c status \
--os-cloud backup_test \
--os-region WAW4-1 \
my-backup2-volume

gdzie my-backup2-volume to nazwa lub identyfikator volume.

Krok 3: Utwórz obraz z volume

Z tego volume można utworzyć obraz, który może zostać wykorzystany do utworzenia lub przebudowania maszyny wirtualnej.

Wykonaj polecenie:

openstack image create \
--volume my-backup2-volume \
--os-cloud backup_test \
--os-region WAW4-1 \
my-backup2-copy

gdzie:

  • my-backup2-volume to nazwa volume

  • my-backup2-copy to nazwa tworzonej kopii obrazu.

Dane wyjściowe tego polecenia powinny zawierać informacje o obrazie. Na początku będzie to prawdopodobnie status uploading

Poczekaj, aż obraz będzie miał status available

Możesz wyświetlić jego aktualny stan, wykonując polecenie:

openstack image show \
-c status \
--os-cloud backup_test \
--os-region WAW4-1 \
my-backup2-copy

gdzie my-backup2-copy to nazwa lub identyfikator obrazu

Krok 4: Usuń volume tymczasowy

Po utworzeniu volume image można usunąć volume.

Zrób to za pomocą polecenia:

openstack volume delete \
--os-cloud backup_test \
--os-region WAW4-1 \
my-backup2-volume

gdzie my-backup2-volume to nazwa lub identyfikator volume, który chcesz usunąć.

Dane wyjściowe tego polecenia powinny być puste.

Krok 5: Przywróć kopię zapasową

Utworzyliśmy teraz kopię kopii zapasowej, którą chcemy przywrócić. Dzięki temu praca skryptu powinna być kontynuowana bez zakłóceń, a skrypt powinien być w stanie usunąć oryginalną kopię zapasową, gdy będzie to zgodne z harmonogramem.

Ta kopia może teraz zostać przywrócona do maszyny wirtualnej.

W tej sekcji omówiono dwie metody osiągnięcia tego celu. Wybierz tę, która najbardziej ci odpowiada.

Metoda 1: 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.

Ostrzeżenie

Ta operacja spowoduje usunięcie danych z maszyny wirtualnej, na której wykonywane są te działania. Upewnij się, że ta maszyna wirtualna nie zawiera żadnych danych, których nie chcesz utracić!

Polecenie przywracania z kopii zapasowej to:

openstack server rebuild \
--image my-backup2-copy \
--os-cloud backup_test \
--os-region WAW4-1 \
vm-to-backup

Gdzie:

  • my-backup2-copy to identyfikator lub nazwa obrazu.

  • vm-to-backup to identyfikator lub nazwa instancji.

Powinny zostać wyświetlone dane wyjściowe podobne do tych:

../_images/backup-command-rotating-backups-05_nsis_pl.png

Zauważ, że teraz maszyna wirtualna ma status REBUILD

Poczekaj, aż przywracanie zostanie zakończone. Gdy to nastąpi, maszyna wirtualna powinna być włączona i gotowa do pracy.

Aktualny stan maszyny wirtualnej można sprawdzić za pomocą poniższego polecenia (gdzie vm-to-backup to nazwa lub identyfikator maszyny wirtualnej):

openstack server show \
--os-cloud backup_test \
--os-region WAW4-1 \
vm-to-backup

Jeśli chcesz zobaczyć tylko jej status, dodaj parametr -c status:

openstack server show \
-c status \
--os-cloud backup_test \
--os-region WAW4-1 \
vm-to-backup
../_images/backup-command-rotating-backups-06_nsis_pl.png

Jeśli maszyna wirtualna ma status ACTIVE, powinna być gotowa do pracy.

Metoda 2: Tworzenie nowej maszyny wirtualnej z kopii zapasowej

Ponieważ obrazy utworzone za pomocą tego polecenia są bardzo podobne do zwykłych obrazów OpenStack, można ich użyć do utworzenia nowej maszyny wirtualnej od podstaw. Taka maszyna wirtualna będzie miała pliki i system operacyjny identyczne z tymi przechowywanymi w kopii zapasowej. Proces ten nie ma wpływu na źródłową maszynę wirtualną.

Może to być przydatne, jeśli na przykład chcesz przetestować wiele sposobów wykonywania konkretnych operacji na własnej maszynie wirtualnej.

Jest oczywiste, że w tym przypadku identyfikator maszyny wirtualnej nie zostanie zachowany, ale będzie można wybrać tę samą nazwę, co poprzednio.

Jeśli ta maszyna miała jakiekolwiek adresy Floating IP i chcesz je dołączyć do nowej maszyny wirtualnej, musisz je usunąć z poprzedniej maszyny wirtualnej. Adres Floating IP pozostanie wtedy w projekcie, a po utworzeniu nowej maszyny wirtualnej można przypisać ten adres IP do nowej maszyny wirtualnej.

Po zwolnieniu adresu floating IP z projektu nie będzie on już dostępny.

Postępuj zgodnie z instrukcjami z artykułu /cloud/How-to-create-a-VM-using-the-OpenStack-CLI-client-on-NSIS-Cloud.

W sekcji Image kroku 1 tego artykułu:

../_images/backup-command-rotating-backups-08_creodias.png

użyj identyfikatora jednej z utworzonych kopii zapasowych.

W sekcji Flavor wybierz flavor, który jest wystarczający do obsługi kopii zapasowej. Prawdopodobnie będzie to ta sama wersja, która została użyta dla oryginalnej maszyny wirtualnej.

Oczywiście przywracanie kopii zapasowych może być również częścią zadania cron, jest to jednak poza zakresem tego artykułu.

Problemy i ich rozwiązywanie

Podczas korzystania z polecenia

openstack image create \
--volume my-backup2-volume \
--os-cloud backup_test \
--os-region WAW4-1 \
my-backup2-copy

może pojawić się następujący komunikat:

VolumeManager.upload_to_image() got an unexpected keyword argument «visibility» when trying to create an image from Volume

Oznacza to, że wersja OpenStack CLI, z którą pracujesz i wersja OpenStack w chmurze są niezgodne. Praktycznym obejściem jest ustawienie parametru OS_VOLUME_API_VERSION na 3.1 lub wyższą wartość.

Można również użyć parametru

--os-volume-api-version 3.1

z poleceniem openstack image create.

Co można zrobić dalej?

Skrypt użyty w tym artykule tworzy snapshot instancji. Aby uzyskać dodatkowe informacje, zobacz artykuł Jak utworzyć instance snapshot przy użyciu Horizon na NSIS Cloud

Jeśli nie potrzebujesz wielu harmonogramów rotacyjnych, lepszym wyborem może być standardowe polecenie openstack server backup create . Zobacz artykuł Użycie polecenia backup do tworzenia rotacyjnych kopio zapasowych maszyn wirtualnych w chmurze NSIS Cloud.