Wie kann man eine Instanz-Schattenkopie mit OpenStack CLI auf EO-Lab erstellt

In diesem Artikel erfahren Sie, wie Sie mit OpenStack CLI eine Instanz-Schattenkopie in der EO-Lab-Cloud erstellen.

Schattenkopien ermöglichen es Ihnen, den Zustand der virtuellen Maschine zu archivieren. Sie können sie dann verwenden für

  • Backup

  • Migration zwischen Cloud-Umgebungen

  • Notfallwiederherstellung(Disaster Recovery) und/oder

  • Klonen von Umgebungen für Tests oder Entwicklung.

Wir behandeln beide Arten von Speicher für Instanzen: nicht-dauerhaften (flüchtig, „ephemeral“) und dauerhaften („persistenten“)* Speicher.

Vorgehensweise

In der Praxis werden Sie diese Methoden mit bereits vorhandenen Instanzen anwenden.

Um den Prozess besser zu verstehen, erstellen wir in diesem Artikel zwei neue Instanzen, eine mit nicht-dauerhaftem und die andere mit dauerhaftem Speichertyp. Die Namen der beiden Instanzen sind instance-which-uses-ephemeral und instance-which-uses-volume. Für beide Instanzen erstellen wir eine Schattenkopie.

Wenn Sie nur an einer der beiden Methoden interessiert sind, können Sie den entsprechenden Abschnitt überspringen.

Nach Durchführung eines Abschnitts können Sie die erstellten Ressourcen löschen, um Kosten zu sparen.

Oder Sie können sie behalten und mit Hilfe eines der in Was zu tun ist genannten Artikel eine Instanz daraus erstellen.

Was wir behandeln werden

Voraussetzungen

Nr. 1 Konto

Sie benötigen ein EO-Lab-Hosting-Konto mit Zugriff auf die Horizon-Schnittstelle: https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.

Nr. 2 Dauerhafter Speicher vs. nicht-dauerhafter Speicher

Bitte lesen Sie den Artikel Flüchtiger vs. persistenter Speicher (Option „Neues Volume erstellen“) , um den grundlegenden Unterschied zwischen dauerhaften und nicht-dauerhaften Speichertypen in OpenStack zu verstehen.

Nr. 3 Instanz mit nicht-dauerhaftem Speicher

Sie benötigen eine virtuelle Maschine, die in der EO-Lab Cloud gehostet wird.

Sie können eine Instanz mit nicht-dauerhaftem Speicher erstellen, indem Sie diesem Artikel folgen: How to create a VM using the OpenStack CLI client on EO-Lab cloud

Der eigentliche Befehl zum Erstellen einer Instanz aus diesem Artikel lautet

openstack server create \
--image Debian-custom-upload \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network dlr-access-net \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
Test-Debian

In den Beispielen in diesem Artikel verwenden wir ein Standard-Abbild von Ubuntu 22.04 LTS.

Mit nicht-dauerhaftem Speicher wird nur eine neue Instanz erstellt.

Nr. 4 Instanz mit dauerhafter Speicherung

Wenn Sie eine Instanz mit dauerhaftem Speicher erstellen, fügen Sie dem obigen Befehl lediglich eine neue Option hinzu; die Option ist –boot-from-volume gefolgt von einem

  • Leerzeichen und der

  • gewünschten Größe des neuen Volumes in Gigabyte.

Achten Sie darauf, dass Sie die für Ihre Bedürfnisse ausreichende Speichergröße eingeben.

Sie können sich auch an der Speichergröße orientieren, die mit dem von Ihnen gewählten Flavor für virtuelle Maschinen verfügbar ist (Befehl openstack flavor list, Spalte Disk)

Wenn Ihr Boot-Volume beispielsweise 16 GB haben soll, fügen Sie Folgendes hinzu:

--boot-from-volume 16

Ein vollständiger Befehl mit dauerhaftem Speicher:

openstack server create \
--image Debian-custom-upload \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network dlr-access-net \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
--boot-from-volume 16 \
Test-Debian

In den Beispielen in diesem Artikel verwenden wir ein Standard-Abbild von Ubuntu 22.04 LTS.

Mit dauerhaftem Speicher werden eine Instanz und ein Datenträger erstellt:

  • eine spezielle Art von Instanz (ohne nicht-dauerhaften Speicher) und

  • der Datenträger, der mit dieser Instanz verbunden ist.

Die Instanz bootet von dem Datenträger, der bei der Erstellung der Instanz angehängt wurde.

Andernfalls kann eine Instanz zwei oder mehr Datenträger haben, von denen jedoch nur einer als Startlaufwerk dient.

