Übersicht über Snapshots

Auf dieser Seite erfahren Sie, was ein Snapshot ist, wie er funktioniert, welche gängigen Anwendungsfälle es gibt und welche Best Practices beim Erstellen und Verwenden von Snapshots hilfreich sind. Informationen zum Erstellen und Verwalten von Snapshots sowie zum Wiederherstellen von Filestore-Daten aus einem Snapshot finden Sie unter Status von Daten mit Snapshots beibehalten.

Was ist ein Snapshot?

Ein Filestore-Snapshot ist der beibehaltene Status Ihrer Dateifreigabedaten zum Zeitpunkt der Erstellung des Snapshots. Die Instanz behält den Status von Dateien bei, die nach dem Erstellen des Snapshots geändert werden. Wenn Sie eine Datei im beibehaltenen Status im Snapshot wiederherstellen möchten, können Sie die aktuelle Datei mit der Datei aus dem entsprechenden Snapshot-Verzeichnis überschreiben.

Snapshots werden in der Filestore-Instanz gespeichert und sind untergeordnete Ressourcen der Instanz. Sie replizieren keine Daten und verbrauchen keine Kapazität, bis die Daten auf der Instanz geändert werden. Alle Snapshots einer Instanz teilen sich gemeinsame Daten, d. h., die Instanz behält nur die Unterschiede zwischen den Snapshots bei.

Snapshot-Erstellung

Jedes Verzeichnis einer Dateifreigabe enthält ein ausgeblendetes .snapshot-Verzeichnis. Jedes .snapshot-Verzeichnis enthält die Snapshots des übergeordneten Verzeichnisses, das Sie erstellen. Beispiel:

foo/
│   bar.txt
│
└───.snapshot
    │
    ├───snap1/
    │        bar.txt
    │
    ├───snap2/
    │        bar.txt
    │
    └───snap3/
             bar.txt

Die Snapshots enthalten eine schreibgeschützte Ansicht aller Dateien und Unterverzeichnisse, die zum Zeitpunkt der Snapshot-Erstellung im übergeordneten Verzeichnis vorhanden sind. Alle Dateiattribute wie atime, ownership und Lese-/Schreibberechtigungen bleiben erhalten.

Das Erstellen von Snapshots dauert in der Regel nicht länger als zwei Minuten, da es kein Kopieren der Daten umfasst und die Instanzleistung nicht beeinträchtigt wird.

Es können bis zu 240 Snapshots pro Instanz vorhanden sein. Der Name der Dateifreigabe und der Snapshot-Name können insgesamt bis zu 78 Zeichen lang sein.

Snapshot-Konsistenz

Filestore-Snapshots haben eine NFSv3-Konsistenzsemantik. Bevor ein Snapshot initiiert wird, ist jeder Schreibvorgang, der von der Filestore-Instanz als in den stabilen Speicher geschrieben anerkannt wird oder dem ein bestätigter COMMIT folgt, im Snapshot enthalten. Weitere Informationen finden Sie unter NFSv3 RFC-1813 Abschnitt 3.3.7.

Dateifreigabe für optimale Snapshot-Konsistenz vorbereiten

Die Qualität eines Snapshots hängt davon ab, ob Ihre Anwendung Daten aus Snapshots wiederherstellen kann, die während hoher Schreibarbeitslasten erstellt wurden. In den meisten Fällen können Sie Snapshots mit guter Konsistenz erstellen, selbst wenn Ihre Anwendungen Daten in die Dateifreigabe schreiben. Wenn Ihre Anwendungen jedoch strikte Konsistenz erfordern, sollten Sie einen oder mehrere der folgenden Schritte ausführen:

  • Verwenden Sie die Bereitstellungsoption sync oder öffnen Sie Dateien mit O_DIRECT|O_SYNC. Beide Methoden verbessern die Konsistenz, garantieren sie aber nicht.
  • Halten Sie Anwendungen oder Betriebssystemprozesse an, die Daten in die Dateifreigabe schreiben, und bewirken Sie, dass diese Änderungen in der Dateifreigabe geleert werden, bevor der Snapshot initiiert wird. Weitere Informationen finden Sie unter fsync(2).
  • Wenn Ihre Anwendungen Konsistenz zwischen mehreren Dateifreigaben erfordern, pausieren Sie alle Anwendungen auf allen Instanzen, die in alle Dateifreigaben schreiben, und erstellen Sie Snapshots für alle Dateifreigaben, bevor Sie die Anwendungen fortsetzen.
  • Wenn Sie Konsistenz auf Anwendungsebene benötigen, beenden Sie Ihre Anwendungen und heben Sie die Bereitstellung der Dateifreigabe auf, bevor Sie einen Snapshot erstellen.

