Best Practices für Compute Engine-Laufwerk-Snapshots


Sie können jederzeit Persistent Disk- oder Google Cloud Hyperdisk-Snapshots erstellen. Mithilfe der folgenden Best Practices gelingt es Ihnen jedoch schneller und zuverlässiger:

Sicherheitsaspekte

Achten Sie zur Vermeidung einer unbeabsichtigten Rechteausweitung darauf, dass Sie nur Hauptkonten, denen Sie beim Lesen und Wiederherstellen von Snapshots oder Instant Snapshots vertrauen, nur Snapshot-bezogene IAM-Berechtigungen erteilen (Vorschau). Mit den folgenden Berechtigungen können Nutzer Daten aus Snapshots oder Instant Snapshots lesen und wiederherstellen (Vorschau):

  • compute.snapshots.useReadOnly
  • compute.instantSnapshots.useReadOnly

Jedes Hauptkonto mit einer der vorherigen Berechtigungen kann Daten aus Snapshots oder Instant Snapshots in Ihrem Projekt in einem von ihm kontrollierten Projekt wiederherstellen, einschließlich eines Projekts in einer anderen Organisation. Wenn ein böswilliger Akteur beispielsweise eine Snapshot-IAM-Rolle in Ihrem Projekt erhält, kann er den Snapshot in seinem persönlichen Projekt wiederherstellen und auf die im Snapshot enthaltenen Daten zugreifen.

Informationen zum Prüfen der Berechtigungen eines Hauptkontos finden Sie unter Hauptkonten mit bestimmten Rollen oder Berechtigungen ermitteln.

Konsistente Snapshots vorbereiten

Wenn Sie einen Persistent Disk- oder Hyperdisk-Snapshot erstellen, während Ihre Anwendung ausgeführt wird, erfasst der Snapshot möglicherweise keine ausstehenden Schreibvorgänge, die vom Speicher zum Laufwerk übertragen werden. Aufgrund dieser Inkonsistenzen spiegelt der Snapshot unter Umständen nicht den genauen Status Ihrer Anwendung zum Zeitpunkt des Snapshots wider. In diesem Szenario wird der Snapshot als Absturzkonsistenz betrachtet, da er den Zustand der Anwendung so erfasst, als wäre die Maschine zum Zeitpunkt des Snapshots abgestürzt.

Optional können Sie die Anwendung pausieren, damit alle Anwendungstransaktionen abgeschlossen sind und das System alle ausstehenden Schreibvorgänge vom Speicher auf das Laufwerk löschen kann, bevor der Snapshot erfasst wird. In diesem Szenario gilt der Snapshot als Anwendungskonsistenz.

Absturzsichere Snapshots erstellen

Wenn Sie einen Persistent Disk- oder Hyperdisk-Snapshot erstellen, müssen Sie keine zusätzlichen Schritte ausführen, um den Snapshot absturzsicher zu machen. Insbesondere müssen Sie die Arbeitslast nicht pausieren.

Wenn Ihre Arbeitslast eine vorübergehende Pause nicht toleriert, beachten Sie die folgenden Schritte zum Erstellen von absturzsicheren Snapshots:

  1. Dabei wird davon ausgegangen, dass die Snapshots während der Ausführung der Anwendungen aufgenommen werden, wobei davon ausgegangen wird, dass einige Inkonsistenzen bei den Daten vorliegen.
  2. Prüfen Sie, ob Sie Ihre Arbeitslast aus dem Snapshot in einem zulässigen Anwendungszustand wiederherstellen können.
  3. Mit dem vorherigen Schritt können Sie den Snapshot entweder beibehalten oder löschen.

Bei Crash-Consistency-Snapshots werden wahrscheinlich vor der Verwendung das Dateisystem und Journale auf Anwendungsebene wiederholt. Daher hängt die Qualität Ihres Snapshots von der Fähigkeit der Anwendung ab, schnell aus einem Absturz mit dem Status "Konsistenz" bis zur Bereitstellung wiederherzustellen.

Anwendungskonsistente Snapshots erstellen

  • Windows Server-Nutzer: Verwenden Sie für Laufwerke, die Windows Server-Instanzen zugeordnet sind, VSS-Snapshots.
  • Linux-Nutzer: Erstellen Sie Pre- und Post-Snapshot-Shell-Skripts, um Ihr System auf die Anwendungskonsistenz vorzubereiten. So erreichen Sie die Anwendungskonsistenz für Snapshots von Laufwerken, die an Linux-Instanzen angehängt sind. Erstellen Sie dann einen Snapshot mit aktivierter Option guest-flush. Damit werden die Pre- und Post-Scripts vor und nach dem Erstellen des Snapshots ausgeführt. Eine Anleitung finden Sie unter Konsistente Snapshots für Linux-Anwendungen erstellen.

Anwendungskonsistente Snapshots manuell erstellen

In einigen Szenarien müssen Sie Ihre Anwendungen möglicherweise manuell anhalten, um anwendungskonsistente Snapshots zu erreichen.

