News
ZurückAus Snapshots neue Volumes erstellen
Volume Snapshots halten dir einen Rückweg offen, um etwa ein misslungenes Server-Upgrade quasi ungeschehen zu machen. Neu kannst du aus einem Snapshot nicht nur das zugehörige Ursprungs-Volume in einen früheren Zustand zurückversetzen, sondern auf dieser Basis auch ein neues Volume erstellen. So unterstützen Volume Snapshots dich bei einer Reihe neuer Anwendungsbereiche und sparen dir unter Umständen viel Zeit.
Snapshots flexibel einsetzen
Den Snapshot von einem Volume erstellst du blitzschnell, etwa vor einem grösseren Upgrade oder sonstigen Change an deinem Server. Läuft etwas schief, setzt du den Server ebenso blitzschnell auf den Snapshot und damit auf den früheren, funktionsfähigen Zustand zurück. Aber was, wenn du lediglich den Inhalt eines Snapshots prüfen willst oder nur ein einzelnes File daraus benötigst, etwa die vorherige Version einer wichtigen Config?
Seit Kurzem kannst du aus deinen Volume Snapshots auch neue Volumes erstellen – das neue Volume enthält dann exakt die Daten, die im Snapshot "eingefroren" worden waren. Im obigen Beispiel könntest du das neue Volume dann an den betreffenden Server anschliessen, mounten und so gezielt auf das benötigte Config-File zugreifen.
Selbstverständlich sind Updates und ihre möglichen Fallstricke nicht der einzige Anwendungsfall für dieses neue Feature. Naheliegend ist etwa eine 1:1-Kopie von einem root-Volume: Bisher hättest du deinen Server mit einem Live-System gestartet und dann – z.B. mit dd
– das Volume blockweise kopiert. Neu erstellst du einfach einen Snapshot und verwandelst dann diesen in ein separates, neues Volume. Damit kannst du anschliessend flexibel weiterarbeiten, etwa indem du den Inhalt des Volumes in ein lokales Archiv herunterlädst. Oder du erstellst daraus eine Abbild-Datei für ein "Custom Image" im "raw" Format (die direkte Verwendung als root-Volume für einen neuen Server ist derzeit hingegen nicht möglich).
Nutzung über bestehenden API-Endpoint
Um aus einem Snapshot ein neues Volume zu erstellen, benutzt du den gleichen API-Endpoint wie schon bisher zum Erstellen eines Volumes. Gib dabei als Parameter die volume_snapshot_uuid
an, um den gewünschten Snapshot als Basis für das neue Volume zu identifizieren. Zudem nimmt die API einen name
und optional tags
für das neue Volume entgegen; die übrigen Eigenschaften (wie etwa die Grösse oder der Cloud-Standort) richten sich nach dem angegebenen Snapshot.
Der Request an die API könnte bspw. folgendermassen aussehen:
curl -i -H "Authorization: Bearer DeinApiTokenHierhin" \
-F name="my-volume-name" \
-F volume_snapshot_uuid="351d461c-2333-455f-b788-db11bf0b4aa2" \
https://api.cloudscale.ch/v1/volumes
Wie gewohnt findest du alle nötigen Details im erweiterten Abschnitt zu "Create a Volume" in unserer API-Dokumentation.
Beachte auch beim Erstellen von Volumes aus Snapshots, dass die Snapshots "crash-consistent" sind. Sie enthalten also ein Abbild des ursprünglichen Volumes exakt zu dem Zeitpunkt, als der Snapshot angelegt wurde – etwa so, als ob der Server in diesem Moment gecrasht wäre. Je nach den konkreten Umständen kann es sinnvoll sein, vor dem Erstellen eines Snapshots heikle Services zu stoppen oder den Server ganz herunterzufahren, sodass auch Write-Caches etc. auf dem Volume und damit im Snapshot enthalten sind. Beim Vorbereiten eines Custom Image achte zudem darauf, dass dieses "cloud-init" enthalten und möglichst klein sein sollte – freien Platz nach Bedarf fügst du dann erst hinzu, wenn du mit dem Image einen neuen Server erstellst.
Zu beachtende Punkte
Sei dir bewusst, dass nicht nur Snapshots, sondern auch daraus erstellte Volumes kein Backup darstellen. Zum einen befinden sie sich im gleichen Storage-Cluster wie das ursprüngliche Volume und sind bei technischen Problemen potenziell ebenfalls betroffen. Zum anderen nutzen wir für eine schnelle und effiziente Bereitstellung von Snapshots und Volumes "Copy-On-Write" (COW), weshalb verschiedene Volumes und Snapshots im Hintergrund von den gleichen, gemeinsamen Datenfragmenten abhängig sein können. Für ein robustes Backup nutze Snapshots und darauf basierende Volumes als Zwischenschritt und kopiere die Daten anschliessend an einen separaten Ort wie etwa ein Archiv, welches du bei dir lokal behältst.
Für das Handling deiner Volumes und Snapshots ergeben sich durch den im Hintergrund benutzten COW-Mechanismus allerdings keine Einschränkungen. Auch wenn du einen Snapshot als Basis für ein neues Volume benutzt hast, kannst du den Snapshot – oder auch das ursprüngliche Volume als Ganzes – später löschen, ohne dass dies das neue Volume beeinflusst.
Als Basis eines neuen Volumes unterstützen dich Snapshots auch dann, wenn es nicht ums "Reverten" eines ganzen Servers geht. Behalte etwa den Inhalt deiner root-Volumes, wenn du virtuelle Server löschst, erstelle eine konsistente 1:1-Kopie als Basis für einen Download oder ein Custom Image, oder greife auf frühere Dateiversionen zurück, während du alles andere auf dem neuen Stand belässt. Beginne einfach mit einem Snapshot und halte dir damit alle Türen offen.
Für Momente zum Festhalten,
Dein cloudscale-Team