Nr. 5 Wie man Ressourcen löscht

Wenn Sie erfahren möchten, wie Sie Instanzen, Schattenkopien, Datenträger und andere OpenStack-Objekte löschen können, schauen Sie sich bitte die folgenden Artikel an

Nr. 6 OpenStack CLI-Client

Sie müssen den OpenStack CLI-Client installiert haben. Einer der folgenden Artikel sollte Ihnen dabei helfen:

Um den OpenStack-CLI-Client zur Verwaltung von EO-Lab-Cloud zu verwenden, müssen Sie sich authentifizieren: So aktivieren Sie den OpenStack CLI-Zugriff in der EO-Lab Cloud

Erstellen einer Schattenkopie einer Instanz, die nicht-dauerhaften Speicher verwendet

Erstellen und Auflisten einer Instanz mit CLI

Erstellen Sie eine Instanz mit dem Namen instance-which-uses-ephemeral gemäß Voraussetzung Nr. 3, zum Beispiel:

openstack server create \
--image "Ubuntu 22.04 LTS" \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network dlr-access-net \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
instance-which-uses-ephemeral

Stellen Sie sicher, dass Sie in diesem Befehl Ihre eigenen Parameter verwenden.

Listen Sie Ihre Instanzen auf:

openstack server list
../_images/how-to-create-instance-snapshot-cli-13_creodias.png

Wenn Ihre Instanz in der Spalte Status immer noch auf BUILD steht, warten Sie einige Minuten, bis sie den Status ACTIVE hat. Um die Liste zu aktualisieren, führen Sie openstack server list erneut aus.

Die obige Ausgabe enthält die ID einer Instanz, die verwendet werden kann, um in anderen Befehlen darauf zu verweisen. Diese ID ist eine Zeichenkette, die alle in einer Zeile stehen. Der OpenStack-CLI-Client gibt sie zur besseren Lesbarkeit möglicherweise als mehrere Zeilen aus. Falls dies geschieht, stellen Sie sicher, dass Sie die ID als eine einzige Zeile eingeben.

Schalten Sie die VM ab.

Schalten Sie Ihre Instanz ab. Am besten tun Sie dies mit den Funktionen des Betriebssystems. Wenn, wie hier, das verwendete Abbild Ubuntu 22.04 LTS war, können Sie die Horizon-Konsole oder den SSH-Zugang verwenden, um einen Befehl wie den folgenden auszuführen

sudo shutdown now

Der genaue Befehl hängt von der Art des Abbilds ab, so dass weitere Erläuterungen den Rahmen dieses Artikels sprengen würden.

Alternativ können Sie auch den OpenStack CLI-Befehl für diesen Zweck verwenden. Dieser Befehl sendet zunächst das Signal zum Herunterfahren und wenn die Instanz innerhalb einer bestimmten Zeitspanne nicht heruntergefahren wird, erzwingt OpenStack diesen Vorgang. Dies kann zu Datenverlusten führen. Der Befehl lautet:

openstack server stop <instance-id or instance-name>

Nach dem stop können Sie entweder die ID oder den Instanznamen verwenden.

Die Verwendung des Instanznamens bei der Referenzierung in diesem Befehl scheint einfacher und natürlicher zu sein. Wenn es jedoch zwei oder mehr Instanzen mit demselben Namen gibt, kann der Befehl einen Fehler zurückgeben. Wenn ein Name Sonderzeichen wie Leerzeichen oder Dollarzeichen $ enthält, müssen diese entsprechend maskiert werden, sonst funktioniert diese Methode möglicherweise nicht.

Deshalb ist die Verwendung der Instanz-ID die bessere Wahl. In unserem Fall sehen wir, dass der Wert der Spalte ID im obigen Beispiel lautet

95622f8c-ab89-4686-97c3-3018202f01d8

und so wird der Befehl zum Anhalten des Servers

openstack server stop 95622f8c-ab89-4686-97c3-3018202f01d8

Sie können überprüfen, ob die Instanz heruntergefahren ist, indem Sie openstack server list erneut ausführen - die Instanz sollte in der Spalte Status den folgenden Wert aufweisen: SHUTOFF

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

Erstellen einer Schattenkopie

Um eine Schattenkopie einer Instanz zu erstellen, verwenden Sie diesen Befehl:

openstack server image create \
--name <Schattenkopie-Name> \
--wait \
<Instanz-id or Instanz-Name>

Hier,

  • <Schattenkopie-Name> ist der Name der Schattenkopie (in diesem Beispiel wird instance_ephemeral_snapshot verwendet)

  • <Instanz-id or Instanz-Name> ist die ID oder der Name der Instanz

