Jak utworzyć instance snapshot za pomocą OpenStack CLI na NSIS
W tym artykule dowiesz się, jak utworzyć instance snapshot w chmurze NSIS za pomocą interfejsu OpenStack CLI.
Instancje umożliwiają archiwizację stanu maszyny wirtualnej. Ich zastosowania są następujące:
kopia zapasowa,
migracja między chmurami
odzyskiwanie po awarii i/lub
klonowanie środowisk do celów testowania lub rozwoju.
Obsługujemy oba typy przechowywania instancji: ulotne i trwałe.
Plan
W rzeczywistości będziesz korzystać z procedur opisanych w tym artykule z już istniejącymi instancjami.
Aby jednak uzyskać jasny obraz procesu, podczas śledzenia tego artykułu utworzysz dwie nowe instancje, jedną z ulotnym, a drugą ze stałym typem pamięci masowej. Nadajmy im nazwy iinstance-which-uses-ephemeral i instance-which-uses-volume. Dla każdej z nich zostanie utworzony instance snapshot.
Jeśli interessuje cię tylko jeden z tych typów instancji, możesz postępować zgodnie z odpowiednią sekcją tego tekstu.
Jest oczywiste, że po zapoznaniu się z sekcją poświęconą jednemu typowi maszyny wirtualnej można wyczyścić utworzone zasoby, aby np. obniżyć koszty.
Możesz też zachować je i użyć ich do utworzenia instancji przy użyciu jednego z artykułów wymienionych w sekcji Co można zrobić dalej?.
Co zostanie omówione?
Wymagania wstępne
Nr 1 Konto
Jest wymagane konto hostingowe NSIS z dostępem do interfejsu Horizon: https://horizon.cloudferro.com.
Nr 2 Pamięć ulotna a pamięć trwała
Zapoznaj się z artykułem Opcja pamięci masowej efemerycznej i trwałej - Utwórz nowy volume w NSIS, aby zrozumieć podstawową różnicę między ulotnymi i trwałymi typami pamięci masowej w OpenStack.
Nr 3 Instancja z ulotną pamięcią masową
Potrzebna jest maszyna wirtualna hostowana w chmurze NSIS.
Możesz utworzyć instancję z ulotną pamięcią masową, postępując zgodnie z artykułem Jak utworzyć maszynę wirtualną przy użyciu klienta OpenStack CLI na chmurze NSIS Cloud.
Rzeczywiste polecenie użyte do utworzenia instancji z tego artykułu to
openstack server create \
--image Debian-custom-upload \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network eodata \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
Test-Debian
W przykładach w tym artykule używamy domyślnego obrazu Ubuntu 22.04 LTS.
W przypadku pamięci ulotnej tworzona jest tylko jedna nowa instancja.
Nr 4 Instancja z trwałą pamięcią masową
Podczas tworzenia instancji z trwałą pamięcią masową wystarczy dodać do powyższego polecenia jedną nową opcję –boot-from-volume, a po niej
przestrzeń
i żądany rozmiar nowego volume w gigabajtach.
Upewnij się, że podajesz ilość miejsca wystarczającą dla Twoich potrzeb.
Możesz również sprawdzić rozmiar pamięci dostępny dla wybranej wersji maszyny wirtualnej (polecenie openstack flavor list, kolumna Disk).
Na przykład, jeśli boot volume ma mieć 16 GB, dodaj następujące elementy:
--boot-from-volume 16
Pełne polecenie wyglądałoby zatem następująco:
openstack server create \
--image Debian-custom-upload \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network eodata_00734_1 \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
--boot-from-volume 16 \
Test-Debian
W przykładach w tym artykule używamy domyślnego obrazu Ubuntu 22.04 LTS.
W przypadku trwałej pamięci masowej tworzona jest jedna instancja i jeden volume:
specjalny rodzaj instancji (bez pamięci ulotnej)
i volume dołączony do tej instancji.
Instancja zostanie uruchomiona z volume, który został dołączony podczas jej tworzenia.
Instancja może również mieć dołączone dwa lub więcej volume, jednak tylko jeden będzie służył jako dysk rozruchowy.
Nr 5 Jak usunąć zasoby
Jeśli chcesz dowiedzieć się, jak usuwać instancje, snapshoty, volume i inne obiekty OpenStack, zapoznaj się z poniższymi artykułami:
Nr 6 Klient OpenStack CLI
Musisz mieć zainstalowanego klienta OpenStack CLI. Powinien ci w tym pomóc jeden z poniższych artykułów:
Aby używać klienta OpenStack CLI do kontrolowania chmury NSIS, należy potwierdzić swoją tożsamość: Jak aktywować dostęp OpenStack CLI do chmury NSIS przy użyciu uwierzytelniania dwuskładnikowego
Tworzenie instance snapshot korzystającego z ulotnej pamięci masowej
Tworzenie i listowanie instancji przy użyciu CLI
Utwórz instancję o nazwie instance-which-uses-ephemeral zgodnie z Wymaganiem wstępnym nr 3, na przykład:
openstack server create \
--image "Ubuntu 22.04 LTS" \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network eodata_00734_1 \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
instance-which-uses-ephemeral
Pamiętaj, aby użyć w tym poleceniu własnych parametrów.
Wyświetl listę swoich instancji:
openstack server list
Jeśli twoja instancja ma nadal w kolumnie Status wartość BUILD, poczekaj kilka minut, aż uzyska status ACTIVE. Aby odświeżyć listę, wykonaj ponownie polecenie openstack server list.
Powyższe dane wyjściowe zawierają identyfikator instancji, który może być używany do odwoływania się do niej w innych poleceniach. Ten identyfikator jest ciągiem znaków umieszczonych w jednym wierszu. Klient OpenStack CLI może wyświetlić go jako wierszy linii dla lepszej czytelności. Jeśli tak się stanie, upewnij się, że niezależnie od tego wprowadzasz go jako jeden wiersz.
Wyłączanie maszyny wirtualnej
Zamknij swoją instancję. Najlepiej zrobić to za pomocą funkcji systemu operacyjnego. Jeśli, tak jak tutaj, używany obraz to Ubuntu 22.04 LTS, możesz użyć konsoli Horizon lub dostępu SSH, aby wykonać polecenie takie jak
sudo shutdown now
Dokładne polecenie będzie zależeć od typu obrazu, więc dalsze wyjaśnienia wykraczają poza zakres tego artykułu.
Alternatywnie można w tym celu użyć polecenia CLI OpenStack. Polecenie to najpierw wyśle sygnał zamknięcia instancji, a jeśli w określonym czasie instancja nie zostanie zamknięta, OpenStack wymusi tę operację. Może to doprowadzić do utraty danych. Polecenie jest następując:
openstack server stop <instance-id or instance-name>
Po parametrze stop można użyć identyfikatora lub nazwy instancji.
Używanie nazwy instancji podczas odwoływania się do niej w tym poleceniu wydaje się łatwiejsze i bardziej naturalne. Jeśli jednak istnieją dwie lub więcej instancji o tej samej nazwie, polecenie może zwrócić błąd. Ponadto, jeśli nazwa zawiera znaki specjalne, takie jak spacje lub znaki dolara $, będą one musiały zostać odpowiednio przekształcone, w przeciwnym razie ta metoda może w ogóle nie działać.
Dlatego lepszym wyborem jest użycie identyfikatora instancji. W naszym przypadku odczytaliśmy, że wartość kolumny ID w powyższym przykładzie to
95622f8c-ab89-4686-97c3-3018202f01d8,
więc polecenie zatrzymania serwera ma postać
openstack server stop 95622f8c-ab89-4686-97c3-3018202f01d8
Możesz zweryfikować, czy instancja jest wyłączona, ponownie wykonując polecenie openstack server list - instancja powinna mieć w kolumnie Status wartość SHUTOFF.
Tworzenie snapshota
Aby utworzyć instance snapshot, użyj polecenia:
openstack server image create \
--name <snapshot-name> \
--wait \
<instance-id or instance-name>
W tym poleceniu
<snapshot-name> to nazwa snapshota (w tym przykładzie użyjemy instance_ephemeral_snapshot).
<instance-id or instance-name> to identyfikator lub nazwa instancji.
Długoterminowym podejściem byłoby włączenie do nazwy snapshota następujących informacji:
data,
godzina
i wersja snaphota.
Może to być też cokolwiek innego, co może później przypomnieć ci, której wersji snapshota należy użyć.
Informacja
Użycie parametru –name w celu podania pożądanej nazwy snapshota jest opcjonalne. Jeśli go nie podasz, snapshot powinien mieć taką samą nazwę jak twoja instancja. To polecenie bez tego parametru wyglądałoby tak:
openstack server image create \
--wait \
<instance-id or instance-name>
Parametr --wait powinien spowodować, że OpenStack CLI powróci do wiersza poleceń dopiero po utworzeniu instance snapshot.
Jeśli operacja zakończyła się powodzeniem, powinny pojawić się dane wyjściowe podobne do tych:
Zawierają one różne informacje o tym instance snapshot. Jej rozmiar równy 17179869184 jest tutaj podany w bajtach i powinien być taki sam jak rozmiar dysku rozruchowego maszyny wirtualnej.
Jeśli teraz wykonasz polecenie
openstack image list
Snapshot nowej instancji powinna być wyświetlana obok innych obrazów, w tym obrazów domyślnie dostępnych w chmurze NSIS. Powinna mieć taką samą nazwę jak instancja:
Co będzie zawierać snapshot na potrzeby ulotnej pamięci masowej?
Ten snapshot instance powinien uwzględniać zawartość dysku rozruchowego maszyny wirtualnej. Nie będzie ona jednak zawierać zawartości żadnych volume, które mogły zostać podłączone do tej maszyny wirtualnej.
Zasada praktyczna: zawsze sprawdzaj, czy do instancji są dołączone volume, a jeśli chcesz zachować również ich stany, skopiuj lub utwórz snapshot każdego z nich.
Snapshot instance korzystający z trwałej pamięci masowej
Co powoduje tworzenie instance snapshot z trwałą pamięcią masową?
Podczas tworzenia snapshot instance z pamięcią trwałą są tworzone następujące elementy:
Snapshot volume, który służy jako dysk rozruchowy instancji.
Snapshoty innych volume podłączonych do maszyny wirtualnej (jeśli istnieją).
Snapshot instance, który wydaje się mieć rozmiar 0 bajtów (ponieważ nie zawiera danych przechowywanych na maszynie wirtualnej). Ten snapshot zawiera listę wszystkich innych snapshotów w swoich metadanych.
Należy pamiętać, że nazwy volume, które były podłączone do maszyny wirtualnej w momencie tworzenia snapshota, nie zostaną zachowane.
Jeśli w przyszłości będziesz chcieć utworzyć maszynę wirtualną z tego instance snapshota:
Jeśli nie masz snapshot volume, którego instancja używała jako boot volume, nie będziesz w stanie odtworzyć instancji z tego snapshota.
Jeśli snapshot jednego z dołączonych volume nie istnieje, maszyna wirtualna zostanie odtworzona bez tego volume.
Tworzenie i wyświetlanie instancji
Utwórz instancję o nazwie instance-which-uses-volume, na przykład zgodnie z wymaganiem wstępnym nr 4:
openstack server create \
--image "Ubuntu 22.04 LTS" \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network eodata \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
--boot-from-volume 16 \
instance-which-uses-volume
Pamiętaj, aby użyć w tym poleceniu własnych parametrów.
Wyświetl listę swoich instancji:
openstack server list
W tym przykładzie mamy jedną maszynę wirtualną o nazwie instance-which-uses-volume, która używa volume jako dysku rozruchowego.
Jeśli twoja instancja ma nadal w kolumnie Status wartość BUILD, poczekaj kilka minut, aż uzyska status ACTIVE. Aby odświeżyć listę, wykonaj ponownie polecenie openstack server list.
Powyższe dane wyjściowe zawierają identyfikator instancji, który może być używany do odwoływania się do niej w innych poleceniach. Ten identyfikator jest ciągiem znaków umieszczonych w jednym wierszu. Klient OpenStack CLI może wyświetlić go jako wierszy linii dla lepszej czytelności. Jeśli tak się stanie, upewnij się, że niezależnie od tego wprowadzasz go jako jeden wiersz.
Możemy wyświetlić listę volume dołączonych do tej maszyny wirtualnej, wykonując polecenie:
openstack server show -c volume_attached <instance-id or instance-name>
gdzie <instance-id lub instance-name> to identyfikator lub nazwa instancji.
Używanie nazwy instancji podczas odwoływania się do niej w tym poleceniu wydaje się łatwiejsze i bardziej naturalne. Jeśli jednak istnieją dwie lub więcej instancji o tej samej nazwie, polecenie może zwrócić błąd. Ponadto, jeśli nazwa zawiera znaki specjalne, takie jak spacje lub znaki dolara $, będą one musiały zostać odpowiednio przekształcić, w przeciwnym razie ta metoda może w ogóle nie działać.
Dlatego lepszym wyborem jest użycie identyfikatora instancji. W naszym przypadku odczytaliśmy, że wartość kolumny ID w powyższym przykładzie to
e69f90da-60d8-4d72-9b57-35f7063bc92d
Tak więc polecenie pokazujące dołączone volume jest następujące:
openstack server show -c volume_attached e69f90da-60d8-4d72-9b57-35f7063bc92d
Polecenie openstack server show jest zwykle używane do wyświetlania szczegółowych informacji o maszynie wirtualnej. W tym przypadku przycinamy jego dane wyjściowe tak, aby pokazać tylko zawartość sekcji volumes_attached.
Dla każdego z wolumenów można sprawdzić, czy OpenStack usunie ten volume (True) lub nie (False) , jeśli instancja ma zostać usunięta (delete_on_termination). Oprócz tego można zobaczyć identyfikator (wartość id) tego volume.
Zwróć uwagę, że w tej części danych wyjściowych przecinek jest używany między właściwościami jednego volume, a nie między informacjami o różnych volume.
Wyłączanie maszyny wirtualnej
Zamknij swoją instancję. Najlepiej zrobić to za pomocą funkcji systemu operacyjnego. Jeśli, tak jak tutaj, używany obraz to Ubuntu 22.04 LTS, możesz użyć konsoli Horizon lub dostępu SSH, aby wykonać polecenie takie jak
sudo shutdown now
Ponownie polecenie CLI OpenStack, którego można użyć alternatywnie do zamknięcia instancji to
openstack server stop <instance-id or instance-name>
gdzie <instance-id lub instance-name> jest identyfikatorem lub nazwą instancji.
Sprawdź, czy maszyna wirtualna jest wyłączona, wykonując polecenie
openstack server list
Wartość SHUTOFF w kolumnie Status oznacza, że serwer został zatrzymany zgodnie z planem:
Na powyższym zrzucie ekranu kolumna ID zawiera <instance_id> z wartością
<instance_id> to ciąg znaków umieszczonych w jednym wierszu. Klient CLI OpenStack może wyświetlić to jako wiele wierszy dla lepszej czytelności. Jeśli tak się stanie, upewnij się, że używasz go jako jednego, nieprzerwanego ciągu znaków.
Tworzenie snapshota
Aby utworzyć snapshot instance, użyj polecenia:
openstack server image create \
--name <snapshot-name>
--wait \
<instance-id or instance-name>
W tym poleceniu
<snapshot-name> to nazwa snapshota (w tym przykładzie użyjemy nazwy instance_persistent_snapshot).
<instance-id or instance-name> to identyfikator lub nazwa instancji.
Parametr --wait powinien spowodować, że OpenStack CLI powróci do wiersza poleceń dopiero po utworzeniu volume instance.
Informacja
Użycie parametru –name w celu podania pożądanej nazwy snapshota jest opcjonalne. Jeśli go nie podasz, snapshot powinien mieć taką samą nazwę jak twoja instancja. To polecenie bez tego parametru wyglądałoby tak:
openstack server image create \
--wait \
<instance-id or instance-name>
Jeśli operacja zakończyła się powodzeniem, powinny pojawić się dane wyjściowe podobne do tych:
Snapshot instance powinien być teraz widoczny podczas wyświetlania obrazów:
openstack image list
Przeglądanie snapshot instance i volume snapshots, które zostały utworzone wraz z nią
Powyższe dane wyjściowe polecenia openstack server image create zawierają różne informacje o tym instance snapshot.
Ponieważ ten snapshot nie zawiera danych przechowywanych na tej maszynie wirtualnej, jego rozmiar (na powyższym zrzucie ekranu zaznaczony ciemnoniebieskim prostokątem) wynosi 0 bajtów.
W sekcji properties (właściwość block_device_mapping), wartość klucza snapshot_id jest identyfikatorem snapshot volume, który został utworzony podczas tworzenia tego snapshot instance. W powyższym przykładzie jest to 59d2168d-d92a-4da5-bf87-a2f0399d0957.
Szczegółowe informacje na temat snapshot volume można sprawdzić, wykonując polecenie:
openstack volume snapshot show <snapshot-id or snapshot-name>
Zastąp <snapshot_id> identyfikatorem lub nazwą snapshota.
Jego rozmiar powinien być taki sam jak rozmiar oryginalnego volume, z którego został utworzony.
Ten snapshot volume powinien być widoczny normalnie podczas wyświetlania snapshot volume za pomocą opcji
openstack volume snapshot list
Co się stanie, jeśli istnieje wiele volume?
Jeśli do instancji podłączono wiele volume, to snapshot każdego z nich powinien zostać utworzony wraz z instance snapshot. Wszystkie te snapshot volume powinny pojawić się w sekcji properties snapshota instancji, jako właściwość block_device_mapping. Może to wyglądać tak:
W tym przykładzie istnieją dwa snapshot volume, każdy z nich jest utworzony dla jednego z volume naszej maszyny wirtualnej:
jedna o identyfikatorze 11ce436a-160a-4e05-9c3d-a298ea04e05b i rozmiarze 16 GB, oraz
druga o identyfikatorze 7190de3d-c90b-42a7-993c-8b0bf7bcdb5d i rozmiarze 5 GB
Co można zrobić dalej?
Aby utworzyć nową maszynę wirtualną z instance snapshot, zobacz artykuły
Instance snapshot można również utworzyć za pomocą pulpitu nawigacyjnego Horizon Dashboard. Zobacz artykuł Jak utworzyć instance snapshot przy użyciu Horizon na NSIS Cloud
Aby zapoznać się z omówieniem bootable vs. non-bootable volumes, zobacz artykuł Volumes rozruchowe i nierozruchowe w NSIS.
Pobieranie instance snapshot
Należy pamiętać, że w przypadku użycia do pobrania instance snapshot polecenia openstack image save objaśnionego w artykule /networking/OpenStack-instance-migrationcommand-line-on-NSIS-Cloud istnieją dwa przypadki:
- Ulotna pamięć masowa
To polecenie powinno działać poprawnie w przypadku pobierania instance snapshot korzystającego z ulotnej pamięci masowej.
- Trwała pamięć masowa
Wykonanie tego polecenia w celu pobrania instance snapshot korzystającego z trwałej pamięci masowej spowoduje pobranie pustego pliku.