Panoramica degli snapshot

Questa pagina descrive che cos'è uno snapshot, come funziona, alcuni casi d'uso comuni e le best practice per la creazione e l'utilizzo degli snapshot. Per scoprire come creare e gestire gli snapshot e come ripristinare i dati Filestore da uno snapshot, consulta Conservare lo stato dei dati con gli snapshot.

Che cos'è uno snapshot?

Uno snapshot Filestore è lo stato conservato dei dati della condivisione file al momento della creazione dello snapshot. L'istanza mantiene lo stato dei file che vengono modificati dopo la creazione dello snapshot. Se vuoi ripristinare lo stato conservato di un file nello snapshot, puoi sovrascrivere il file attuale con il file della directory degli snapshot pertinente.

Gli snapshot sono archiviati all'interno dell'istanza Filestore e sono risorse figlio dell'istanza. Non replicano alcun dato né consumano capacità fino a quando i dati dell'istanza non vengono modificati. Tutti gli snapshot di un'istanza condividono dati in comune, il che significa che l'istanza conserva solo le differenze tra gli snapshot.

Creazione di snapshot

Ogni directory di una condivisione file contiene una directory .snapshot nascosta. Ogni directory .snapshot contiene gli snapshot della directory padre che crei, ad esempio:

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

Gli snapshot contengono una visualizzazione di sola lettura di tutti i file e le sottodirectory esistenti nella directory principale al momento della creazione dello snapshot. Tutti gli attributi dei file, come atime, ownership e le autorizzazioni di lettura/scrittura, sono conservati.

La creazione degli snapshot di solito non richiede più di due minuti perché non comporta la copia dei dati né influisce sulle prestazioni dell'istanza.

Puoi avere fino a 240 snapshot alla volta per istanza. Il nome della condivisione file e quello dello snapshot possono avere una lunghezza combinata di massimo 78 caratteri.

Coerenza snapshot

Gli snapshot di Filestore hanno la semantica di coerenza NFSv3. Prima dell'avvio di uno snapshot, qualsiasi scrittura che l'istanza Filestore riconosce come scritta nello spazio di archiviazione stabile o seguita da un COMMIT confermato viene inclusa nello snapshot. Per maggiori dettagli, consulta la sezione 3.3.7 di NFSv3 RFC-1813.

Prepara la condivisione file per ottenere la massima coerenza tra gli snapshot

La qualità di uno snapshot dipende dalla capacità dell'applicazione di recuperare gli snapshot creati durante carichi di lavoro di scrittura intensivi. Nella maggior parte dei casi, puoi creare snapshot con buona coerenza anche mentre le applicazioni scrivono dati nella condivisione file. Tuttavia, se le tue applicazioni richiedono una coerenza elevata, ti consigliamo di eseguire una o più delle seguenti operazioni:

  • Utilizza l'opzione di montaggio per sincronizzazione o apri i file con O_DIRECT|O_SYNC. Entrambi questi metodi migliorano la coerenza, ma non lo garantiscono.
  • Metti in pausa le applicazioni o i processi del sistema operativo che scrivono dati nella condivisione file e causano lo svuotamento delle modifiche alla condivisione file prima di avviare lo snapshot. Per ulteriori informazioni, consulta fsync(2).
  • Se le tue applicazioni richiedono coerenza tra più condivisioni, metti in pausa tutte le applicazioni su tutte le istanze che scrivono su tutte le condivisioni file e crea snapshot di tutte le condivisioni file prima di riprendere le applicazioni.
  • Se hai bisogno di coerenza a livello di applicazione, interrompi le applicazioni e smonta la condivisione file prima di creare uno snapshot.

semantica NFS della directory .snapshot

Le directory .snapshot sono speciali directory nascoste che contengono gli snapshot presi per la directory padre. Tutti i comandi NFS e bash funzionano per queste directory, con le seguenti eccezioni:

  • Non puoi creare un file o una directory denominata .snapshot perché è riservato per gli snapshot.
  • La directory .snapshot non è elencata negli output dei comandi READDIR o READDIRPLUS e non è elencata nel comando bash ls -a.
  • Per passare a una directory .snapshot, devi digitare esplicitamente la stringa .snapshot. Esempio: cd somedir/.snapshot/
  • Il completamento automatico per i comandi shell non elencherà .snapshot come opzione.

Elimina i file acquisiti in uno snapshot

Quando un file viene acquisito in uno snapshot, la sua eliminazione non aumenta lo spazio libero su disco nell'istanza.

Ripristino dello stato di uno snapshot

Il ripristino di un'istanza allo stato di snapshot è disponibile come funzionalità di anteprima solo per le istanze aziendali e SSD ad alta scalabilità.

Quando un'istanza viene ripristinata allo stato acquisito in uno snapshot, tutti i nuovi dati scritti dopo la creazione dello snapshot di destinazione vengono eliminati e non possono essere recuperati. Anche gli snapshot creati dopo lo snapshot di destinazione vengono eliminati dal processo di ripristino.

Limitazioni delle funzionalità

  • La funzionalità di ripristino dello snapshot è un'operazione distruttiva, sia per il file system live sia per gli snapshot più recenti nella catena. Pertanto, presenta un rischio maggiore di perdita accidentale di dati. Questo comportamento è notevolmente diverso rispetto al ripristino da un backup, in cui il backup rimarrà nello stato attuale dopo l'utilizzo, consentendoti di eseguire il ripristino da più backup per trovare quello migliore. Utilizza con attenzione la funzionalità di ripristino.

  • Tutti i dati scritti dopo la creazione dello snapshot di destinazione vengono eliminati all'inizio del processo di ripristino e non possono essere recuperati. Vengono eliminati anche tutti gli snapshot più recenti rispetto allo snapshot di destinazione. Ad esempio, snapshot1, snapshot2 e snapshot3 vengono creati in sequenza. Se ripristini lo stato acquisito in snapshot2 per l'istanza, questo significa che snapshot3 e tutte le modifiche successive vengono eliminati durante il processo di ripristino.

    La pulizia dei dati eliminati può richiedere fino a tre giorni. La capacità e le prestazioni dell'istanza potrebbero risentirne durante questo periodo.

  • Il ripristino di un'istanza allo stato di snapshot aggiorna l'ID file system NFS (fsid). Di conseguenza, i tentativi di accedere ai client che utilizzano montaggi esistenti restituiranno errori relativi all'handle dei file inattivi. Come best practice, smonta tutti i client dall'istanza prima dell'operazione di ripristino e rimontali al termine dell'operazione.

  • Il completamento di un'operazione di ripristino può richiedere diverse ore, a seconda del numero di file interessati. Devi attendere il completamento dell'operazione di ripristino prima di avviarne un'altra.

  • Durante il completamento dell'operazione di ripristino, non è possibile eseguire nessun'altra operazione, né sull'istanza né sullo snapshot. Tutte le altre operazioni vengono rifiutate o messe in coda, a seconda della configurazione dell'operazione.

  • Al momento, solo le istanze con una singola condivisione possono ripristinare lo stato di uno snapshot. La funzionalità di ripristino degli snapshot non può essere combinata con Filestore multishares per GKE.

Passaggi successivi