# Volume-Snapshots erstellen und löschen

# Kyberio Secure Public Cloud – Kundenanleitung


# Überblick

Ein Volume-Snapshot ist eine Momentaufnahme eines Volumes zu einem bestimmten Zeitpunkt. Snapshots eignen sich hervorragend, um vor Änderungen oder Updates einen Sicherungspunkt zu erstellen, von dem aus Sie schnell wiederherstellen können.

Unterschied zu Backups: Snapshots verbleiben im selben Speicher-Backend wie das Quell-Volume und sind für schnelle Wiederherstellung gedacht. Für langfristige Datensicherung empfehlen sich Volume-Backups (siehe separate Anleitung).


# Voraussetzungen

  • Das Volume muss im Status „Verfügbar" (available) oder „In Benutzung" (in-use) sein.
  • Für konsistente Snapshots wird empfohlen, das Dateisystem vor dem Snapshot einzufrieren (bei laufenden Instanzen) oder die Instanz zu stoppen.

# 1. Volume-Snapshot erstellen

# 1.1 Über das Horizon-Dashboard

  1. Navigieren Sie zu Projekt → Volumes → Volumes.
  2. Suchen Sie das gewünschte Volume in der Liste.
  3. Klicken Sie im Dropdown-Menü (▾) des Volumes auf „Snapshot erstellen".
  4. Füllen Sie das Formular aus:
Feld Beschreibung Beispiel
Snapshot-Name Aussagekräftiger Name webserver-vol-snap-2025-02-11
Beschreibung Optionaler Kommentar Snapshot vor Kernel-Update
Erzwingen Snapshot auch bei Status „in-use" Ja (falls Volume an Instanz angehängt)
  1. Klicken Sie auf „Snapshot erstellen".
  2. Der Snapshot erscheint unter Projekt → Volumes → Snapshots.

# 1.2 Über die CLI

# Volumes anzeigen
openstack volume list

# Snapshot erstellen (Volume ist verfügbar)
openstack volume snapshot create \
  --volume webserver-vol-01 \
  --description "Snapshot vor Kernel-Update" \
  webserver-vol-snap-2025-02-11

# Snapshot erstellen (Volume ist an eine Instanz angehängt, --force nötig)
openstack volume snapshot create \
  --volume webserver-vol-01 \
  --description "Snapshot vor Kernel-Update" \
  --force \
  webserver-vol-snap-2025-02-11

# Status prüfen
openstack volume snapshot show webserver-vol-snap-2025-02-11

Erwartete Ausgabe (Auszug):

+--------------------+--------------------------------------+
| Field              | Value                                |
+--------------------+--------------------------------------+
| id                 | f1e2d3c4-b5a6-...                    |
| name               | webserver-vol-snap-2025-02-11        |
| description        | Snapshot vor Kernel-Update           |
| status             | available                            |
| size               | 50                                   |
| volume_id          | a1b2c3d4-...                         |
| created_at         | 2025-02-11T10:30:00.000000           |
+--------------------+--------------------------------------+

# Konsistenz-Empfehlung für laufende Instanzen

Wenn das Volume an eine laufende Instanz angehängt ist, sollten Sie vor dem Snapshot das Dateisystem einfrieren:

# Auf der Instanz: Dateisystem einfrieren
sudo fsfreeze --freeze /mnt/data

# Snapshot erstellen (in einem anderen Terminal oder per Skript)
openstack volume snapshot create \
  --volume webserver-vol-01 \
  --force \
  webserver-vol-snap-2025-02-11

# Auf der Instanz: Dateisystem wieder freigeben
sudo fsfreeze --unfreeze /mnt/data

# 2. Volume-Snapshots anzeigen

# 2.1 Über das Horizon-Dashboard

  1. Navigieren Sie zu Projekt → Volumes → Snapshots.
  2. Sie sehen eine Liste aller Snapshots mit Name, Status, Größe und Quell-Volume.

# 2.2 Über die CLI

