Sie können anwendungskonsistente Snapshots von Laufwerken erstellen, die an Linux-VM-Instanzen (virtuelle Maschine) angehängt sind. Im Allgemeinen hängt die Qualität eines Snapshots des Laufwerks davon ab, wie gut Ihre Anwendungen aus Snapshots wiederhergestellt werden können, die Sie während hoher Schreibarbeitslasten erstellt haben. Anwendungskonsistente Snapshots erfassen den Status von Anwendungsdaten zum Zeitpunkt der Sicherung, wenn alle Anwendungstransaktionen abgeschlossen sind und alle ausstehenden Schreibvorgänge auf das Laufwerk geleert wurden.
Zum Erstellen von anwendungskonsistenten Snapshots pausieren Sie Anwendungen oder Betriebssystemprozesse, die Daten auf das Laufwerk schreiben, leeren die Zwischenspeicher des Laufwerks und synchronisieren das Dateisystem, bevor Sie den Snapshot erstellen. Je nach Anwendung sind möglicherweise diese und andere Schritte erforderlich, um sicherzustellen, dass alle Anwendungstransaktionen abgeschlossen sind und in der Sicherung erfasst werden.
So erstellen Sie einen anwendungskonsistenten Snapshot Ihrer Laufwerke:
- Um die Gastumgebung für die Anwendungskonsistenz vorzubereiten, erstellen Sie benutzerdefinierte Shell-Skripts, die vor und nach der Erfassung des Snapshots ausgeführt werden.
- Konfigurieren Sie Snapshot-Einstellungen auf der VM-Instanz.
- Erstellen Sie einen Snapshot mit aktivierter Option
guest-flush
. Mit der Optionguest-flush
werden die Pre- und Post-Snapshots gestartet.
Hinweise
- Linux-VM erstellen
- Gastumgebung aktualisieren.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Compute-Instanzadministrator (Version 1) (
roles/compute.instanceAdmin.v1
) - Um eine Verbindung zu einer VM herzustellen, die als Dienstkonto ausgeführt werden kann:
Service Account User (v1) (
roles/iam.serviceAccountUser
) -
So erstellen Sie einen Snapshot eines zonalen Laufwerks:
compute.snapshots.create
-
compute.disks.createSnapshot
-
So erstellen Sie einen Snapshot eines regionalen Laufwerks mit den Daten auf dem Laufwerk:
compute.snapshots.create
-
compute.instances.useReadOnly
-
compute.disks.createSnapshot
-
So erstellen Sie einen Snapshot eines regionalen Laufwerks aus einem Prüfpunkt für die Replikatwiederherstellung:
compute.snapshots.create
-
compute.disks.createSnapshot
-
Zum Erstellen eines Snapshot-Zeitplans:
compute.resourcePolicies.create
-
Snapshot-Zeitplan mit Laufwerk verknüpfen:
-
compute.disks.addResourcePolicies
compute.resourcePolicies.use
-
-
So löschen Sie einen Snapshot:
-
compute.snapshots.delete
compute.snapshots.list
-
- Die Anwendungskonsistenz wird nur durch das Verhalten des benutzerdefinierten Pre- und Post-Snapshots garantiert, nicht durch den Snapshot-Vorgang selbst.
- Wenn Sie die Option
guest-flush
in Ihrer Anfrage zur Snapshot-Erstellung verwenden, wird der Snapshot nicht erstellt, wenn das Skript einen Fehler zurückgibt oder das Zeitlimit überschreitet. - Anwendungen oder Prozesse des Betriebssystems pausieren, die auf der VM ausgeführt werden und Daten auf das Laufwerk schreiben.
- Zwischenspeicher des Laufwerks leeren. MySQL bietet hierfür zum Beispiel die Anweisung
FLUSH
. Verwenden Sie das für Ihre Anwendung verfügbare Tool. - Ihr Dateisystem synchronisieren.
- SCSI-angehängte Laufwerke: eine durch Kommas getrennte Liste von
<target/lun>
-Paaren - NVME-angehängte Laufwerke: Eine durch Kommas getrennte Liste von
<nvme:namespace>
-Paaren. Öffnen oder erstellen Sie die Konfigurationsdatei für die Gastumgebung:
edit /etc/default/instance_configs.cfg
Fügen Sie der Konfigurationsdatei den folgenden Abschnitt hinzu, speichern Sie die Änderungen und beenden Sie den Editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Ersetzen Sie Folgendes:
ENABLED
: Setzen Sie diesen Wert auftrue
, um das anwendungskonsistente Snapshot-Feature zu aktivieren. Der Standardwert istfalse
.TIMEOUT_SECONDS
: Die Anzahl der Sekunden, die das Prä-und Post-Snapshot-Skript benötigen könnte, um bis zur Zeitüberschreitung abgeschlossen zu sein. Der Ganzzahlwert muss zwischen 0 und 300 liegen. Der Standardwert ist60
.
Starten Sie den Gast-Agent neu, um die neuen Konfigurationseinstellungen zu verwenden.
$ sudo systemctl restart google-guest-agent.service
Rufen Sie in der Google Cloud Console die Seite Snapshot erstellen auf.
Zur Seite "Snapshot erstellen"- Geben Sie einen Namen für den Snapshot ein.
-
Wählen Sie einen Snapshot-Typ aus. Die Standardeinstellung ist ein
STANDARD
-Snapshot, der die beste Option für eine langfristige Sicherung und Notfallwiederherstellung ist.Wählen Sie Archiv-Snapshot aus, um eine kostengünstigere Datenaufbewahrung zu ermöglichen.
- Optional: Geben Sie eine Beschreibung des Snapshots ein.
- Wählen Sie unter Quelllaufwerk das vorhandene Laufwerk aus, von dem Sie einen Snapshot erstellen möchten.
Wählen Sie im Bereich Standort den Snapshot-Speicherort aus.
Der vordefinierte oder benutzerdefinierte Standardspeicherort, der in Ihren Snapshot-Einstellungen definiert ist, wird automatisch ausgewählt. Optional können Sie die Snapshot-Einstellungen überschreiben und die Snapshots an einem benutzerdefinierten Standort speichern. Gehen Sie dazu so vor:
Wählen Sie die Art des gewünschten Speicherorts für den Snapshot aus.
- Wählen Sie Multiregional aus, um eine höhere Verfügbarkeit zu höheren Kosten zu erreichen.
- Wählen Sie Regionale Snapshots aus, um den physischen Standort Ihrer Daten zu geringeren Kosten besser steuern zu können.
- Wählen Sie im Feld Standort auswählen die Region oder Multiregion aus, die Sie verwenden möchten. Wählen Sie Je nach Standort des Laufwerks aus, um die Region bzw. Multiregion mit der geringsten Entfernung zu Ihrem Quelllaufwerk zu verwenden.
- Klicken Sie auf die Option Anwendungskonsistenten Snapshot aktivieren.
- Klicken Sie auf Erstellen, um den Snapshot zu erstellen.
Verwenden Sie den Befehl
gcloud compute snapshots create
, um einen Snapshot am vordefinierten oder benutzerdefinierten Standardspeicherort zu erstellen, der in Ihren Snapshot-Einstellungen konfiguriert ist.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush
-
Alternativ können Sie die Snapshot-Einstellungen überschreiben und einen Snapshot an einem benutzerdefinierten Speicherort erstellen. Geben Sie dazu das Flag
--storage-location
an, um festzulegen, wo der Snapshot gespeichert werden soll:gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION \ --guest-flush
Ersetzen Sie Folgendes:
- SNAPSHOT_NAME: Ein Name für den Snapshot.
- SOURCE_ZONE: Die Zone des Quelllaufwerks.
- SOURCE_DISK_NAME: Der Name des Laufwerk-Volumes, von dem Sie einen Snapshot erstellen möchten.
- SNAPSHOT_TYPE: Der Snapshot-Typ, entweder STANDARD oder ARCHIVE.
Wenn kein Snapshot-Typ angegeben ist, wird ein
STANDARD
-Snapshot erstellt. -
STORAGE_LOCATION: Optional: Der multiregionale Cloud Storage-Speicherort oder die Cloud Storage-Region, in der Sie den Snapshot speichern möchten. Sie können nur einen Speicherort angeben.
Verwenden Sie den Parameter
--storage-location
nur, wenn Sie den vordefinierten oder benutzerdefinierten Standardspeicherort überschreiben möchten, der in Ihren Snapshot-Einstellungen konfiguriert ist.
-
Zum Erstellen eines Snapshots am vordefinierten oder benutzerdefinierten Standardspeicherort, der in Ihren Snapshot-Einstellungen konfiguriert ist, senden Sie eine
POST
-Anfrage an die Methodesnapshots.insert
:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "guestFlush": true, }
-
Wenn Sie alternativ die Snapshot-Einstellungen überschreiben und einen Snapshot an einem benutzerdefinierten Speicherort erstellen möchten, senden Sie eine
POST
-Anfrage an diesnapshots.insert
Methode und fügen Sie das AttributstorageLocations
in Ihre Anfrage ein:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], "guestFlush": true, }
- DESTINATION_PROJECT_ID: Die ID des Projekts, in dem Sie den Snapshot erstellen möchten.
- SNAPSHOT_NAME: Ein Name für den Snapshot.
- SOURCE_PROJECT_ID: Die ID des Projekts des Quelllaufwerks.
- SOURCE_ZONE: Die Zone des Quelllaufwerks.
- SOURCE_DISK_NAME: Der Name des Laufwerk-Volumes, von dem Sie einen Snapshot erstellen möchten.
- SNAPSHOT_TYPE: Der Snapshot-Typ, entweder STANDARD oder ARCHIVE
Wenn kein Snapshot-Typ angegeben ist, wird ein
STANDARD
-Snapshot erstellt. -
STORAGE_LOCATION: Optional: Der multiregionale Cloud Storage-Speicherort oder die Cloud Storage-Region, in der Sie den Snapshot speichern möchten. Sie können nur einen Speicherort angeben.
Verwenden Sie den Parameter
storageLocations
nur, wenn Sie den vordefinierten oder benutzerdefinierten Standardspeicherort überschreiben möchten, der in Ihren Snapshot-Einstellungen konfiguriert ist. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Fügen Sie die folgende Abfrage in den Logabfragebereich ein:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Führen Sie die Abfrage aus und untersuchen Sie die Logs:
Wenn keine Prä- oder Post-Snapshot-Skripts auf der Instanz gefunden werden, um die Aktivität/IOPS im Dateisystem einzufrieren, wird kein Snapshot erstellt. Folgen Sie den Schritten unter Snapshots vor und nach dem Erstellen erstellen.
Bei einem Skriptfehler oder einer Zeitüberschreitung wird kein Snapshot erstellt. Weitere Informationen finden Sie unter Konsistente Snapshots vorbereiten. Beachten Sie, dass Sie maximal 300 Sekunden in Ihren Einstellungen konfigurieren können. Wiederholen Sie den gesamten Prozess mit den Beispielskripts.
Ein Laufwerk muss an eine VM angehängt werden, um einen Snapshot des Laufwerks mit aktivierter Option
guest-flush
zu erfassen. Informationen zum Erstellen einer Linux-VM und zum Anhängen eines Laufwerks finden Sie unter VM erstellen.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Standard-Snapshots benötigen:
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Verwalten von Standard-Snapshots erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um Standard-Snapshots zu verwalten:
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Beschränkungen
Beim Erstellen von anwendungskonsistenten Snapshots unter Linux gelten die folgenden Einschränkungen:
Skripts vor und nach dem Snapshot erstellen
Bevor Sie fortfahren, aktualisieren Sie die Gastumgebung so, dass auf Ihrer Linux-VM die neueste Software ausgeführt wird.
Erstellen Sie zur Vereinfachung der Anwendungskonsistenz Pre- und Post-Shell-Skripts, die vor und nach der Erfassung des Snapshots ausgeführt werden. Verwenden Sie die Pre- und Post-Skripts für Vorgänge wie diese:
Das folgende Codebeispiel zeigt ein Script vor dem Snapshot. Achten Sie auf die vorangestellten
#!
-Zeichen.#!/bin/bash sudo fsfreeze -f [example-disk-location]
Das folgende Codebeispiel zeigt ein Script nach dem Snapshot. Achten Sie auf die vorangestellten
#!
-Zeichen.#!/bin/bash sudo fsfreeze -u [example-disk-location]
Sie müssen die Skripts auf Ihrer VM im Verzeichnis
/etc/google/snapshots/
speichern. Der vollständige Pfad des Pre-Skripts muss/etc/google/snapshots/pre.sh
sein und der vollständige Pfad des Post-Skripts muss/etc/google/snapshots/post.sh
sein.Auf bestimmte Laufwerke in den Skripts verweisen
Das erste Argument, das an Ihre Pre- und Post-Snapshot-Skripts übergeben wird, ist eine Liste von Laufwerken, für die Sie Snapshots erstellen. Sie können dieses Argument in Ihren Skripts für verschiedene Prüfungen verwenden. Wenn für Ihre VM beispielsweise mehrere Laufwerke angehängt sind, in Ihrer Snapshot-Anfrage aber nur ein Laufwerk angegeben ist, können Sie prüfen, für welches Laufwerk der Snapshot erstellt wird.
Das Argument wird so formatiert:
Beispiel: Ihr über SCSI angehängtes Bootlaufwerk wird als
1/0
angezeigt, während ein zusätzliches an die VM angehängtes Laufwerk als2/0
angezeigt werden kann.Konfigurationsdatei für die Gastumgebung bearbeiten
Konfigurieren Sie die Einstellungen für anwendungskonsistente Snapshots, indem Sie eine bestimmte Konfigurationsdatei auf Ihrer VM aktualisieren.
Snapshot mit aktivierter Option
guest-flush
erstellenMit der Google Cloud Console, der Google Cloud CLI oder REST erstellen Sie einen Snapshot mit aktivierter
guest-flush
-Option. Dadurch werden die Pre- und Post-Skripts vor und nach der Erfassung des Snapshots ausgeführt.Console
gcloud
Sie können den Snapshot in der Richtlinie für den Speicherort erstellen, die in Ihren Snapshot-Einstellungen festgelegt ist, oder indem Sie einen alternativen Speicherort Ihrer Wahl verwenden. Weitere Informationen finden Sie unter Snapshot-Speicherort für Snapshots auswählen.
REST
Sie können den Snapshot in der Richtlinie für den Speicherort erstellen, die in Ihren Snapshot-Einstellungen festgelegt ist, oder indem Sie einen alternativen Speicherort Ihrer Wahl verwenden. Weitere Informationen finden Sie unter Snapshot-Speicherort für Snapshots auswählen.
Ersetzen Sie Folgendes:
Snapshot-Zeitplan mit aktivierter Option
guest-flush
erstellenVerwenden Sie geplante Snapshots, um Ihren zonalen und regionalen Persistent Disk und Google Cloud Hyperdisk regelmäßig und automatisch zu sichern. Wenn Sie anwendungskonsistente Snapshots für Ihre Sicherung planen möchten, verwenden Sie die Option
--guest-flush
, wenn Sie den Snapshot-Zeitplan erstellen, damit die Skripts vor und nach dem Snapshot vor und nach jedem geplanten Snapshot ausgeführt werden.Mit dem folgenden Befehl werden beispielsweise nach dem Konfigurieren der Konfigurierungsdatei für die Gastumgebung und nach dem Erstellen benutzerdefinierter Skripts stündlich anwendungskonsistente Snapshots erstellt:
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush \ --max-retention-days SNAPSHOT_RETENTION_AGE
Weitere Informationen finden Sie unter Snapshot-Zeitpläne für Laufwerke.
Fehlerbehebung
Beheben Sie Fehler beim Snapshot-Zeitplan und -Erstellungsprozess, indem Sie Logs prüfen und Konfigurationen prüfen.
Logs prüfen
Konfigurationen prüfen
Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-11-29 (UTC).
-