Ein langfristiger Ansatz wäre, in den Namen der Schattenkopie folgende Informationen mit aufzunehmen

  • das Datum,

  • die Zeit und

  • die Version der Schattenkopie.

Es kann aber auch etwas anderes sein, das Sie später daran erinnern kann, welche Version der Schattenkopie zu verwenden ist.

Bemerkung

Die Verwendung des Parameters –name zur Angabe des gewünschten Namens für Ihre Schattenkopie ist optional. Wenn Sie diesen nicht angeben, sollte die Schattenkopie denselben Namen wie Ihre Instanz erhalten. So würde der Befehl ohne diesen Parameter aussehen:

openstack server image create \
--wait \
<Instanz-id or Instanz-Name>

Der Parameter --wait sollte dazu führen, dass die OpenStack CLI erst dann zur Eingabeaufforderung zurückkehrt, wenn Ihre Instanz-Schattenkopie erstellt wurde.

Wenn der Vorgang erfolgreich war, sollten Sie eine ähnliche Ausgabe wie diese erhalten:

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

Er enthält verschiedene Informationen über diese Instanz-Schattenkopie. Ihre size ist gleich 17179869184, hier in Bytes angegeben, und sollte der Größe des Startlaufwerks Ihrer virtuellen Maschine entsprechen.

Wenn Sie nun Folgendes ausführen

openstack image list

sollte Ihre neue Instanz-Schattenkopie neben den anderen Abbildern aufgelistet sein, einschließlich derer, die standardmäßig in der EO-Lab-Cloud verfügbar sind. Sie sollte denselben Namen wie Ihre Instanz haben:

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

Was soll die Schattenkopie für nicht-dauerhaften Storage enthalten?

Diese Instanz-Schattenkopie sollte den Inhalt des Startlaufwerks Ihrer virtuellen Maschine enthalten. Er enthält jedoch nicht den Inhalt von Datenträgern, die möglicherweise mit dieser virtuellen Maschine verbunden waren.

Faustregel: Überprüfen Sie immer, ob Datenträger an die Instanz angehängt sind und wenn Sie deren Zustand ebenfalls bewahren möchten, kopieren oder erstellen Sie eine Schattenkopie von jedem dieser Datenträger.

Schattenkopie einer Instanz, die dauerhaften Speicher verwendet

Was bewirkt das Erstellen einer Schattenkopie einer Instanz mit dauerhaftem Speicher?

Beim Erstellen einer Schattenkopie einer Instanz mit dauerhaftem Speicher wird Folgendes erstellt:

  • Eine Schattenkopie des Datenträgers, die als Startlaufwerk der Instanz dient.

  • Schattenkopien anderer Datenträger, die mit der virtuellen Maschine verbunden sind (falls vorhanden).

  • Eine Instanz-Schattenkopie, die eine Größe von 0 Byte aufweist (da sie keine Daten enthält, die auf Ihrer virtuellen Maschine gespeichert sind). Diese Schattenkopie enthält in ihren Metadaten die Liste aller anderen Schattenkopien.

Beachten Sie, dass die Namen der Datenträger, die zum Zeitpunkt der Erstellung der Schattenkopie mit der VM verbunden waren, nicht beibehalten werden.

Wenn Sie in der Zukunft eine virtuelle Maschine aus dieser Instanz-Schattenkopie erstellen möchten:

  • Wenn Sie keine Schattenkopie des Datenträgers haben, das die Instanz als Startlaufwerk verwendet hat, können Sie die Instanz nicht aus dieser Schattenkopie wiederherstellen.

  • Wenn die Schattenkopie eines der angehängten Datenträger nicht existiert, wird die virtuelle Maschine ohne dieses Volume wiederhergestellt.

Erstellen und listen Sie Instanzen auf

Erstellen Sie eine Instanz mit dem Namen instance-which-uses-volume gemäß Voraussetzung Nr. 4, zum Beispiel:

openstack server create \
--image "Ubuntu 22.04 LTS" \
--flavor eo1.small \
--key-name ssh-key \
--network cloud_00734_1 \
--network dlr-access-net \
--security-group default \
--security-group allow_ping_ssh_icmp_rdp \
--boot-from-volume 16 \
instance-which-uses-volume

Stellen Sie sicher, dass Sie in diesem Befehl Ihre eigenen Parameter verwenden.

Listen Sie Ihre Instanzen auf:

openstack server list
../_images/how-to-create-instance-snapshot-cli-16_creodias.png

