Mit dem Backup-Befehl rotierende Backups virtueller Maschinen in der CODE-DE-Lab Cloud erstellen

Rotierende Backups sind eine OpenStack-Backup-Strategie, bei der ältere Backups automatisch gelöscht werden, sobald eine festgelegte Anzahl von Backups erstellt wurde. So wächst der Speicherbedarf nicht unbegrenzt, während eine ausgewählte Anzahl aktueller Backups für die Wiederherstellung im Notfall verfügbar bleibt.

Der Algorithmus für rotierende Backups

Das Erstellen rotierender Backups virtueller Maschinen umfasst folgende Schritte:

Das Backup-Intervall festlegen

Üblicherweise täglich, wöchentlich, monatlich oder in einem anderen zu Ihrer Wiederherstellungsrichtlinie passenden Intervall.

Die Rotationsgrenze festlegen

Die Anzahl aufzubewahrender Backups. In diesem Artikel heißt diese Anzahl maxN.

Ältere Backups löschen

Sobald die Grenze erreicht ist, werden ältere Backups automatisch gelöscht, üblicherweise beginnend mit dem ältesten.

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.

Vergleich der Befehle zur Backup- und Image-Erstellung

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 –rotate.

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 integrierte Rotation.

Unterstützung inkrementeller Backups

Ja.

Nein, erstellt einen vollständigen Snapshot.

Mehrere rotierende Zeitpläne

Nein, nur eine rotierende Serie.

Ja, beispielsweise täglich, wöchentlich und monatlich.

Geeigneter Anwendungsfall

Einfache automatisierte Backup-Strategie mit einer Rotationsserie.

VM-Zustand zum Klonen, Zurücksetzen oder für eine eigene skriptgesteuerte Rotation erfassen.

Per Skript steuerbar?

Ja.

Ja.

In diesem Artikel verwenden Sie openstack server backup create, um rotierende Backups virtueller Maschinen zu erstellen.

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

Nr. 3 Ein Server für die Ausführung des Backup-Prozesses

Sie benötigen einen Server, auf dem die Backup-Befehle ausgeführt werden. Dieser Server kann in derselben Region wie die gesicherte Instanz, in einer anderen Region oder außerhalb der CODE-DE-Lab Cloud liegen.

In diesem Artikel heißt dieser Server backing-server. Vorausgesetzt wird eine Maschine mit Ubuntu 24.04 LTS und SSH-Zugriff.

Nr. 4 OpenStackClient auf backing-server installiert

Auf backing-server muss OpenStackClient installiert sein.

Wie installiert man den OpenStackClient (Linux)?

Nachdem Sie sich per SSH bei backing-server angemeldet haben, verwenden Sie openstack, um die Backups von vm-to-backup zu verwalten.

Nr. 5 Anwendungszugangsdaten

In diesem Artikel wird die Backup-Erstellung automatisiert. Daher sollte auch die Authentifizierung automatisiert sein.

Verwenden Sie dafür Anwendungszugangsdaten, gespeichert in clouds.yml als Konfigurationsdatei.

In So erzeugen und verwenden Sie Anwendungsinformationen über CLI auf CODE-DE-Lab erfahren Sie, wie Sie Anwendungszugangsdaten erstellen und in clouds.yml speichern.

Kopieren Sie clouds.yml nach backing-server.

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.

Die Region wird mit dem Parameter –os-region ausgewählt.

Definieren Sie für die Beispiele dieses Artikels folgende Shell-Variable:

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. Hier wird es nur für eine grundlegende Automatisierung verwendet.

Wenn cron installiert ist, sollte folgender Befehl:

systemctl status cron

eine Ausgabe wie diese erzeugen:

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

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

Der grundlegende Befehl zum Erstellen oder Ändern von Cron-Jobs lautet:

crontab -e

Standardmäßig wird die Crontab-Datei möglicherweise im vorinstallierten Editor geöffnet. Wenn Sie nano verwenden möchten, installieren Sie es zunächst:

sudo apt install nano

So öffnen Sie crontab mit nano:

EDITOR=nano crontab -e

Nr. 7 Kenntnisse zu openstack server backup create

Der Befehl openstack server backup create erstellt ein Backup-Image eines Servers.

Die grundlegende Syntax des CLI-Befehls finden Sie in Wie kann man eine Instanz sichern und auf den Desktop herunterladen?; damit erstellen Sie ein Server-Backup.

Das erste Backup erstellen

