Mit einem Skript tägliche, wöchentliche und monatliche rotierende VM-Backups auf CODE-DE-Lab erstellen
Rotierende Backups sind eine OpenStack-Backup-Strategie, bei der ältere Backups automatisch entfernt werden, sobald eine festgelegte Anzahl erreicht ist. Dadurch wächst der Backup-Speicherbedarf nicht unbegrenzt, während eine ausgewählte Anzahl aktueller Backups für die Wiederherstellung verfügbar bleibt.
Backup-Erstellung und Image-Erstellung im Vergleich
Unter OpenStack gibt es zwei gängige Möglichkeiten, Backups zu erstellen:
openstack server backup create
openstack server image create
Sie verhalten sich unterschiedlich.
Eigenschaft |
openstack server backup create |
openstack server image create |
|---|---|---|
Zuordnung zur VM |
Zuordnung über die Image-Eigenschaft backup. |
Zuordnung über den Backup-Namen. |
Rotationsunterstützung |
Rotation mit –backup-type und inkrementellen Backups. |
Keine integrierte Rotationsunterstützung. |
Einordnung in Horizon |
Als image gekennzeichnet. |
Als snapshot gekennzeichnet. |
Horizon Select Boot Source |
Instance Snapshot wählen. |
Image wählen. |
Zweck |
Hauptsächlich für rotierbare und verwaltbare Backups. |
Erstellt einen einzelnen VM-Snapshot ohne Rotation. |
Mehrere rotierende Zeitpläne |
Nein, nur einer. |
Ja, beispielsweise täglich, wöchentlich und monatlich. |
Unterstützung inkrementeller Backups |
Ja. |
Nein, erstellt immer einen vollständigen Snapshot. |
Geeigneter Anwendungsfall |
Automatisierte Backup-Strategien mit integrierter Rotation. |
Den aktuellen VM-Zustand zum Klonen oder Zurücksetzen erfassen. |
Per Skript steuerbar? |
Ja. |
Ja. |
In diesem Artikel erstellen Sie mehrere rotierende Backup-Serien mit einem Skript, das mehrere OpenStackClient-Befehle verwendet.
Voraussetzungen
Nr. 1 Konto
Sie benötigen ein Hosting-Konto bei CODE-DE-Lab mit Zugriff auf die Horizon-Oberfläche: https://tenant-manager.code-de.org.
Nr. 2 Eine VM, die gesichert werden soll
Sie benötigen eine virtuelle Maschine zum Sichern. Falls noch keine vorhanden ist, können Sie sie anhand eines dieser Artikel erstellen:
Wie erstelle ich eine neue Linux-VM im OpenStack-Dashboard (Horizon)?
Wie man eine Linux-VM erstellt und vom Windows-Desktop aus darauf zugreift auf CODE-DE-Lab
Wie man eine Linux-VM erstellt und von einer Linux-Kommandozeile auf CODE-DE-Lab zugreift
Wie Sie eine virtuelle Windows-Maschine erstellen, erfahren Sie in diesem Artikel:
Wie man eine Windows Server-VM erstellt und vom Windows-Desktop aus auf sie zugreift auf CODE-DE-Lab
In diesem Artikel heißt die zu sichernde virtuelle Maschine vm-to-backup. Ersetzen Sie diesen Namen durch den Namen Ihrer eigenen virtuellen Maschine, wo dies erforderlich ist.
Dieser Artikel behandelt das Sichern virtueller Maschinen, die:
keine verbundenen Volumes haben,
ephemeren statt persistenten Speicher verwenden.
Weitere Informationen finden Sie in Flüchtiger vs. persistenter Speicher (Option „Neues Volume erstellen“).
Nr. 3 Ein Server oder Computer für den Backup-Prozess
Sie benötigen eine Umgebung, in der die Backup-Befehle ausgeführt werden.
In diesem Artikel verwendet diese Umgebung Ubuntu 24.04 LTS und heißt backing-server. Dies kann unter anderem sein:
eine virtuelle Maschine in der CODE-DE-Lab Cloud,
Ihr eigener physischer Server,
eine virtuelle Maschine außerhalb der CODE-DE-Lab Cloud.
Stellen Sie sicher, dass diese Umgebung eine Verbindung zur CODE-DE-Lab Cloud herstellen kann.
Die Umgebung muss laufen, wenn ein neues Backup erstellt werden soll.
Nr. 4 OpenStackClient auf backing-server installiert
Auf backing-server muss OpenStackClient installiert sein.
Wie installiert man den OpenStackClient (Linux)?
Nr. 5 Anwendungszugangsdaten
In diesem Artikel wird der Backup-Vorgang automatisiert. Daher sollte die Authentifizierung ebenfalls automatisiert sein.
Verwenden Sie dafür Anwendungszugangsdaten, gespeichert in clouds.yml als Konfigurationsdatei.
Folgen Sie So erzeugen und verwenden Sie Anwendungsinformationen über CLI auf CODE-DE-Lab, um eine Datei clouds.yml mit Ihren Anwendungszugangsdaten zu erstellen.
Kopieren Sie clouds.yml nach backing-server. Nach der Installation sucht openstack standardmäßig an folgenden Speicherorten nach clouds.yml:
$HOME/.config/openstack/clouds.yml
/etc/openstack/clouds.yml
Sie können clouds.yml an einem dieser Speicherorte ablegen. Anschließend können Sie die Zugangsdaten aus jedem Verzeichnis verwenden.
$HOME ist die Umgebungsvariable, die üblicherweise auf Ihr Benutzerverzeichnis verweist.
Sie können clouds.yml auch in einem anderen Verzeichnis ablegen. Dann müssen Sie openstack aus diesem Verzeichnis ausführen oder OpenStackClient den Pfad zu dieser Datei ausdrücklich angeben.
Wichtig
Die Datei clouds.yml speichert Zugangsdaten im Klartext. Stellen Sie sicher, dass ihr Speicherort ausreichend geschützt ist.
Die Datei clouds.yml kann mehrere Zugangsprofile enthalten. Wählen Sie das von OpenStackClient verwendete Profil mit –os-cloud. In diesem Artikel dient backup_test als beispielhafter Profilname.
Auf CODE-DE-Lab können Anwendungszugangsdaten für mehrere Regionen gelten. Die Region wird mit –os-region ausgewählt.
Definieren Sie für die Beispiele dieses Artikels folgende Shell-Variablen:
OS_CLOUD_NAME="backup_test"
Verwenden Sie die Registerkarte der Region, in der Ihre virtuelle Maschine liegt:
OS_REGION_NAME="FRA1-3"
Wichtig
Diese Shell-Variablen gelten nur in der aktuellen Terminalsitzung. Wenn Sie ein neues Terminal öffnen, müssen Sie sie erneut definieren.
Listen Sie die virtuellen Maschinen Ihres Projekts auf, um Zugangsdaten und Region zu prüfen:
openstack server list \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME"
Nr. 6 Kenntnisse zu cron unter Linux
cron ist ein Standardwerkzeug unter Linux, das Aufgaben nach einem festgelegten Zeitplan ausführt. Dieser Artikel verwendet cron, um rotierende Backups zu automatisieren.
Wenn cron installiert ist, sollte folgender Befehl:
systemctl status cron
eine Ausgabe wie diese erzeugen:
Falls cron nicht installiert ist, installieren und aktivieren Sie es:
sudo apt update
sudo apt install cron -y
sudo systemctl enable --now cron
systemctl status cron
Nr. 7 Ein Texteditor auf backing-server
Zwei verbreitete Terminal-Editoren sind vim und nano.
Installieren Sie vim:
sudo apt install vim
Oder installieren Sie nano:
sudo apt install nano
Führen Sie folgenden Befehl aus, um den Standardeditor unter Ubuntu 24.04 auszuwählen:
select-editor
Sie sollten aufgefordert werden, den Editor anhand seiner Nummer auszuwählen, beispielsweise:
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]:
Wählen Sie den gewünschten Editor und drücken Sie Enter.
Der Algorithmus für rotierende Backups
Legen Sie vor dem ersten Aufruf des Backup-Skripts Folgendes fest:
- Name der Backup-Serie
Beispielsweise daily, weekly oder monthly.
- Rotationsgrenze
Die Anzahl aufzubewahrender Backups. In diesem Artikel heißt diese Anzahl maxN.
Bei jedem Aufruf führt das Skript folgende Schritte aus:
- Backups umbenennen
Vorhandene Backups werden so umbenannt, dass ihre Nummern das neueste und das älteste Backup kennzeichnen. Backup Nummer 1 ist immer das neueste.
- Das älteste Backup löschen
Wenn die Anzahl der Backups maxN überschreitet, wird das älteste Backup gelöscht.
- Ein neues Backup erstellen
Ein neues Backup mit der Nummer 1 im Namen wird erstellt.
Ein Backup manuell ohne Rotation erstellen
Der Befehl openstack server image create erstellt vollständige Snapshots, bietet jedoch keinen integrierten Parameter für rotierende Backups.
Die einfachste Form des Befehls lautet:
openstack server image create \
--name my-vm-backup \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-vm
Dabei gilt:
my-vm-backup ist der Name des Backups,
my-vm ist der Name Ihrer virtuellen Maschine,
–os-cloud wählt das Profil der Anwendungszugangsdaten,
–os-region wählt die Region.
So löschen Sie ein altes Image:
openstack image delete \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-vm-backup
Mehrere rotierende Zeitpläne
Manuelle Backup-Befehle sind fehleranfällig. Sie könnten einen Aufruf vergessen oder einen falschen VM- oder Backup-Namen verwenden.
Ein Skript kann zu festgelegten Zeiten ausgeführt werden und mehrere rotierende Backup-Serien unterstützen. Beispielsweise können Sie getrennte tägliche, wöchentliche und monatliche Serien für dieselbe virtuelle Maschine einrichten.
Das Skript dieses Artikels verwendet:
openstack image set zum Umbenennen vorhandener Backups,
openstack server image create zum Erstellen eines neuen Backups,
openstack image delete zum Löschen des ältesten Backups.
Jeder Backup-Name besteht aus:
dem Instanznamen, beispielsweise vm-to-backup,
einem Bindestrich,
dem Namen der Backup-Serie, beispielsweise weekly,
einem Bindestrich,
der Backup-Nummer von 1 bis maxN.
Beispiel:
vm-to-backup-weekly-3
Schritt 1: Ein Skript erstellen
Öffnen Sie Ihren Texteditor, erstellen Sie backup.sh und geben Sie folgendes Skript ein:
#!/bin/bash
if [[ "$#" -ne 5 ]]
then
echo "Expecting 5 arguments: vm name, backup name, number of backups, os-cloud name, os-region name"
exit 1
fi
vm_name=$1
backup_core_name=$1"-"$2
count=$3
os_cloud_name=$4
os_region_name=$5
reifnumber='^[0-9]+$'
if ! [[ $count =~ $reifnumber ]]
then
echo "Given backup count is not a number"
exit 1
fi
# Rename all previous backups by adding 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 "$os_cloud_name" \
--os-region "$os_region_name"
done
# Delete the backup whose number is greater by 1 than the rotation limit.
openstack image delete \
"$backup_core_name-$((count+1))" \
--os-cloud "$os_cloud_name" \
--os-region "$os_region_name"
# Create a new backup with number 1.
openstack server image create \
--name "$backup_core_name-1" \
"$vm_name" \
--os-cloud "$os_cloud_name" \
--os-region "$os_region_name"
Diese Version übernimmt das OpenStack-Cloud-Profil und die Region als Argumente. Daher enthält das Skript keine fest hinterlegten Regionsnamen.
Speichern Sie backup.sh in Ihrem Benutzerverzeichnis.
Fügen Sie Ausführungsberechtigungen hinzu:
chmod +x backup.sh
Schritt 2: Das Skript ausführen
Testen Sie das Skript aus Ihrem Benutzerverzeichnis.
Das Skript nimmt fünf Argumente entgegen:
den Namen oder die ID der virtuellen Maschine, beispielsweise vm-to-backup,
den Namen der Backup-Serie, beispielsweise manual-backup,
die Anzahl aufzubewahrender Backups, beispielsweise 3,
den Namen des OpenStack-Cloud-Profils, beispielsweise backup_test,
den Namen der Region.
Führen Sie Folgendes aus:
./backup.sh vm-to-backup manual-backup 3 "$OS_CLOUD_NAME" "$OS_REGION_NAME"
Sie sollten eine Ausgabe wie diese erhalten:
Backup-Dateien anzeigen
Die vom Skript erstellten Backup-Dateien sind Snapshots. Um alle Snapshots im Projekt aufzulisten, führen Sie Folgendes aus:
openstack image list \
--property image_type=snapshot \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME"
Einige Snapshots können Backups dieses Skripts sein, während andere manuell erstellt oder importiert wurden.
Verhalten des Skripts bei wiederholter Ausführung
Das folgende Beispiel zeigt, was passiert, wenn Sie das Skript mit denselben Argumenten viermal nacheinander ausführen.
Vor diesem Aufruf gibt es im Projekt keine Backups.
Das Skript versucht, vorhandene Backups umzubenennen:
Ursprüngliche Nummer |
Nummer nach Umbenennung |
Ergebnis |
|---|---|---|
3 |
4 |
Fehlgeschlagen |
2 |
3 |
Fehlgeschlagen |
1 |
2 |
Fehlgeschlagen |
Diese Images existieren noch nicht. Die Umbenennungen schlagen daher mit Meldungen wie No Image found fehl.
Anschließend versucht das Skript, folgendes Image zu löschen: vm-to-backup-manual-backup-4. Da es noch nicht existiert, schlägt der Löschvorgang fehl.
Zuletzt erstellt das Skript ein neues Backup mit dem Namen vm-to-backup-manual-backup-1.
Backups nach diesem Aufruf:
vm-to-backup-manual-backup-1
Vor diesem Aufruf gibt es ein Backup:
vm-to-backup-manual-backup-1
Das Skript versucht, vorhandene Backups umzubenennen:
Ursprüngliche Nummer |
Nummer nach Umbenennung |
Ergebnis |
|---|---|---|
3 |
4 |
Fehlgeschlagen |
2 |
3 |
Fehlgeschlagen |
1 |
2 |
Erfolgreich |
Nur die letzte Umbenennung gelingt, da Backup Nummer 1 existiert.
Anschließend erstellt das Skript ein neues Backup mit dem Namen vm-to-backup-manual-backup-1.
Backups nach diesem Aufruf:
vm-to-backup-manual-backup-1
vm-to-backup-manual-backup-2
Vor diesem Aufruf gibt es zwei Backups:
vm-to-backup-manual-backup-1
vm-to-backup-manual-backup-2
Das Skript versucht, vorhandene Backups umzubenennen:
Ursprüngliche Nummer |
Nummer nach Umbenennung |
Ergebnis |
|---|---|---|
3 |
4 |
Fehlgeschlagen |
2 |
3 |
Erfolgreich |
1 |
2 |
Erfolgreich |
Dieses Mal gelingen zwei Umbenennungen.
Anschließend erstellt das Skript ein neues Backup mit dem Namen vm-to-backup-manual-backup-1.
Backups nach diesem Aufruf:
vm-to-backup-manual-backup-1
vm-to-backup-manual-backup-2
vm-to-backup-manual-backup-3
Die Anzahl der Backups entspricht nun maxN. Beim nächsten Aufruf wird ein Image entfernt.
Vor diesem Aufruf gibt es drei Backups:
vm-to-backup-manual-backup-1
vm-to-backup-manual-backup-2
vm-to-backup-manual-backup-3
Das Skript versucht, vorhandene Backups umzubenennen:
Ursprüngliche Nummer |
Nummer nach Umbenennung |
Ergebnis |
|---|---|---|
3 |
4 |
Erfolgreich |
2 |
3 |
Erfolgreich |
1 |
2 |
Erfolgreich |
Nach dem Umbenennen enthält das Projekt:
vm-to-backup-manual-backup-2
vm-to-backup-manual-backup-3
vm-to-backup-manual-backup-4
Das Skript löscht vm-to-backup-manual-backup-4, da dessen Nummer größer als maxN ist.
Anschließend erstellt es ein neues Backup mit dem Namen vm-to-backup-manual-backup-1.
Backups nach diesem Aufruf:
vm-to-backup-manual-backup-1
vm-to-backup-manual-backup-2
vm-to-backup-manual-backup-3
Weitere Aufrufe verhalten sich wie der vierte, sofern Sie stets dieselben Argumente verwenden und kein Befehl unerwartet fehlschlägt.
Schritt 3: Die Crontab-Datei öffnen
Verwenden Sie cron, um die rotierenden Backups zu automatisieren.
Öffnen Sie die Crontab-Datei:
crontab -e
Je nach System:
wird die Datei im Standardeditor geöffnet oder
Sie werden aufgefordert, einen Standardeditor auszuwählen.
Um den Editor nur für diesen Befehl festzulegen, verwenden Sie die Variable EDITOR.
Öffnen Sie Crontab in nano:
EDITOR=nano crontab -e
Öffnen Sie Crontab in vim:
EDITOR=vim crontab -e
Schritt 4: Die Crontab-Datei bearbeiten
Entfernen Sie frühere Backup-Zeitpläne aus dieser Datei, falls Sie diese nicht mehr benötigen.
Erstellen Sie Cron-Jobs für die gewünschten Backup-Zeitpläne.
Die Crontab-Datei kann so aussehen:
Speichern Sie nach der Bearbeitung die Datei und schließen Sie den Editor. Sind die Jobs korrekt definiert, werden sie nach ihren Zeitplänen ausgeführt.
Beispiele für Cron-Jobs
Täglich
10 0 * * * /home/eouser/backup.sh vm-to-backup daily_backup 5 backup_test FRA1-3
Dieser Job läuft täglich zehn Minuten nach Mitternacht. Er erstellt die Serie daily_backup für die VM vm-to-backup und behält fünf Backups.
Ersetzen Sie backup_test und FRA1-3 durch Ihr tatsächliches Cloud-Profil und Ihre Region.
Nach fünf Tagen sollte die Backup-Liste etwa so aussehen:
Backup Nummer 1 ist das neueste und Backup Nummer 5 das älteste.
Wöchentlich
15 0 * * 1 /home/eouser/backup.sh vm-to-backup weekly_backup 4 backup_test FRA1-3
Dieser Job läuft jeden Montag 15 Minuten nach Mitternacht. Er erstellt die Serie weekly_backup und behält vier Backups.
Nach vier Wochen sollte die Backup-Liste etwa so aussehen:
Monatlich
20 0 2 * * /home/eouser/backup.sh vm-to-backup monthly_backup 3 backup_test FRA1-3
Dieser Job läuft am zweiten Tag jedes Monats 20 Minuten nach Mitternacht. Er erstellt die Serie monthly_backup und behält drei Backups.
Nach drei Monaten sollte die Backup-Liste etwa so aussehen:
Einschränkungen
Dieses Skript zeigt eine mögliche Methode zum Erstellen mehrerer rotierender Backup-Serien.
Sobald eine Backup-Serie vorhanden ist, führen Sie das Skript für diese Serie nicht mit einer Rotationsgrenze aus, die kleiner als die Anzahl bereits vorhandener Backups ist.
Wenn Sie beispielsweise eine VM namens my-vm und fünf wöchentliche Backups haben, dürfen Sie nicht Folgendes ausführen:
./backup.sh my-vm weekly 4 "$OS_CLOUD_NAME" "$OS_REGION_NAME"
Das Skript enthält außerdem keine erweiterte Fehlerbehandlung oder Berichterstattung. Wenn ein Backup-Vorgang fehlschlägt, beispielsweise weil die Verbindung zur OpenStack-API nicht verfügbar ist, wird die Backup-Serie möglicherweise nicht wie erwartet rotiert.
Verwenden Sie dieselbe Namenskonvention nicht für Images, die Sie manuell außerhalb dieses Skripts erstellen. Andernfalls könnte das Skript Images umbenennen oder löschen, die nicht zur rotierenden Backup-Serie gehören sollten.
Backups wiederherstellen
Die mit diesem Skript erstellten Backups sind Snapshots. Wie andere OpenStack-Images können sie verwendet werden, um:
neue virtuelle Maschinen zu erstellen,
den Festplatteninhalt einer vorhandenen virtuellen Maschine durch deren Neuaufbau zu ersetzen.
Vor der Wiederherstellung wird empfohlen, eine Kopie des Backup-Images zu erstellen. So wird verhindert, dass die rotierende Backup-Serie unerwartet unterbrochen wird, wenn das Skript das ursprüngliche Backup später umbenennt oder löscht.
Schritt 1: Größe und Namen oder ID des wiederherzustellenden Images ermitteln
Listen Sie die Snapshots Ihres Projekts auf:
openstack image list \
--property image_type=snapshot \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME"
Wählen Sie das wiederherzustellende Backup. In diesem Beispiel heißt es my-backup2.
Notieren Sie den Namen oder die ID dieses Images.
Sie benötigen außerdem die vom Image geforderte Mindestgröße der Festplatte:
openstack image show \
-c min_disk \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2
Die Ausgabe sollte den Wert in GB zurückgeben:
+----------+-------+
| Field | Value |
+----------+-------+
| min_disk | 8 |
+----------+-------+
Schritt 2: Ein Volume aus dem Image erstellen
Da OpenStack in diesem Ablauf kein Image direkt kopiert, erstellen Sie zuerst ein temporäres Volume aus dem Image:
openstack volume create \
--image my-backup2 \
--size 8 \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2-volume
Dabei gilt:
my-backup2 ist der Name oder die ID Ihres Images,
8 ist die Mindestgröße des Volumes für Ihr Image in GB,
my-backup2-volume ist der Name des temporären Volumes.
Das Volume hat zunächst wahrscheinlich den Status uploading. Warten Sie, bis es den Status available erreicht.
Prüfen Sie den Status:
openstack volume show \
-c status \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2-volume
Schritt 3: Ein Image aus dem Volume erstellen
Erstellen Sie ein Image aus dem temporären Volume:
openstack image create \
--volume my-backup2-volume \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2-copy
Das Image hat zunächst wahrscheinlich den Status uploading. Warten Sie, bis es den Status active erreicht.
Prüfen Sie den Status:
openstack image show \
-c status \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2-copy
Schritt 4: Das temporäre Volume löschen
Löschen Sie nach dem Erstellen der Image-Kopie das temporäre Volume:
openstack volume delete \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2-volume
Die Ausgabe sollte leer sein.
Schritt 5: Das Backup wiederherstellen
Sie haben nun eine Kopie des wiederherzustellenden Backups. Das ursprüngliche Backup kann Teil der rotierenden Backup-Serie bleiben.
Wählen Sie eine der folgenden Wiederherstellungsmethoden.
Methode 1: Eine vorhandene Instanz neu aufbauen
Beim Neuaufbau einer Instanz wird der aktuelle Inhalt ihrer virtuellen Festplatte durch den Inhalt eines Images ersetzt. Metadaten wie VM-Name oder ID bleiben erhalten. Dies gilt auch für die Zuweisungen von Floating IPs.
Während dieses Vorgangs ist die virtuelle Maschine nicht verfügbar.
Warnung
Dieser Vorgang entfernt Daten von der virtuellen Maschine, auf der er ausgeführt wird. Stellen Sie sicher, dass sie keine Daten enthält, die Sie behalten müssen.
Bauen Sie die VM aus dem kopierten Image neu auf:
openstack server rebuild \
--image my-backup2-copy \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
vm-to-backup
Sie sollten eine Ausgabe wie diese erhalten:
Der VM-Status sollte zu REBUILD wechseln.
Warten Sie, bis die Wiederherstellung abgeschlossen ist. Die virtuelle Maschine sollte anschließend eingeschaltet und betriebsbereit sein.
Prüfen Sie den VM-Status:
openstack server show \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
vm-to-backup
Fügen Sie -c status hinzu, um nur den Status anzuzeigen:
openstack server show \
-c status \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
vm-to-backup
Bei Status ACTIVE sollte die VM betriebsbereit sein.
Methode 2: Eine neue virtuelle Maschine aus dem Backup erstellen
Mit den in diesem Ablauf erstellten Images können Sie auch eine neue virtuelle Maschine erstellen. Sie enthält die Dateien und das Betriebssystem aus dem Backup. Die ursprüngliche virtuelle Maschine bleibt davon unberührt.
Falls die ursprüngliche VM Floating IPs hatte und Sie diese weiterverwenden möchten, trennen Sie sie zuerst von der ursprünglichen VM. Die Floating IPs bleiben in Ihrem Projekt und können anschließend der neuen VM zugewiesen werden.
Folgen Sie den Anweisungen in Eine VM mit dem OpenStack-CLI-Client in der CODE-DE-Lab Cloud erstellen.
Im Abschnitt Image von Schritt 1 dieses Artikels:
verwenden Sie die ID des kopierten Backup-Images.
Wählen Sie im Abschnitt Flavor einen Flavor, der groß genug für das wiederhergestellte System ist. Häufig ist dies derselbe Flavor wie bei der ursprünglichen virtuellen Maschine.
Probleme und Fehlerbehebung
Bei Verwendung von:
openstack image create \
--volume my-backup2-volume \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2-copy
kann eine Meldung wie diese erscheinen:
VolumeManager.upload_to_image() got an unexpected keyword argument 'visibility' when trying to create an image from Volume
Dies bedeutet, dass die OpenStackClient-Version und die OpenStack-Version in der Cloud möglicherweise nicht vollständig kompatibel sind.
Eine praktische Umgehung besteht darin, OS_VOLUME_API_VERSION auf 3.1 oder einen höheren unterstützten Wert zu setzen:
export OS_VOLUME_API_VERSION=3.1
Sie können auch den Parameter –os-volume-api-version mit dem Befehl openstack image create verwenden:
openstack image create \
--volume my-backup2-volume \
--os-volume-api-version 3.1 \
--os-cloud "$OS_CLOUD_NAME" \
--os-region "$OS_REGION_NAME" \
my-backup2-copy
Nächste Schritte
Das Skript dieses Artikels erstellt Instanz-Snapshots.
Weitere Informationen finden Sie in Wie kann man eine Schattenkopie einer VM mit Horizon auf CODE-DE-Lab erstellen.
Wenn Sie keine mehreren rotierenden Zeitpläne benötigen, ist der offizielle Befehl openstack server backup create möglicherweise die bessere Wahl.
Mit dem Backup-Befehl rotierende Backups virtueller Maschinen in der CODE-DE-Lab Cloud erstellen