Puoi creare snapshot coerenti con l'applicazione dei dischi collegati a istanze di macchine virtuali (VM) Linux. In generale, la qualità dello snapshot del disco dipende dall'efficacia con cui le applicazioni possono 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 eliminate sul disco.
Per creare snapshot coerenti con l'applicazione, metti in pausa app o processi del sistema operativo che scrivono dati sul disco, eliminano i buffer del disco e sincronizza il file system prima di creare lo snapshot. A seconda dell'applicazione, questi e altri passaggi potrebbero essere necessari per garantire che tutte le transazioni dell'applicazione vengano completate e acquisite nel backup.
Per creare uno snapshot dei tuoi dischi coerente con l'applicazione, utilizza il seguente processo:
- Per preparare l'ambiente guest alla coerenza dell'applicazione, crea script shell personalizzati da eseguire prima e dopo l'acquisizione dello snapshot
- Configura le impostazioni degli snapshot sulla tua istanza di macchina virtuale (VM).
- Crea uno snapshot con l'opzione
guest-flush
abilitata. L'opzioneguest-flush
avvia gli script prima e dopo l'istantanea.
Prima di iniziare
- Crea una VM Linux.
- Aggiorna l'ambiente ospite.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
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
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Set a default region and zone.
-
Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1
) -
Per connetterti a una VM eseguibile come account di servizio:
Utente account di servizio (v1) (
roles/iam.serviceAccountUser
) -
Per creare uno snapshot di un disco di zona:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Per creare uno snapshot di un disco di regione 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 recupero della replica:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Per creare una pianificazione di snapshot:
compute.resourcePolicies.create
-
Per collegare una pianificazione di 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 prima e dopo l'istantanea, non dall'operazione dello snapshot stessa.
- Quando utilizzi l'opzione
guest-flush
nella richiesta di creazione di 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 scrive dati sul disco.
- Fai il svuotamento dei buffer del disco. Ad esempio, MySQL ha un'istruzione
FLUSH
. Utilizza lo strumento disponibile per la tua applicazione. - Sincronizza il file system.
- Dischi collegati a SCSI: un elenco separato da virgole di
<target/lun>
coppie. - Dischi collegati a NVME: un elenco separato da virgole di coppie
<nvme:namespace>
. Apri o crea il file di configurazione dell'ambiente ospite.
edit /etc/default/instance_configs.cfg
Aggiungi la sezione seguente al file di configurazione, poi salva le modifiche e esci dall'editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Sostituisci quanto segue:
ENABLED
: impostala sutrue
per attivare la funzionalità di snapshot coerente dell'applicazione. Il valore predefinito èfalse
.TIMEOUT_SECONDS
: il numero di secondi che lo script precedente o successivo può richiedere per terminare l'esecuzione prima del timeout. Il valore intero deve essere compreso tra 0 e 300. Il valore predefinito è60
.
Riavvia l'agente ospite 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
STANDARD
, che è l'opzione migliore per il backup a lungo termine e il ripristino di emergenza.Scegli Archivia istantanea per una conservazione dei dati più conveniente.
- (Facoltativo) Inserisci una descrizione dello snapshot.
- In Disco di origine, seleziona il disco esistente di cui vuoi creare uno snapshot.
Nella sezione Località, scegli la località di archiviazione degli snapshot.
La posizione predefinita o personalizzata definita nelle impostazioni dello snapshot viene selezionata automaticamente. Facoltativamente, puoi eseguire l'override delle impostazioni degli snapshot e archiviare gli snapshot in una posizione di archiviazione personalizzata seguendo questi passaggi:
Scegli il tipo di posizione di archiviazione per lo snapshot.
- Scegli Più regioni per una disponibilità maggiore a un costo superiore.
- Scegli gli Snapshot regionali per un maggiore controllo sulla località fisica dei dati a un costo inferiore.
- Nel campo Seleziona località, seleziona una o più regioni specifiche che vuoi utilizzare. Per utilizzare una o più regioni più vicine al disco di origine, seleziona In base alla località del disco.
- Seleziona l'opzione Abilita snapshot coerente con l'applicazione.
- Fai clic su Crea per creare lo snapshot.
Per creare uno snapshot nel percorso predefinito o personalizzato predefinito configurato 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 eseguire l'override delle impostazioni dello snapshot e creare uno snapshot in una posizione di archiviazione personalizzata, includi il flag
--storage-location
per indicare dove archiviare lo snapshot.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: il nome dello 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 snapshot, STANDARD o ARCHIVIO.
Se non viene specificato un tipo di snapshot, viene creato uno snapshot
STANDARD
. -
STORAGE_LOCATION (Facoltativo) La regione Cloud Storage o la regione Cloud Storage in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.
Utilizza il parametro
--storage-location
solo quando vuoi eseguire l'override della posizione di archiviazione predefinita o personalizzata configurata nelle impostazioni degli snapshot.
-
Per creare uno snapshot nella posizione predefinita o personalizzata configurata nelle impostazioni dello snapshot, effettua 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 eseguire l'override delle impostazioni dello snapshot e creare uno snapshot in una posizione di archiviazione personalizzata, effettua 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: il nome dello 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 volume del disco da cui vuoi creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di snapshot, STANDARD o ARCHIVIA.
Se non viene specificato un tipo di snapshot, viene creato uno snapshot
STANDARD
. -
STORAGE_LOCATION (Facoltativo) La regione Cloud Storage o la regione Cloud Storage in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.
Utilizza il parametro
storageLocations
solo quando vuoi eseguire l'override della posizione di archiviazione predefinita o personalizzata configurata nelle impostazioni degli snapshot. Esamina i log degli eventi di creazione degli snapshot:
- Nella console Google Cloud, vai alla pagina Google Cloud Observability Logging >
Log:
Vai a Esplora log - Vai a Esplora log nel pannello di navigazione a sinistra.
- Nell'elenco Filtra per etichetta o ricerca testo, seleziona Converti in filtro avanzato.
Sostituisci il campo del filtro con il seguente testo:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot"
- Nella console Google Cloud, vai alla pagina Google Cloud Observability Logging >
Log:
Se non viene trovato nessuno script, non viene creato alcuno snapshot. Assicurati di aver seguito i passaggi descritti in Creare script di snapshot prima e dopo.
In caso di errore o timeout dello script, non viene creato alcuno snapshot. Consulta la sezione Preparazione per snapshot coerenti. Tieni presente che il periodo di timeout massimo che puoi configurare nelle impostazioni è di 300 secondi. Prova a ripetere l'intero processo utilizzando gli script di esempio.
Un disco deve essere collegato a una VM per acquisire uno snapshot del disco in cui
guest-flush
è abilitato. Per scoprire come creare una VM Linux e collegare un disco, consulta Creazione di una VM.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
Per maggiori informazioni, consulta Autenticazione per REST nella documentazione sull'autenticazione di Google Cloud.
Autorizzazioni e ruoli richiesti
Per ottenere le autorizzazioni necessarie per gestire gli snapshot standard, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire gli snapshot standard. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per gestire gli snapshot standard sono necessarie le seguenti autorizzazioni:
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Limitazioni
La creazione di snapshot coerenti con l'applicazione su Linux presenta le seguenti limitazioni:
Crea script di snapshot prima e dopo
Prima di procedere, aggiorna l'ambiente guest in modo da eseguire il software più recente sulla tua VM Linux.
Per favorire 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 pre-istantanea. Prendi nota dei caratteri
#!
iniziali.#!/bin/bash sudo fsfreeze -f [example-disk-location]
L'esempio di codice seguente mostra uno script di snapshot post. Osserva i caratteri
#!
iniziali.#!/bin/bash sudo fsfreeze -u [example-disk-location]
Devi salvare gli script sulla tua VM nella directory
/etc/google/snapshots/
. Il percorso completo del prescript deve essere/etc/google/snapshots/pre.sh
, mentre il percorso completo dello script del post deve essere/etc/google/snapshots/post.sh
.Fare riferimento a dischi specifici negli script
Il primo argomento passato agli script precedenti e successivi è un elenco di dischi per i quali stai creando gli snapshot. Puoi utilizzare questo argomento negli script per vari controlli. Ad esempio, se la tua VM ha più dischi collegati, 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 a SCSI potrebbe essere visualizzato come
1/0
, mentre un disco aggiuntivo collegato alla VM potrebbe essere visualizzato come2/0
.Modifica il file di configurazione dell'ambiente ospite
Configura le impostazioni degli snapshot coerenti con l'applicazione aggiornando uno specifico file di configurazione 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. Viene avviata l'esecuzione degli script prima e dopo l'acquisizione dello snapshot.Console
gcloud
Puoi creare lo snapshot nel criterio della località di archiviazione definito dalle tue impostazioni dello snapshot o utilizzando una località di archiviazione alternativa a tua scelta. Per maggiori informazioni, consulta Scegliere la posizione di archiviazione degli snapshot.
REST
Puoi creare lo snapshot nel criterio della località di archiviazione definito dalle tue impostazioni dello snapshot o utilizzando una località di archiviazione alternativa a tua scelta. Per maggiori informazioni, consulta Scegliere la posizione di archiviazione degli snapshot.
Sostituisci quanto segue:
Crea una pianificazione di snapshot con
guest-flush
abilitatoUtilizza gli snapshot pianificati per eseguire in modo regolare e automatico il backup del Persistent Disk a livello di zona e di regione e 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 precedenti e successivi vengano eseguiti prima e dopo ogni snapshot pianificato.Ad esempio, dopo aver configurato il file di configurazione dell'ambiente guest e creato script personalizzati, il comando seguente crea snapshot orari coerenti con l'applicazione:
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush
Per saperne di più, consulta Informazioni sulle pianificazioni di snapshot per i dischi.
Risoluzione dei problemi
Per risolvere i problemi del processo di creazione dello snapshot, segui questi passaggi.
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-05-29 UTC.
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema di traduzione" },{ "type": "thumb-down", "id": "otherDown", "label":"Altra" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Facile da capire" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Il problema è stato risolto" },{ "type": "thumb-up", "id": "otherUp", "label":"Altra" }] -