Best practice per gli snapshot dei dischi di Compute Engine

Puoi creare snapshot di Persistent Disk e Google Cloud Hyperdisk in qualsiasi momento, ma puoi creare snapshot in modo più rapido e con maggiore affidabilità se utilizzi le best practice riportate di seguito.

Considerazioni sulla sicurezza

Per evitare l'escalation involontaria dei privilegi, assicurati di concedere solo le autorizzazioni IAM correlate agli snapshot alle entità attendibili per leggere e ripristinare i dati degli snapshot o degli snapshot istantanei (anteprima). Le seguenti autorizzazioni consentono agli utenti di leggere e ripristinare i dati da snapshot o snapshot istantanei (Anteprima):

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

Qualsiasi entità che dispone di una delle autorizzazioni precedenti può ripristinare i dati degli snapshot o degli snapshot istantanei del progetto in un progetto che controlla, tra cui un progetto che si trova in un'altra organizzazione. Ad esempio, se un utente malintenzionato dovesse ottenere un ruolo IAM snapshot nel tuo progetto, potrebbe ripristinare lo snapshot nel suo progetto personale e accedere ai dati contenuti nell'istantanea.

Per scoprire come verificare le autorizzazioni di un'entità, consulta Determinare quali entità hanno autorizzazioni o ruoli specifici.

Preparazione per snapshot coerenti

Se crei uno snapshot del tuo Persistent Disk o Hyperdisk mentre l'applicazione è in esecuzione, lo snapshot potrebbe non acquisire le scritture in attesa in transito dalla memoria al disco. A causa di queste incoerenze, lo snapshot potrebbe non riflettere lo stato esatto dell'applicazione al momento dell'acquisizione dello snapshot. In questo scenario, lo snapshot è considerato coerente con arresti anomali perché acquisisce lo stato dell'applicazione come se si fosse verificato un arresto anomalo della macchina nel momento in cui è stato acquisito lo snapshot.

Facoltativamente, puoi mettere in pausa l'applicazione, in modo che tutte le transazioni dell'applicazione vengano completate e il sistema possa svuotare tutte le scritture in attesa dalla memoria al disco prima dell'acquisizione dello snapshot. In questo scenario, lo snapshot viene considerato coerente con l'applicazione.

Creazione di snapshot coerenti con arresti anomali

Quando acquisisci uno snapshot di un Persistent Disk o di un Hyperdisk, non devi eseguire ulteriori passaggi per rendere coerente l'arresto anomalo dello snapshot. In particolare, non è necessario mettere in pausa il carico di lavoro.

Se il tuo carico di lavoro non può tollerare una pausa temporanea, prendi in considerazione il seguente processo per creare snapshot coerenti con arresti anomali:

  1. Acquisisci uno snapshot mentre le applicazioni sono in esecuzione, supponendo che si verifichino alcune incoerenze nei dati dell'applicazione.
  2. Verifica di poter ripristinare il carico di lavoro a uno stato dell'applicazione accettabile dallo snapshot.
  3. In base al passaggio precedente, conserva o elimina lo snapshot.

Gli snapshot coerenti con arresti anomali richiedono probabilmente la riproduzione dei journal del file system e dell'applicazione prima dell'utilizzo. Pertanto, la qualità dello snapshot dipende dalla capacità dell'applicazione di ripristinare rapidamente lo stato coerente con gli arresti anomali fino alla pubblicazione.

Creazione di snapshot coerenti con l'applicazione

  • Utenti Windows Server: per i dischi collegati a istanze Windows Server, utilizza gli snapshot VSS.
  • Utenti Linux: per garantire la coerenza dell'applicazione per gli snapshot di dischi collegati a istanze Linux, crea script shell prima e dopo gli snapshot per preparare il sistema all'uniformità dell'applicazione. Quindi crea un'istantanea con l'opzione guest-flush abilitata. Questa azione esegue gli script pre e post prima e dopo l'acquisizione dello snapshot. Per le istruzioni, consulta la sezione Creazione di snapshot coerenti con le applicazioni Linux.

Creazione manuale di snapshot coerenti con l'applicazione