NFS-Semantik des .snapshot-Verzeichnisses

Die .snapshot-Verzeichnisse sind spezielle versteckte Verzeichnisse, die die Snapshots des übergeordneten Verzeichnisses enthalten. Alle NFS- und Bash-Befehle funktionieren für diese Verzeichnisse mit folgenden Ausnahmen:

  • Sie können keine Datei und kein Verzeichnis mit dem Namen .snapshot erstellen, da er für Snapshots reserviert ist.
  • Das Verzeichnis .snapshot wird nicht in den Ausgaben der Befehle READDIR oder READDIRPLUS und auch nicht im Bash-Befehl ls -a aufgeführt.
  • Wenn Sie in ein .snapshot-Verzeichnis wechseln möchten, müssen Sie den String .snapshot explizit eingeben. Beispiel: cd somedir/.snapshot/
  • Bei der automatischen Vervollständigung von Shell-Befehlen wird .snapshot nicht als Option aufgelistet.

Dateien löschen, die in einem Snapshot erfasst wurden

Wenn eine Datei in einem Snapshot erfasst wird, wird der freie Speicherplatz auf Ihrer Instanz durch das Löschen nicht erhöht.

Snapshot-Status wiederherstellen

Das Wiederherstellen einer Instanz auf einen Snapshot-Zustand ist nur für hochskalierte SSD- und Unternehmensinstanzen als Vorabversion verfügbar.

Wenn eine Instanz auf den in einem Snapshot erfassten Zustand zurückgesetzt wird, werden alle seit dem Erstellen des Ziel-Snapshots neu geschriebenen Daten gelöscht und können nicht wiederhergestellt werden. Snapshots, die nach dem Ziel-Snapshot erstellt wurden, werden beim Zurücksetzen ebenfalls gelöscht.

Featurebeschränkungen

  • Das Feature zum Wiederherstellen von Snapshots ist ein destruktiver Vorgang, sowohl für das Live-Dateisystem als auch für die neueren Snapshots in der Kette. Es birgt daher ein höheres Risiko eines versehentlichen Datenverlusts. Dies unterscheidet sich erheblich im Vergleich zur Wiederherstellung aus einer Sicherung, bei der die Sicherung nach der Verwendung in ihrem aktuellen Status verbleibt, sodass Sie versuchen können, aus mehreren Sicherungen die beste Sicherung zu finden. Setzen Sie die Rückgängig-Funktion mit Bedacht ein.

  • Alle nach dem Erstellen des Ziel-Snapshots geschriebenen Daten werden zu Beginn des Wiederherstellungsprozesses gelöscht und können nicht wiederhergestellt werden. Alle Snapshots, die neuer als der Ziel-Snapshot sind, werden ebenfalls gelöscht. Beispiel: Snapshot1, Snapshot2 und Snapshot3 werden nacheinander erstellt. Das Zurücksetzen der Instanz auf den in Snapshot2 erfassten Status bedeutet, dass Snapshot3 und alle Änderungen nach Snapshot3 beim Zurücksetzen gelöscht werden.

    Die Bereinigung dieser gelöschten Daten kann bis zu drei Tage dauern. Die Instanzkapazität und -leistung können während dieser Zeit beeinträchtigt sein.

  • Wenn Sie eine Instanz auf einen Snapshot-Status zurücksetzen, wird die NFS-Dateisystem-ID (fsid) aktualisiert. Daher werden bei Versuchen, mit vorhandenen Bereitstellungen auf Clients zuzugreifen, Fehler mit veralteten Dateiverarbeitungen zurückgegeben. Es hat sich bewährt, alle Clients vor dem Zurücksetzen von der Instanz zu trennen und nach Abschluss des Vorgangs wieder bereitzustellen.

  • Der Wiederherstellungsvorgang kann je nach Anzahl der beteiligten Dateien mehrere Stunden dauern. Sie müssen warten, bis der Wiederherstellungsvorgang abgeschlossen ist, bevor Sie einen weiteren Wiederherstellungsvorgang starten.

  • Während des Wiederherstellungsvorgangs kann kein anderer Vorgang ausgeführt werden, weder für die Instanz noch für den Snapshot. Alle anderen Vorgänge werden je nach Konfiguration des Vorgangs abgelehnt oder in die Warteschlange gestellt.

  • Derzeit können nur Instanzen mit einer einzigen Freigabe auf einen Snapshot-Status zurückgesetzt werden. Das Feature zum Zurücksetzen von Snapshots kann nicht mit Filestore-Mehrfachfreigaben für GKE kombiniert werden.

Nächste Schritte