Der folgende Befehl erstellt manuell ein rotierendes Backup:

openstack server backup create \
  --name my-backup1 \
  --rotate 3 \
  --os-cloud "$OS_CLOUD_NAME" \
  --os-region "$OS_REGION_NAME" \
  vm-to-backup

Dabei gilt:

  • my-backup1 ist der Name des Backups,

  • 3 ist die Rotationsgrenze,

  • vm-to-backup ist die zu sichernde VM,

  • –os-cloud wählt das Profil der Anwendungszugangsdaten,

  • –os-region wählt die Region.

Die erstellten Backups anzeigen

Die mit diesem Befehl erstellten Backups sind Images. In Horizon finden Sie sie unter Compute -> Images.

Führen Sie zum Auflisten der Images über die CLI Folgendes aus:

openstack image list \
  --os-cloud "$OS_CLOUD_NAME" \
  --os-region "$OS_REGION_NAME"

Standardmäßig zeigt dieser Befehl alle Images Ihres Projekts an.

Um nur die mit openstack server backup create erstellten Backups anzuzeigen, filtern Sie nach der Eigenschaft image_type=backup:

openstack image list \
  --property image_type=backup \
  --os-cloud "$OS_CLOUD_NAME" \
  --os-region "$OS_REGION_NAME"

Ein weiteres Backup zur Serie hinzufügen

Das erste Backup der rotierenden Serie ist erstellt. Um ein weiteres Backup derselben Serie hinzuzufügen, führen Sie den Befehl erneut mit einem anderen Backup-Namen aus.

Wenn das erste Backup beispielsweise my-backup1 heißt, erstellen Sie das zweite Backup als my-backup2:

openstack server backup create \
  --name my-backup2 \
  --rotate 3 \
  --os-cloud "$OS_CLOUD_NAME" \
  --os-region "$OS_REGION_NAME" \
  vm-to-backup

Behalten Sie für dieselbe Backup-Serie denselben Wert für –rotate bei. Änderungen dieses Werts bei späteren Aufrufen können zu verwirrenden oder unerwarteten Ergebnissen führen.

Sie haben nun zwei Backups derselben VM mit den Namen my-backup1 und my-backup2.

openstackcli/how-to-create-rotating-backups-05_creodias.png

Führen Sie den Befehl erneut mit dem Namen my-backup3 aus. Die Rotationsgrenze ist nun erreicht.

Wenn Sie den Befehl anschließend mit dem Namen my-backup4 ausführen, sollte eines der älteren Backups automatisch entfernt werden.

Listen Sie die Backup-Images erneut auf:

openstack image list \
  --property image_type=backup \
  --os-cloud "$OS_CLOUD_NAME" \
  --os-region "$OS_REGION_NAME"

Es sollten nur noch drei Backup-Images vorhanden sein.

Probleme und Einschränkungen des Backup-Befehls

Der Befehl openstack server backup create ist nützlich, hat jedoch einige Einschränkungen:

  1. Der Vorgang ist manuell, sofern Sie ihn nicht mit einer Zeitsteuerung automatisieren, beispielsweise cron.

  2. Der Befehl unterscheidet nicht zwischen getrennten täglichen, wöchentlichen und monatlichen Backup-Serien. Der Wert –rotate sollte bei jedem Aufruf für dieselbe Backup-Serie gleich bleiben.

  3. Wenn Sie denselben Backup-Namen zweimal verwenden, kann das Backup dennoch erstellt werden, aber OpenStackClient gibt möglicherweise eine Meldung wie diese zurück:

    More than one Image exists with the name 'my-backup1'.
    

    Verwenden Sie bei der Wiederherstellung die ID des Backup-Images anstelle seines Namens, wenn dieser nicht eindeutig ist.

Mit Cron-Jobs automatisieren

Linux-cron kann die Erstellung rotierender Backups automatisieren. Grundlagen zur Verwendung finden Sie unter Voraussetzung Nr. 6.

Öffnen Sie die Crontab-Datei:

crontab -e

Fügen Sie einen Cron-Job hinzu, der ein Backup Ihrer virtuellen Maschine erstellt. Beispiel:

4 3 * * * openstack server backup create --name "backup_cron_$(date +\%Y-\%m-\%d_\%H-\%M)" --rotate 3 --os-cloud backup_test --os-region FRA1-3 vm-to-backup >> $HOME/log_backup 2>> $HOME/log_backup