In alcuni scenari potrebbe essere necessario mettere in pausa manualmente le applicazioni per ottenere snapshot coerenti.

Ad esempio, utilizza questa opzione se hai bisogno di coerenza dell'applicazione tra più volumi Persistent Disk o Hyperdisk. In questo caso, devi bloccare tutti i file system su ogni disco e completare tutti gli snapshot per questi dischi prima di ripristinare le app.

Non è necessario arrestare le VM. La sospensione dell'applicazione può comportare, ad esempio, il blocco e lo smontaggio del file system. Dopo aver messo in pausa manualmente le applicazioni, riprendi i carichi di lavoro solo dopo che la risorsa snapshot ha raggiunto lo stato UPLOADING.

Quando richiedi uno snapshot, controlla lo stato dell'operazione chiamando il metodo globalOperations.get. La tabella seguente mostra la relazione tra lo stato dell'operazione dello snapshot e lo stato della risorsa snapshot.

Stato operazione Stato della risorsa snapshot
PENDING Non esiste ancora alcuna risorsa snapshot.
RUNNING CREATING o UPLOADING

CREATING: la creazione di snapshot non è ancora completa.
UPLOADING: lo snapshot è stato creato, ma non è ancora stato salvato in Cloud Storage.
DONE FAILED o READY.

Limiti di frequenza degli snapshot

Sono previsti dei limiti alla frequenza con cui è possibile creare uno snapshot di un disco.

Creazione di snapshot da Persistent Disk o Hyperdisk

Puoi creare snapshot dei dischi al massimo una volta ogni 10 minuti. Se vuoi inviare un burst di richieste per creare uno snapshot dei tuoi dischi, puoi inviare al massimo 6 richieste in 60 minuti.

Se il limite viene superato, l'operazione non riesce e restituisce il seguente errore:

"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."

Questo limite si applica alle seguenti operazioni:

Questo limite non si applica alle seguenti operazioni:

Come best practice, acquisisci uno snapshot del disco una volta all'ora. Evita di scattare snapshot più spesso di così. Il modo più semplice per raggiungere questo obiettivo è impostare una pianificazione degli snapshot.

Creazione di nuovi dischi a livello di zona dagli snapshot

Puoi creare un nuovo Persistent Disk o Hyperdisk a livello di zona da un determinato snapshot per zona di destinazione al massimo una volta ogni 10 minuti. La zona di destinazione fa riferimento alla località di archiviazione del nuovo disco creato a partire dallo snapshot. Google Cloud non garantisce che sarai in grado di creare dischi da uno snapshot a una velocità superiore, anche se potresti riuscire a creare dischi più spesso se non hai creato dischi dallo snapshot nell'ultima ora.

Tieni presente che più snapshot degli stessi dischi sono considerati snapshot distinti in relazione a questo limite di frequenza.

Se questo limite viene superato, l'operazione non va a buon fine e restituisce il seguente errore:

"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."

Questo limite si applica alle seguenti operazioni:

Questo limite non si applica alle seguenti operazioni:

  • Creazione di nuovi dischi permanenti a livello di regione da uno snapshot.
  • Creazione di nuovi dischi permanenti a livello di zona o di regione utilizzando un'immagine come origine.

Per creare più dischi da uno snapshot, utilizza lo snapshot per creare un'immagine, quindi crea i dischi dall'immagine:

  1. Crea un'immagine a partire dall'istantanea.
  2. Crea dischi dall'immagine.

Per i dischi non di avvio, segui le istruzioni per creare dischi permanenti dall'immagine e segui questi passaggi:

  • Nella console Google Cloud, seleziona Immagine come Tipo di origine del disco.
  • Con gcloud CLI, utilizza il flag image.
  • Se utilizzi REST, usa il parametro sourceImage.

Usa gli snapshot esistenti come riferimento per gli snapshot successivi