Diese Option eignet sich beispielsweise, wenn Sie Anwendungskonsistenz zwischen mehreren Persistent Disk- oder Hyperdisk-Volumes benötigen. In diesem Fall müssen Sie alle Dateisysteme auf jedem Laufwerk einfrieren und alle Snapshots für diese Laufwerke fertigstellen, bevor Sie die Anwendungen fortsetzen.

Sie müssen Ihre VMs nicht beenden. Das Pausieren der Anwendung kann beispielsweise das Einfrieren oder Trennen des Dateisystems umfassen. Setzen Sie Ihre Arbeitslasten erst dann wieder fort, wenn die Snapshot-Ressource den Status UPLOADING erreicht.

Wenn Sie einen Snapshot anfordern, können Sie den Status des Vorgangs durch Aufrufen der Methode globalOperations.get überprüfen. Die folgende Tabelle zeigt die Beziehung zwischen dem Status des Snapshot-Vorgangs und dem Status der Snapshot-Ressource.

Vorgangsstatus Status der Snapshot-Ressource
PENDING Es ist noch keine Snapshot-Ressource vorhanden.
RUNNING CREATING oder UPLOADING

CREATING: Die Snapshot-Erstellung ist noch nicht abgeschlossen.
UPLOADING: Snapshot wurde erstellt, aber noch nicht in Cloud Storage gespeichert.
DONE FAILED oder READY.

Limits für die Snapshot-Häufigkeit

Es gibt Beschränkungen für die Anzahl der Snapshots eines Laufwerks.

Snapshots aus Persistent Disk oder Hyperdisk erstellen

Sie können höchstens alle 10 Minuten einen Snapshot Ihrer Laufwerke erstellen. Wenn Sie mehrere Anfragen zum Erstellen von Snapshots Ihrer Laufwerke stellen möchten, können Sie maximal 6 Anfragen innerhalb von 60 Minuten senden.

Wenn das Limit überschritten wird, schlägt der Vorgang fehl und gibt den folgenden Fehler zurück:

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/zones/zone-id/disks/disk-name'.
Too frequent operations from the source resource."

Dieses Limit gilt für die folgenden Vorgänge:

Dieses Limit gilt nicht für die folgenden Vorgänge:

Sie sollten nach Möglichkeit einmal pro Stunde einen Snapshot des Laufwerks erstellen. Vermeiden Sie häufigere Snapshots. Am einfachsten lässt sich dies mit einem Snapshot-Zeitplan umsetzen.

Neue zonale Laufwerke aus Snapshots erstellen

Sie können pro Zielzone höchstens alle zehn Minuten einen neuen zonalen Persistent Disk oder Hyperdisk aus einem bestimmten Snapshot erstellen. Die Zielzone bezieht sich auf den Speicherort des neuen Laufwerks, das aus dem Snapshot erstellt wurde. Google Cloud garantiert nicht, dass Sie Laufwerke aus einem Snapshot schneller erstellen können. Sie können sie aber häufiger erstellen, wenn Sie in der letzten Stunde keine Laufwerke aus dem Snapshot erstellt haben.

Beachten Sie, dass mehrere Snapshots derselben Laufwerke im Hinblick auf dieses Häufigkeitslimit als separate Snapshots betrachtet werden.

Wenn dieses Limit überschritten wird, schlägt der Vorgang fehl und gibt den folgenden Fehler zurück:

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/global/snapshots/snapshot-name'. Too frequent operations from the source resource."

Dieses Limit gilt für die folgenden Vorgänge:

Dieses Limit gilt nicht für die folgenden Vorgänge:

  • Neue regionale nichtflüchtige Speicher aus einem Snapshot erstellen.
  • Neue nichtflüchtige zonale oder regionale nichtflüchtige Speicher mit einem Image als Quelle erstellen.

Wenn Sie aus einem Snapshot mehrere Laufwerke erstellen möchten, verwenden Sie den Snapshot, um ein Image zu erstellen. Anschließend erstellen Sie Ihre Laufwerke aus dem Image:

  1. Image aus dem Snapshot erstellen.
  2. Laufwerke aus dem Image erstellen.

Für Nicht-Bootlaufwerke folgen Sie der Anleitung zum Erstellen nichtflüchtiger Speicher aus dem Image und führen Sie die folgenden Schritte aus:

  • Wählen Sie in der Google Cloud Console als Quelltyp des Laufwerks die Option Image aus.
  • Verwenden Sie in der gcloud CLI das Flag image.
  • Wenn Sie REST verwenden, verwenden Sie den Parameter sourceImage.

Vorhandene Snapshots als Referenz für nachfolgende Snapshots nutzen

Bereits vorhandene Persistent Disk- oder Hyperdisk-Snapshots werden vom System automatisch als Referenz für alle nachfolgenden Snapshots verwendet, die Sie von demselben Laufwerk erstellen.

  • Erstellen Sie einen neuen Snapshot von einem Laufwerk, bevor Sie den vorherigen Snapshot desselben Laufwerks löschen. Das System kann den neuen Snapshot schneller erstellen, wenn es den vorherigen Snapshot als Referenz verwenden kann und nur die neuen oder geänderten Daten des Laufwerks einbezieht.
  • Warten Sie, bis der neue Snapshot fertig ist, bevor Sie nachfolgende Snapshots desselben Laufwerks erstellen. Wenn Sie gleichzeitig zwei Snapshots desselben Laufwerks generieren, greifen beide auf dieselbe Referenz zu und der Aufwand verdoppelt sich. Wenn Sie die Fertigstellung des neuen Snapshots abwarten, wird jeder nachfolgende Snapshot schneller generiert, da nur die Daten einbezogen werden, die sich seit dem letzten Snapshot geändert haben.