# Alle Snapshots auflisten
openstack volume snapshot list

# Details eines bestimmten Snapshots
openstack volume snapshot show webserver-vol-snap-2025-02-11

# Snapshots eines bestimmten Volumes anzeigen
openstack volume snapshot list --volume webserver-vol-01

# 3. Volume aus Snapshot erstellen

Sie können aus einem Snapshot ein neues, eigenständiges Volume erzeugen:

# 3.1 Über das Horizon-Dashboard

  1. Navigieren Sie zu Projekt → Volumes → Snapshots.
  2. Klicken Sie im Dropdown-Menü (▾) des Snapshots auf „Volume erstellen".
  3. Vergeben Sie einen Namen und optional eine andere Größe (muss ≥ Snapshot-Größe sein).
  4. Klicken Sie auf „Volume erstellen".

# 3.2 Über die CLI

openstack volume create \
  --snapshot webserver-vol-snap-2025-02-11 \
  --size 50 \
  webserver-vol-restored

# 4. Volume-Snapshot löschen

Achtung: Das Löschen eines Snapshots ist unwiderruflich. Stellen Sie sicher, dass Sie den Snapshot nicht mehr benötigen.

# 4.1 Über das Horizon-Dashboard

  1. Navigieren Sie zu Projekt → Volumes → Snapshots.
  2. Markieren Sie die Checkbox neben dem zu löschenden Snapshot.
  3. Klicken Sie auf „Snapshots löschen".
  4. Bestätigen Sie den Löschvorgang.

Alternativ: Klicken Sie im Dropdown-Menü (▾) des Snapshots auf „Snapshot löschen".

# 4.2 Über die CLI

# Einzelnen Snapshot löschen
openstack volume snapshot delete webserver-vol-snap-2025-02-11

# Mehrere Snapshots auf einmal löschen
openstack volume snapshot delete snap-01 snap-02 snap-03

# Prüfen, ob der Snapshot entfernt wurde
openstack volume snapshot list

# 5. Automatisierung: Regelmäßige Snapshots per Cronjob

#!/bin/bash
# /usr/local/bin/auto-snapshot.sh
# Erstellt tägliche Volume-Snapshots mit Datumsstempel

VOLUME="webserver-vol-01"
DATE=$(date +%Y-%m-%d)
SNAP_NAME="${VOLUME}-snap-${DATE}"

# Snapshot erstellen
openstack volume snapshot create \
  --volume "$VOLUME" \
  --force \
  --description "Automatischer täglicher Snapshot" \
  "$SNAP_NAME"

# Alte Snapshots löschen (älter als 7 Tage)
CUTOFF_DATE=$(date -d "-7 days" +%Y-%m-%d)
openstack volume snapshot list --volume "$VOLUME" -f value -c Name -c "Created At" | \
  while read NAME CREATED; do
    if [[ "$CREATED" < "$CUTOFF_DATE" ]]; then
      echo "Lösche alten Snapshot: $NAME"
      openstack volume snapshot delete "$NAME"
    fi
  done

Cronjob einrichten:

# Täglich um 02:00 Uhr
echo "0 2 * * * /usr/local/bin/auto-snapshot.sh" | crontab -

# Häufige Fragen

Belegen Snapshots zusätzlichen Speicherplatz? Ja. Snapshots speichern die Differenz zum aktuellen Volume-Zustand. Je mehr sich das Volume nach dem Snapshot verändert, desto mehr Platz belegt der Snapshot.

Kann ich einen Snapshot erstellen, während die Instanz läuft? Ja, mit dem Parameter --force. Für Datenbank-Volumes empfehlen wir jedoch, vorher das Dateisystem einzufrieren oder die Datenbank in einen konsistenten Zustand zu bringen.

Kann ich Snapshots in ein anderes Projekt übertragen? Nein, Snapshots sind projektgebunden. Erstellen Sie stattdessen ein Volume aus dem Snapshot und transferieren Sie dieses.


Kyberio Secure Public Cloud – Dokumentation