In diesem Beispiel haben wir eine virtuelle Maschine namens instance-which-uses-volume, die ein Datenträger als Startlaufwerk verwendet.

Wenn Ihre Instanz in der Spalte Status noch BUILD hat, warten Sie ein paar Minuten, bis sie den Status ACTIVE hat. Um die Liste zu aktualisieren, führen Sie openstack server list erneut aus.

Die oben angezeigte Ausgabe enthält die ID einer Instanz, die verwendet werden kann, um auf sie in anderen Befehlen zu verweisen. Diese ID ist eine Zeichenkette, die in einer einzigen Zeile dargestellt wird. Der OpenStack-CLI-Client könnte diese aus Gründen der besseren Lesbarkeit auf mehrere Zeilen aufteilen. Sollte dies der Fall sein, stellen Sie sicher, dass Sie die ID trotzdem in einer Zeile eingeben.

Wir können eine Liste der Datenträger anzeigen, die mit dieser virtuellen Maschine verbunden sind, indem wir den folgenden Befehl ausführen:

openstack server show -c volume_attached <instance-id or instance-name>

wobei <instance-id or instance-name> die ID oder der Name Ihrer Instanz ist.

Die Verwendung des Instanznamens, um auf ihn in diesem Befehl zu verweisen, scheint einfacher und natürlicher zu sein. Wenn jedoch zwei oder mehr Instanzen denselben Namen haben, kann der Befehl einen Fehler zurückgeben. Auch wenn ein Name Sonderzeichen wie Leerzeichen oder Dollarzeichen $ enthält, müssen diese entsprechend maskiert werden, oder diese Methode funktioniert möglicherweise überhaupt nicht.

Aus diesem Grund ist die Verwendung der Instanz-ID die bessere Wahl. In unserem Fall sehen wir, dass der Wert der Spalte ID im obigen Beispiel lautet

e69f90da-60d8-4d72-9b57-35f7063bc92d

Der Befehl zum Anzeigen der angehängten Volumes lautet daher:

openstack server show -c volume_attached e69f90da-60d8-4d72-9b57-35f7063bc92d
../_images/how-to-create-instance-snapshot-cli-17_creodias.png

Der Befehl openstack server show wird normalerweise verwendet, um detaillierte Informationen über eine virtuelle Maschine anzuzeigen. In diesem Fall haben wir die Ausgabe so gekürzt, dass sie nur den Inhalt des Abschnitts volumes_attached anzeigt.

Für jeden der Datenträger können Sie sehen, ob (True) oder ob OpenStack diesen Datenträger nicht (False) entfernen wird, wenn die Instanz entfernt werden soll (delete_on_termination). Außerdem sehen Sie die ID (Wert id) des Datenträgers.

Beachten Sie, dass in diesem Teil der Ausgabe das Komma zwischen den Eigenschaften eines Datenträgers und nicht zwischen Informationen über verschiedene Datenträger verwendet wird.

Schalten Sie die VM ab.

Schalten Sie Ihre Instanz ab. Am besten tun Sie dies mit den Funktionen Ihres Betriebssystems. Wenn, wie hier, das verwendete Abbild Ubuntu 22.04 LTS war, können Sie die Horizon-Konsole oder den SSH-Zugang verwenden, um einen Befehl wie den folgenden auszuführen.

sudo shutdown now

Der OpenStack CLI-Befehl, den Sie alternativ zum Herunterfahren der Instanz verwenden können, lautet

openstack server stop <instance-id or instance-name>

wobei <instance-id or instance-name> die ID oder der Name der Instanz ist.

Überprüfen Sie, ob die Instanz heruntergefahren ist, indem Sie Folgendes ausführen

openstack server list

Der Wert SHUTOFF in der Spalte Status zeigt an, dass der Server wie geplant angehalten wurde:

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

Im obigen Screenshot enthält die Spalte ID <instance_id> mit dem Wert

<instance_id> ist eine Zeichenkette, die alle in einer Zeile stehen. Der OpenStack-CLI-Client könnte dies zur besseren Lesbarkeit als mehrere Zeilen ausgeben. Sollte dies der Fall sein, stellen Sie sicher, dass Sie es trotzdem als eine Zeile verwenden.

Erstellen der Schattenkopie

Um eine Schattenkopie einer Instanz zu erstellen, verwenden Sie diesen Befehl:

openstack server image create \
--name <snapshot-name>
--wait \
<instance-id or instance-name>

