Skip to main content
  • »
  • OPENSTACK CLI »
  • Jak utworzyć instance snapshot za pomocą OpenStack CLI na NSIS

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
../_images/how-to-create-instance-snapshot-cli-13_creodias.png

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.

../_images/how-to-create-instance-snapshot-cli-12_creodias.png

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:

../_images/how-to-create-instance-snapshot-cli-14_creodias.png

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:

../_images/how-to-create-instance-snapshot-cli-15_creodias.png

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
../_images/how-to-create-instance-snapshot-cli-16_creodias.png

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
../_images/how-to-create-instance-snapshot-cli-17_creodias.png

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:

../_images/how-to-create-instance-snapshot-cli-21_creodias.png

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:

../_images/how-to-create-instance-snapshot-cli-18_creodias.png

Snapshot instance powinien być teraz widoczny podczas wyświetlania obrazów:

openstack image list
../_images/how-to-create-instance-snapshot-cli-22_creodias.png

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.

../_images/how-to-create-instance-snapshot-cli-19_creodias.png

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
../_images/how-to-create-instance-snapshot-cli-20_creodias.png

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:

../_images/how-to-create-instance-snapshot-cli-23_creodias.png

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.