Snapshots außerhalb der Spitzenzeiten planen

Wenn Sie regelmäßige Persistent Disk- oder Hyperdisk-Snapshots planen, erstellen Sie sie möglichst außerhalb der Spitzenzeiten. So lässt sich die Zeit verkürzen, die ein Snapshot bis zur Fertigstellung in Anspruch nimmt.

  • Planen Sie automatisierte Snapshots im Laufe eines Werktags in der Zone, in der sich das Laufwerk befindet. Die meisten Snapshots werden in der Regel am Ende des Werktags erstellt.
  • Planen Sie automatisierte Snapshots eher am frühen Morgen als gleich um Mitternacht in der Zone, in der sich das Laufwerk befindet. Um Mitternacht werden in der Regel die meisten Snapshots erstellt.

Daten auf separaten Laufwerken organisieren

Wenn Sie einen Persistent Disk- oder Hyperdisk-Snapshot erstellen, werden alle auf dem Laufwerk gespeicherten Daten in den Snapshot aufgenommen. Größere Datenmengen führen zu größeren Snapshots, die mehr kosten und deren Erstellung länger dauert. Organisieren Sie Ihre Daten daher auf separaten Laufwerken, damit jeweils nur die benötigten Daten in die Snapshots aufgenommen werden.

  • Speichern Sie kritische Daten auf einem sekundären oder Datenlaufwerk statt auf Ihrem Bootlaufwerk. Auf diese Weise können Sie einen Snapshot Ihrer Bootlaufwerke in größeren Zeitintervallen oder nur bei Bedarf erstellen.
  • Wenn Sie Snapshots von Ihren Bootlaufwerken erstellen, speichern Sie Swap-Partitionen, Auslagerungsdateien, Cachedateien und nicht kritische Logs auf einem separaten Laufwerk. Diese Dateien und Partitionen ändern sich häufig und werden deshalb vom Snapshot-Prozess wahrscheinlich als geänderte Daten identifiziert, die in einen inkrementellen Snapshot einbezogen werden müssen.
  • Reduzieren Sie die Anzahl der zu erstellenden Snapshots, indem Sie ähnliche Daten auf einem einzigen Laufwerk speichern. Halten Sie das Betriebssystem und flüchtige Daten getrennt von den Daten, die Sie in Snapshots aufnehmen möchten. Dabei müssen Sie Ihre kritischen Daten aber nicht auf mehrere Laufwerke verteilen, wie bei einem physischen Computer. Ein großes Laufwerk kann dieselbe Leistung wie mehrere kleinere Laufwerke mit derselben Gesamtgröße erreichen.

Option discard aktivieren oder fstrim auf dem Laufwerk ausführen

Wenn Sie bei Linux-Instanzen das Laufwerk (Persistent Disk oder Hyperdisk) nicht mit der Option „discard“ formatiert und bereitgestellt haben, führen Sie auf der Instanz den fstrim-Befehl aus, bevor Sie einen Snapshot erstellen. Durch den Befehl werden Blöcke entfernt, die das Dateisystem nicht länger benötigt, damit das System den Snapshot schneller und mit einer geringeren Größe erstellen kann. Informationen zum Konfigurieren der Option "Verwerfen" auf Ihren Laufwerken finden Sie unter Nicht-Bootlaufwerk auf einer Linux-VM formatieren und bereitstellen.

Image eines häufig verwendeten Snapshots erstellen

Wenn Sie innerhalb einer Zone einen Snapshot mehrfach verwenden, um ein Laufwerk (Persistent Disk oder Hyperdisk) zu erstellen, können Sie Netzwerkkosten einsparen, indem Sie den Snapshot einmal verwenden und dann ein Image des Snapshots erstellen. Speichern Sie dieses Image und verwenden Sie es, um das Laufwerk zu erstellen und eine VM-Instanz zu starten. Eine Anleitung hierzu finden Sie unter Benutzerdefiniertes Image erstellen.

Sie sollten nach Möglichkeit einmal pro Stunde einen Snapshot des Laufwerks erstellen. Vermeiden Sie häufigere Snapshots. Am einfachsten lässt sich dies mit einem Snapshot-Zeitplan umsetzen.

Andere bewährte Vorgehensweisen

  • Mit einem Journaling-Dateisystem wie ext4 reduzieren Sie das Risiko, dass Daten im Cache gespeichert werden, ohne tatsächlich in den nichtflüchtigen Speicher geschrieben zu werden.
  • Erstellen Sie regelmäßig einen Snapshot Ihrer Daten, um bei einem unerwarteten Ausfall den Datenverlust zu minimieren.

Nächste Schritte