Se esistono già snapshot di un disco (Persistent Disk o Hyperdisk), il sistema li utilizza automaticamente come riferimento per tutti gli snapshot successivi creati dallo stesso disco.

  • Crea un nuovo snapshot da un disco prima di eliminare lo snapshot precedente dallo stesso disco. Il sistema può creare il nuovo snapshot più rapidamente se può utilizzare lo snapshot precedente e leggere solo i dati nuovi o modificati dal disco.
  • Attendi il completamento dei nuovi snapshot prima di acquisire snapshot successivi dallo stesso disco. Se esegui due snapshot contemporaneamente sullo stesso disco, entrambi partono dalla stessa base di riferimento e dallo sforzo duplicato. Se attendi il completamento del nuovo snapshot, tutti gli snapshot successivi vengono eseguiti più rapidamente perché ottengono solo i dati che sono cambiati dall'ultimo snapshot completato.

Pianifica gli snapshot al di fuori delle ore di punta

Se pianifichi snapshot regolari per i tuoi dischi (Persistent Disk o Hypeperdisk), puoi ridurre il tempo necessario per completare ogni snapshot creandoli in orari diversi dalle ore di punta, se possibile.

  • Pianifica gli snapshot automatici durante la giornata lavorativa nella zona in cui si trova il disco. La creazione di snapshot solitamente raggiunge il picco alla fine della giornata lavorativa.
  • Pianifica gli snapshot automatici al mattino presto nella zona in cui si trova il disco, anziché immediatamente a mezzanotte. La creazione di snapshot solitamente ha un picco a mezzanotte.

Organizza i dati su dischi separati

Se crei uno snapshot di un disco (Persistent Disk o Hyperdisk), tutti i dati archiviati sul disco vengono inclusi nello snapshot. Maggiore è la quantità di dati che creano snapshot più grandi, che costano di più e richiedono più tempo. Per assicurarti di creare uno snapshot solo dei dati di cui hai bisogno, organizza i dati in dischi separati.

  • Archivia i dati critici su un disco secondario o dati anziché sul tuo disco di avvio. In questo modo puoi creare uno snapshot dei tuoi dischi di avvio solo quando necessario o in base a una pianificazione meno frequente.
  • Se crei snapshot dei tuoi dischi di avvio, archivia partizioni di scambio, file di pagina, file della cache e log non critici su un disco separato. Questi file e partizioni cambiano di frequente ed è probabile che il processo di snapshot li identifichi come dati modificati che devono essere inclusi in uno snapshot incrementale.
  • Riduci il numero di snapshot che devi creare tenendo insieme dati simili su un disco. Mantieni il sistema operativo e i dati volatili separati dai dati di cui vuoi acquisire uno snapshot, ma non è necessario distribuire i dati critici su più dischi come faresti per una macchina fisica. Un disco di grandi dimensioni è in grado di ottenere le stesse prestazioni di più dischi più piccoli della stessa dimensione totale.

Abilita l'opzione discard o esegui fstrim sul tuo disco

Nelle istanze Linux, se non hai formattato e montato i dischi Persistent Diske o Hyperdisk) con l'opzione scarto, esegui il comando fstrim sull'istanza prima di creare uno snapshot. Il comando rimuove i blocchi di cui il file system non ha più bisogno, in modo che il sistema possa creare lo snapshot più rapidamente e con una dimensione inferiore. Per scoprire come configurare l'opzione di eliminazione sui dischi, consulta Formattare e montare un disco non di avvio su una VM Linux.

Crea un'immagine di uno snapshot utilizzato di frequente

Se utilizzi ripetutamente uno snapshot nella stessa zona per creare un disco (Persistent Disk o Hyperdisk), risparmia i costi di networking utilizzando lo snapshot una sola volta e creando un'immagine dello snapshot. Archivia questa immagine e utilizzala per creare il tuo disco e avviare un'istanza VM. Per le istruzioni, consulta la sezione Creazione di un'immagine personalizzata.

Come best practice, acquisisci uno snapshot del disco una volta all'ora. Evita di scattare snapshot più spesso di così. Il modo più semplice per raggiungere questo obiettivo è impostare una pianificazione degli snapshot.

Altre best practice

  • Utilizza file system per il journaling come ext4 per ridurre il rischio che i dati vengano memorizzati nella cache senza che vengano effettivamente scritti sul disco permanente.
  • Crea uno snapshot dei dati in base a una pianificazione regolare per ridurre al minimo la perdita di dati a causa di errori imprevisti.

Passaggi successivi