Zurück zum Blog

Speicherverwaltung mit automatischen periodischen Snapshots

Speicherverwaltung mit automatischen periodischen Snapshots

Vor einiger Zeit haben wir die Möglichkeit eingeführt, Snapshots von einem Laufwerk zu erstellen. Dies ist eine sehr praktische Funktion, mit der Sie Laufwerkszustände selbst auf Live-Systemen schnell und effizient speichern können.

Dank ZFS, verbrauchen automatische Snapshots nur das Delta zwischen dem aktuellen Zustand und dem Zeitpunkt, an dem der Snapshot erstellt wurde. Das bedeutet: Wenn Ihr Originallaufwerk 15 GB groß war und sich zwischen dem Snapshot und dem aktuellen Zustand nur 1 MB an Daten geändert hat, beträgt die Größe des Snapshots 1 MB. Wenn Sie ein weiteres Megabyte auf die Festplatte schreiben, wächst der Snapshot um ein weiteres Megabyte.

Ein weiterer Vorteil dieses Systems besteht darin, dass jeder Snapshot zu einem vollständigen Festplattenlaufwerk heraufgestuft (geklont) werden kann. Dies bedeutet, dass Sie eine unabhängige Kopie erstellen können, die auf einem Server gemountet werden kann, der sich potenziell auf einem völlig anderen Speichersystem befindet. Als solches bildet dies die Grundlage für eine Speicherverwaltungsstrategie (abhängig von Ihrer Arbeitslast).

Ein Wort der Warnung

Obwohl die Verwendung regelmäßiger Snapshots Teil Ihrer Backup-Strategie sein kann, ist es unklug, sich ausschließlich auf Snapshots als Strategie zu verlassen.

Es gibt auch zahlreiche Situationen, in denen die Verwendung dieser Snapshots nicht funktioniert, wie z. B. das Erstellen eines Snapshots eines laufenden Datenbankservers. Die Snapshot-Funktionalität kann bei gestoppten Datenbankservern weiterhin nützlich sein (um eine Point-in-Time-Wiederherstellung zu erstellen), aber auch hier sollte dies nicht Ihre einzige Backup-Strategie sein.

Automatische Snapshots erstellen

Mit unserer Python-Bibliothek ist die Automatisierung von Snapshots wirklich einfach. Da wir jedoch die CloudSigma-Zugangsdaten auf dem System speichern müssen, das die Snapshots auslöst, raten wir Ihnen dringend davon ab, die Zugangsdaten für Produktionsdienste unsicher offenzulegen. Wenn Sie dies beispielsweise auf einem Cloud-Server ausführen möchten, stellen Sie bitte sicher, dass dieser vom Rest der Infrastruktur abgeschirmt ist (z. B. durch die Verwendung unserer Netzwerkrichtlinien-Funktion) und vollständig abgesichert ist.

Nach dem Installieren der Python-Bibliothek können Sie das Skript wie folgt herunterladen und ausführen:

[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot.py
$ python snapshot.py drive-uuid my-snapshot
[/bash]

snapshot.py benötigt zwei Argumente:

  • Die UUID des Laufwerks, von dem Sie einen Snapshot erstellen möchten
  • Ein benutzerfreundlicher Name für den Snapshot

Nachdem Sie manuell einen Snapshot erstellt und überprüft haben, dass er funktioniert (dies können Sie im Bereich ‘snapshot’ des Laufwerks sehen), können wir dies nun automatisieren.

Der am besten geeignete und standardisierte Weg, eine solche Aufgabe auszuführen, wäre über die crontab (unter der Annahme, dass Sie Linux oder Mac OS X verwenden).

Führen Sie mit demselben Benutzer, mit dem Sie den obigen Snapshot erstellt haben, Folgendes aus:
[bash light=”true”] $ crontab -e
[/bash]

Wenn Sie jede Nacht um 1 Uhr morgens einen Snapshot erstellen möchten, fügen Sie die folgende Zeile hinzu:

Sie werden auch feststellen, dass das Skript in eine Datei namens snapshot.log im Home-Verzeichnis des Benutzers schreibt, der das Skript ausführt.

Automatisches Bereinigen von Snapshots

Da Snapshots im Laufe der Zeit wachsen, möchten Sie diese wahrscheinlich nach einiger Zeit löschen. Um dieses Problem zu lösen, haben wir ein weiteres Skript erstellt, das dies für Sie erledigen kann. Das Skript heißt snapshot_purge.py und benötigt zwei Argumente:

  • Die UUID des Laufwerks
  • Die Anzahl der Tage, für die Sie Snapshots behalten möchten

Wenn Sie beispielsweise Snapshots für 30 Tage behalten möchten, können Sie einfach Folgendes ausführen:
[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot_purge.py
$ python snapshot_purge.py drive-uuid 30
[/bash]

Natürlich können Sie dies auch automatisieren. Wenn wir beispielsweise Snapshots löschen möchten, die älter als 30 Tage sind, können wir Folgendes zu unserer Crontab hinzufügen (die um 1:30 Uhr morgens ausgeführt wird):

Fazit

Das war’s, Leute. Mit diesen beiden Skripten können Sie Ihre Laufwerks-Snapshots automatisieren. Wenn Sie Snapshots von mehreren Laufwerken erstellen müssen, fügen Sie einfach weitere snapshot.py-Zeilen mit unterschiedlichen UUIDs zu Ihrer Crontab hinzu.

Wir kratzen natürlich nur an der Oberfläche dessen, was wir mit Snapshots tun können, aber ich hoffe, dies dient als schneller Crashkurs für die Verwendung von Snapshots in Ihren Speicherverwaltungsroutinen.

Wenn Sie anspruchsvollere Anforderungen an die Datenaufbewahrung haben, können Sie hoffentlich einen Teil des Codes in den obigen Skripten wiederverwenden.

author

Viktor Petersson

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.