Ersetzen Sie backup_test, FRA1-3 und vm-to-backup durch Werte aus Ihrer eigenen Umgebung.

Bemerkung

Cron kennt die zuvor in Ihrer interaktiven Terminalsitzung definierten Shell-Variablen nicht automatisch. Deshalb verwendet das Cron-Beispiel ausdrückliche Werte anstelle von $OS_CLOUD_NAME und $OS_REGION_NAME.

Im Editor nano kann der Befehl so aussehen:

../_images/install-cron-2.png

Die Zeile ist lang. Häufig ist es einfacher, sie zunächst lokal vorzubereiten und anschließend in die Crontab-Datei einzufügen.

In diesem Beispiel verwendet der Job folgende Parameter:

Ausführungszeit

Täglich um 3:04 Uhr in der auf dem Server konfigurierten Zeitzone. Standard-Cloud-Images verwenden häufig UTC.

Erstelltes Backup

Erstellt ein Backup der virtuellen Maschine vm-to-backup. Der Backup-Name beginnt mit backup_cron_ und enthält anschließend das aktuelle Datum und die Uhrzeit im Format Jahr-Monat-Tag_Stunde-Minute.

Anzahl aufzubewahrender Backups

maxN beträgt 3.

Cloud-Profil

Authentifiziert sich mit dem Profil backup_test aus clouds.yml.

Region

Verwendet die nach –os-region angegebene Region.

Protokolle

Hängt Standardausgabe und Standardfehlerausgabe an die Datei log_backup im Benutzerverzeichnis an.

Backups wiederherstellen

Dieser Abschnitt beschreibt, wie Sie eine virtuelle Maschine aus einem Backup in einen früheren Zustand zurückversetzen.

Eine Instanz neu aufbauen

Beim Neuaufbau einer Instanz wird der aktuelle Inhalt ihrer virtuellen Festplatte durch den Inhalt eines Images ersetzt. Metadaten wie der VM-Name und die ID bleiben erhalten, ebenso 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.

Listen Sie die Backup-Images auf:

openstack image list \
  --private \
  --os-cloud "$OS_CLOUD_NAME" \
  --os-region "$OS_REGION_NAME"

Beispielausgabe:

+--------------------------------------+------------+--------+
| ID                                   | Name       | Status |
+--------------------------------------+------------+--------+
| 3efb29d5-40bb-44aa-ad4e-3b66bc4fd5a3 | my-backup1 | active |
| 37f1510b-ff4f-4dc0-9fea-e310cf987de6 | my-backup2 | active |
+--------------------------------------+------------+--------+

Der Befehl zur Wiederherstellung aus einem Backup lautet:

openstack server rebuild \
  --image my-backup2 \
  --os-cloud "$OS_CLOUD_NAME" \
  --os-region "$OS_REGION_NAME" \
  vm-to-backup

Dabei gilt:

  • my-backup2 ist die ID oder der Name Ihres Backup-Images,

  • vm-to-backup ist die ID oder der Name Ihrer Instanz.

Sie sollten eine Ausgabe wie diese erhalten:

+-------------------+----------------------------------------------------------+
| Field             | Value                                                    |
+-------------------+----------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL                                                   |
| accessIPv4        |                                                          |
| accessIPv6        |                                                          |
| addresses         | private-network=10.0.0.56                                |
| adminPass         | zrWv6nfof7Mn                                             |
| created           | 2025-02-13T09:40:23Z                                     |
| flavor            | eo1.xsmall (eo1.xsmall)                                  |
| id                | 3a42cda7-ab72-4c6a-a6f3-11000e6e54ac                     |
| image             | my-backup2 (37f1510b-ff4f-4dc0-9fea-e310cf987de6)        |
| name              | vm-to-backup                                             |
| progress          | 0                                                        |
| status            | REBUILD                                                  |
+-------------------+----------------------------------------------------------+

Warten Sie, bis die Wiederherstellung abgeschlossen ist.

Prüfen Sie den VM-Status mit folgendem Befehl:

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.

Nächste Schritte

In diesem Artikel haben Sie openstack server backup create verwendet. Wenn Sie mehrere rotierende Zeitpläne benötigen, kann openstack server image create mit einem eigenen Skript die bessere Wahl sein.

Mit einem Skript tägliche, wöchentliche und monatliche rotierende VM-Backups auf CODE-DE-Lab erstellen

Still need help?
If this article does not answer all of your questions, the support team will help you.
Contact support