Hier,

  • <snaphsot-name> ist der Name der Schattenkopie (in diesem Beispiel verwenden wir instance_persistent_snapshot

  • <instance-id or instance-name> ist die ID oder der Name der Instanz

Der Parameter --wait sollte dazu führen, dass der OpenStack-CLI erst dann zur Kommandozeile zurückkehrt, wenn Ihre Instanz-Schattenkopie erstellt wurde.

Bemerkung

Die Verwendung des Parameters –name zur Angabe des gewünschten Namens für Ihre Schattenkopie ist optional. Wenn Sie ihn nicht angeben, sollte die Schattenkopie denselben Namen wie Ihre Instanz haben. So würde dieser Befehl ohne diesen Parameter aussehen: .. code:

openstack server image create \
--wait \
<instance-id or instance-name>

Wenn der Vorgang erfolgreich war, sollten Sie eine ähnliche Ausgabe wie diese erhalten:

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

Ihre Instanz-Schattenkopie sollte nun beim Auflisten der Images sichtbar sein:

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

Erkunden von Instanz-Schattenkopie und Volumen-Schattenkopie, die gleichzeitig erstellt wurden

Die oben erwähnte Ausgabe des Befehls openstack server image create enthält verschiedene Informationen über diese Instanz-Schattenkopie.

Da diese Schattenkopie nicht die auf der virtuellen Maschine gespeicherten Daten enthält, erscheint seine Größe (im obigen Screenshot mit einem dunkelblauen Rechteck markiert) als 0 Byte.

Im Abschnitt Eigenschaften (Eigenschaft block_device_mapping) ist der Wert des Schlüssels snapshot_id die ID der Datenträger-Schattenkopie, der beim Erstellen dieser Instanz-Schattenkopie erstellt wurde. Im obigen Beispiel ist dies 59d2168d-d92a-4da5-bf87-a2f0399d0957

Sie können detaillierte Informationen über diese Volumen-Schattenkopie abrufen, indem Sie den folgenden Befehl ausführen:

openstack volume snapshot show <snapshot-id or snapshot-name>

Ersetzen Sie <snapshot_id> durch die ID oder den Namen der Schattenkopie.

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

Die Größe sollte die gleiche sein wie die Größe des ursprünglichen Datenträgers, aus dem sie erstellt wurde.

Diese Datenträger-Schattenkopie sollte beim Auflisten der Volumen-Schattenkopien wie gewohnt sichtbar sein:

openstack volume snapshot list
../_images/how-to-create-instance-snapshot-cli-20_creodias.png

Was passiert, wenn mehrere Datenträger vorhanden sind?

Wenn mehrere Datenträger mit Ihrer Instanz verbunden sind, sollte die Schattenkopie von jedem dieser Datenträger zusammen mit der Instanz-Schattenkopie erstellt werden. Alle diese Volume-Schattenkopien sollten im Abschnitt properties der Instanz-Schattenkopie unter der Eigenschaft block_device_mapping erscheinen. So könnte es aussehen:

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

In diesem Beispiel gibt es zwei Datenträger-Schattenkopien, die jeweils für einen der Datenträger unserer VM erstellt wurden:

  • einer mit der ID 11ce436a-160a-4e05-9c3d-a298ea04e05b und einer Größe von 16 GB, sowie

  • ein weiterer mit der ID 7190de3d-c90b-42a7-993c-8b0bf7bcdb5d und einer Größe von 5 GB

Was ist als nächstes zu tun?

Um eine neue virtuelle Maschine aus einer Instanz-Schattenkopie zu erstellen, siehe

Sie können eine Instanz-Schattenkopie auch mit dem Horizon-Dashboard erstellen. Siehe Wie kann man eine Schattenkopie einer VM mit Horizon auf EO-Lab erstellen

Für eine Diskussion bezüglich bootfähiger und nicht-bootfähiger Datenträger, siehe Bootfähige versus nicht bootfähige Volumes auf EO-Lab.

Herunterladen einer Instanz-Schattenkopie

Es gibt etwas, das Sie beachten sollten, wenn Sie den Befehl openstack image save verwenden, der in /networking/OpenStack-instance-migrationcommand-line-on-EO-Lab erklärt wird, um eine Instanz-Schattenkopie herunterzuladen. Es gibt zwei Fälle:

Nicht-dauerhafter Speicher

Dieser Befehl sollte korrekt funktionieren, um Schattenkopien einer Instanz herunterzuladen, die nicht-dauerhaften Speicher verwendet.

Dauerhafter Speicher

Das Ausführen dieses Befehls zum Herunterladen einer Schattenkopie einer Instanz, die dauerhaften Speicher verwendet, führt zum Herunterladen einer leeren Datei.