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.
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 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.
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:
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.
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:
Der Vorgang ist manuell, sofern Sie ihn nicht mit einer Zeitsteuerung automatisieren, beispielsweise cron.
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.
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:
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.