Puoi creare snapshot coerenti con l'applicazione dei dischi collegati alle istanze di macchine virtuali (VM) Linux. In generale, la qualità dello snapshot del disco dipende dalla capacità delle applicazioni di recuperare dagli snapshot creati durante carichi di lavoro di scrittura intensi. Gli snapshot coerenti con l'applicazione acquisiscono lo stato dei dati dell'applicazione al momento del backup con tutte le transazioni dell'applicazione completate e tutte le scritture in attesa svuotate sul disco.
Per creare snapshot coerenti con l'applicazione, metti in pausa le app o i processi del sistema operativo che scrivono dati sul disco, svuota i buffer del disco e sincronizza il file system prima di creare lo snapshot. A seconda dell'applicazione, potrebbero essere necessari questi e altri passaggi per garantire che tutte le transazioni dell'applicazione siano complete e acquisite nel backup.
Per creare uno snapshot coerente con l'applicazione dei tuoi dischi, segui la procedura riportata di seguito:
- Per preparare l'ambiente guest per la coerenza dell'applicazione, crea script shell personalizzati da eseguire prima e dopo l'acquisizione dello snapshot.
- Configura le impostazioni degli snapshot nell'istanza della macchina virtuale (VM).
- Crea uno snapshot con l'opzione
guest-flush
abilitata. L'opzioneguest-flush
avvia gli script pre e post istantanea.
Prima di iniziare
- Crea una VM Linux.
- Aggiorna l'ambiente guest.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
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.
-
Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1
) -
Per connetterti a una VM che può essere eseguita come account di servizio:
Utente account di servizio (v1) (
roles/iam.serviceAccountUser
) -
Per creare uno snapshot di un disco zonale:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Per creare uno snapshot di un disco regionale utilizzando i dati sul disco:
-
compute.snapshots.create
-
compute.instances.useReadOnly
-
compute.disks.createSnapshot
-
-
Per creare uno snapshot di un disco di una regione da un checkpoint di ripristino della replica:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Per creare una pianificazione snapshot:
compute.resourcePolicies.create
-
Per collegare una pianificazione degli snapshot a un disco:
-
compute.disks.addResourcePolicies
-
compute.resourcePolicies.use
-
-
Per eliminare uno snapshot:
-
compute.snapshots.delete
-
compute.snapshots.list
-
- La coerenza dell'applicazione è garantita solo dal comportamento degli script personalizzati pre e post snapshot, non dall'operazione di snapshot stessa.
- Quando utilizzi l'opzione
guest-flush
nella richiesta di creazione dello snapshot, lo snapshot non viene creato se lo script restituisce un errore o raggiunge il limite di timeout. - Metti in pausa le app o i processi del sistema operativo in esecuzione sulla VM che scrivono dati sul disco.
- Svuotare i buffer del disco. Ad esempio, MySQL ha un'istruzione
FLUSH
. Utilizza lo strumento disponibile per la tua applicazione. - Sincronizza il file system.
- Dischi collegati tramite SCSI: un elenco separato da virgole di coppie
<target/lun>
. - Dischi collegati tramite NVME: un elenco separato da virgole di coppie
<nvme:namespace>
. Apri o crea il file di configurazione dell'ambiente guest.
edit /etc/default/instance_configs.cfg
Aggiungi la seguente sezione al file di configurazione, poi salva le modifiche e esci dall'editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Sostituisci quanto segue:
ENABLED
: impostato sutrue
per attivare la funzionalità di snapshot coerente con l'applicazione. Il valore predefinito èfalse
.TIMEOUT_SECONDS
: il numero di secondi che lo script pre o post snapshot può richiedere per completare l'esecuzione prima del timeout. Il valore intero deve essere compreso tra 0 e 300. Il valore predefinito è60
.
Riavviare Guest Agent per utilizzare le nuove impostazioni di configurazione.
$ sudo systemctl restart google-guest-agent.service
Vai alla pagina Crea uno snapshot nella console Google Cloud.
Vai alla pagina Crea uno snapshot- Inserisci un nome per lo snapshot.
-
Seleziona un tipo di snapshot. Il valore predefinito è uno snapshot di
STANDARD
, che è l'opzione migliore per il backup a lungo termine e ripristino di emergenza.Scegli Snapshot archivio per una conservazione dei dati più economica.
- (Facoltativo) Inserisci una descrizione dell'istantanea.
- In Disco di origine, seleziona il disco esistente di cui vuoi creare uno snapshot.
Nella sezione Località, scegli la posizione di archiviazione degli snapshot.
La posizione predefinita personalizzata o predefinita definita nelle impostazioni dello snapshot viene selezionata automaticamente. Se vuoi, puoi ignorare le impostazioni degli istantanee e archiviarle in una posizione di archiviazione personalizzata nel seguente modo:
Scegli il tipo di posizione di archiviazione che preferisci per lo snapshot.
- Scegli Più regioni per una maggiore disponibilità a un costo superiore.
- Scegli snapshot regionali per un maggiore controllo sulla posizione fisica dei dati a un costo inferiore.
- Nel campo Seleziona località, seleziona la regione o la più regioni specifiche che vuoi utilizzare. Per utilizzare la regione o le regioni più vicine al disco di origine, seleziona In base alla località del disco.
- Seleziona l'opzione Attiva snapshot coerente con l'applicazione.
- Fai clic su Crea per creare lo snapshot.
Per creare uno snapshot nella posizione predefinita o personalizzata configurata nelle impostazioni dello snapshot, utilizza il comando
gcloud compute snapshots create
.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush
-
In alternativa, per ignorare le impostazioni di istantanea e crearne una in una posizione di archiviazione personalizzata, includi il flag
--storage-location
per indicare dove archiviare l'istantanea.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
Sostituisci quanto segue:
- SNAPSHOT_NAME: un nome per lo snapshot.
- SOURCE_ZONE: la zona del disco di origine.
- SOURCE_DISK_NAME: il nome del volume del disco da cui vuoi creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE.
Se non viene specificato un tipo di snapshot, viene creato uno snapshot
STANDARD
. -
STORAGE_LOCATION: facoltativo. La regione multipla di Cloud Storage o la regione di Cloud Storage in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.
Utilizza il parametro
--storage-location
solo se vuoi eseguire l'override della posizione di archiviazione predefinita predefinita o personalizzata configurata nelle impostazioni dello snapshot.
-
Per creare uno snapshot nella posizione predefinita o personalizzata configurata nelle impostazioni dello snapshot, invia una richiesta
POST
al metodosnapshots.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, }
-
In alternativa, per ignorare le impostazioni dello snapshot e crearne uno in una posizione di archiviazione personalizzata, invia una richiesta
POST
al metodosnapshots.insert
e includi la proprietàstorageLocations
nella richiesta: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: l'ID del progetto in cui vuoi creare lo snapshot.
- SNAPSHOT_NAME: un nome per lo snapshot.
- SOURCE_PROJECT_ID: l'ID del progetto del disco di origine.
- SOURCE_ZONE: la zona del disco di origine.
- SOURCE_DISK_NAME: il nome del disco da cui vuoi creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE.
Se non viene specificato un tipo di snapshot, viene creato uno snapshot
STANDARD
. -
STORAGE_LOCATION: facoltativo. La regione multipla di Cloud Storage o la regione di Cloud Storage in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.
Utilizza il parametro
storageLocations
solo se vuoi eseguire l'override della posizione di archiviazione predefinita predefinita o personalizzata configurata nelle impostazioni dello snapshot. Vai alla pagina Esplora log nella console Google Cloud:
Incolla la seguente query nel riquadro Query log:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Esegui la query ed esamina i log:
Se nell'istanza non vengono trovati script pre o post snapshot per bloccare l'attività/le IOPS sul file system, non verrà creato alcun snapshot. Assicurati di aver seguito i passaggi descritti in Creare script precedenti e successivi allo snapshot.
Se si verifica un errore o un timeout dello script, non viene creato alcun snapshot. Consulta Preparazione degli snapshot coerenti. Tieni presente che il periodo di timeout massimo che puoi configurare nelle impostazioni è di 300 secondi. Prova a ripetere l'intera procedura utilizzando gli script di esempio.
Per acquisire uno snapshot di un disco, il disco deve essere collegato a una VM con
guest-flush
abilitato. Per scoprire come creare una VM Linux e collegare un disco, consulta Creare una VM.
REST
Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per gestire gli snapshot standard, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire gli snapshot standard. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per gestire gli snapshot standard sono necessarie le seguenti autorizzazioni:
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Limitazioni
La creazione di snapshot coerenti con l'applicazione su Linux presenta le seguenti limitazioni:
Creare script pre e post snapshot
Prima di procedere, aggiorna l'ambiente guest in modo da eseguire il software più recente sulla VM Linux.
Per facilitare la coerenza dell'applicazione, crea script shell pre e post snapshot da eseguire prima e dopo l'acquisizione dello snapshot. Utilizza gli script pre e post per operazioni come:
Il seguente esempio di codice mostra uno script precedente allo snapshot. Prendi nota dei caratteri iniziali
#!
.#!/bin/bash sudo fsfreeze -f [example-disk-location]
Il seguente esempio di codice mostra uno script post-snapshot. Tieni presente i
#!
caratteri iniziali.#!/bin/bash sudo fsfreeze -u [example-disk-location]
Devi salvare gli script sulla VM nella directory
/etc/google/snapshots/
. Il percorso completo del pre-script deve essere/etc/google/snapshots/pre.sh
e il percorso completo del post-script deve essere/etc/google/snapshots/post.sh
.Fare riferimento a dischi specifici negli script
Il primo argomento passato agli script pre e post snapshot è un elenco di dischi per i quali stai creando snapshot. Puoi utilizzare questo argomento nei tuoi script per vari controlli. Ad esempio, se alla VM sono collegati più dischi, ma hai specificato un solo disco nella richiesta di snapshot, puoi controllare per quale disco viene creato lo snapshot.
L'argomento è formattato come segue:
Ad esempio, il disco di avvio collegato tramite SCSI potrebbe essere visualizzato come
1/0
, mentre un altro disco collegato alla VM potrebbe essere visualizzato come2/0
.Modificare il file di configurazione dell'ambiente guest
Configura le impostazioni degli snapshot coerenti dell'applicazione aggiornando un file di configurazione specifico sulla VM.
Crea uno snapshot con
guest-flush
abilitatoUtilizzando la console Google Cloud, Google Cloud CLI o REST, crea uno snapshot con l'opzione
guest-flush
abilitata. Verranno quindi eseguiti gli script pre e post snapshot prima e dopo l'acquisizione dello snapshot.Console
gcloud
Puoi creare lo snapshot nel criterio della località di archiviazione definito dalle tue impostazioni di snapshot o utilizzando una località di archiviazione alternativa di tua scelta. Per ulteriori informazioni, consulta Scegliere la posizione di archiviazione degli snapshot.
REST
Puoi creare lo snapshot nel criterio della località di archiviazione definito dalle tue impostazioni di snapshot o utilizzando una località di archiviazione alternativa di tua scelta. Per ulteriori informazioni, consulta Scegliere la posizione di archiviazione degli snapshot.
Sostituisci quanto segue:
Crea una pianificazione degli snapshot con
guest-flush
abilitataUtilizza gli snapshot pianificati per eseguire regolarmente e automaticamente il backup dei Persistent Disk a livello di zona e di regione e di Google Cloud Hyperdisk. Se vuoi pianificare snapshot coerenti con l'applicazione per il backup, utilizza l'opzione
--guest-flush
quando crei la pianificazione degli snapshot in modo che gli script pre e post snapshot vengano eseguiti prima e dopo ogni snapshot pianificato.Ad esempio, dopo aver configurato il file di configurazione dell'ambiente guest e aver creato script personalizzati, il seguente comando crea snapshot coerenti dell'applicazione ogni ora:
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
Per saperne di più, consulta Informazioni sulle pianificazioni degli snapshot per i dischi.
Risoluzione dei problemi
Risolvi i problemi relativi alla pianificazione e alla procedura di creazione degli snapshot esaminando i log e controllando le configurazioni.
Esamina i log
Controllare le configurazioni
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-11-23 UTC.
-