Puoi creare snapshot dei dischi collegati all'applicazione coerenti di macchine virtuali (VM) Linux. In generale, la qualità dei lo snapshot del disco dipende dalla capacità di recupero delle applicazioni gli snapshot che crei durante carichi di lavoro di scrittura intensivi. Gli snapshot coerenti con le applicazioni acquisiscono lo stato dei dati dell'applicazione l'ora del backup in cui tutte le transazioni relative alle richieste sono state completate e tutte le operazioni in sospeso con il flush del disco sul disco.
Per creare snapshot coerenti con le applicazioni, metti in pausa le app o il funzionamento processi di sistema che scrivono dati sul disco, svuotano i buffer del disco e sincronizza il file system prima di creare lo snapshot. In base potrebbero essere necessari questi e altri passaggi per garantire che tutti le transazioni dell'applicazione vengono completate e acquisite nel backup.
Per creare uno snapshot dei dischi coerente con l'applicazione, utilizza seguente processo:
- Per preparare l'ambiente guest alla coerenza dell'applicazione, crea regole personalizzate script shell da eseguire prima e dopo l'acquisizione dello snapshot
- Configura le impostazioni degli snapshot sull'istanza della macchina virtuale (VM).
- Crea uno snapshot con l'opzione
guest-flush
abilitata.guest-flush
consente di avviare gli script pre e post-istantanea.
Prima di iniziare
- Crea una VM Linux.
- Aggiorna l'ambiente guest.
-
Se non l'hai già fatto, configura l'autenticazione.
Autenticazione è
la procedura di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione
Compute Engine come segue.
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 possa essere eseguita come account di servizio:
Utente account di servizio (v1) (
roles/iam.serviceAccountUser
) -
Per creare uno snapshot di un disco a livello di zona:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Per creare uno snapshot di un disco di una regione utilizzando i dati presenti sul disco:
-
compute.snapshots.create
-
compute.instances.useReadOnly
-
compute.disks.createSnapshot
-
-
Per creare uno snapshot di un disco di 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 del tuo asset e post-snapshot, non dall'operazione istantanea 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 la limite di timeout. - Metti in pausa le app o i processi del sistema operativo in esecuzione sulla VM che scrive i dati sul disco.
- Svuota i buffer del disco. Ad esempio, MySQL ha un
FLUSH
l'Informativa. Utilizza lo strumento disponibile per la tua applicazione. - Sincronizza del file system.
- Dischi collegati SCSI: un elenco separato da virgole di
<target/lun>
coppie. - Dischi collegati a NVME: un elenco separato da virgole di
<nvme:namespace>
coppie. Apri o crea il file di configurazione dell'ambiente guest.
edit /etc/default/instance_configs.cfg
Aggiungi la seguente sezione al file di configurazione e salva le modifiche ed esci dall'editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Sostituisci quanto segue:
ENABLED
: imposta sutrue
per attivare l'applicazione di snapshot coerente. Il valore predefinito èfalse
.TIMEOUT_SECONDS
: il numero di secondi necessari lo script post-istantanea può terminare l'esecuzione prima del timeout. La il valore intero deve essere compreso tra 0 e 300. Il valore predefinito è60
.
Riavvia 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 un'istantanea- Inserisci un Nome snapshot.
-
Seleziona un tipo di snapshot. Il valore predefinito è uno snapshot
STANDARD
, ovvero l'opzione migliore per backup e ripristino di emergenza a lungo termine.Scegli Istantanea archiviazione per conservare i dati in modo più conveniente.
- (Facoltativo) Inserisci una descrizione dello snapshot.
- In Disco di origine, seleziona il disco esistente di cui vuoi creare uno snapshot.
Nella sezione Posizione, scegli la tua istantanea posizione di archiviazione.
La località predefinita o personalizzata definita nello snapshot viene selezionata automaticamente. Facoltativamente, puoi eseguire l'override le impostazioni degli snapshot e archiviarli in una posizione di archiviazione personalizzata nel seguente modo:
Scegli il tipo di posizione di archiviazione per lo snapshot.
- Scegli Più regioni per una maggiore disponibilità a un costo maggiore.
- Scegli Snapshot a livello di regione per avere un maggiore controllo sulla posizione fisica dei dati a un costo inferiore.
- Nel campo Seleziona località, seleziona la regione specifica oppure dall'area multiregionale che vuoi utilizzare. Per utilizzare una o più regioni più vicino al disco di origine, seleziona In base alla posizione del disco.
- Seleziona l'opzione Abilita snapshot coerente dell'applicazione.
- Fai clic su Crea per creare lo snapshot.
Per creare uno snapshot nella posizione predefinita o personalizzata configurato nelle impostazioni dello snapshot, utilizza 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
--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: 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 snapshot, STANDARD o ARCHIVE.
Se il tipo di snapshot non è specificato, viene creato uno snapshot
STANDARD
. -
STORAGE_LOCATION: Facoltativo: il campo Cloud Storage (più regioni) o la regione di Cloud Storage in cui archiviare lo snapshot. Puoi specificare una sola località di archiviazione.
Utilizza il parametro
--storage-location
solo quando vuoi eseguire l'override del località di archiviazione predefinita o personalizzata configurata nello snapshot impostazioni.
-
Per creare uno snapshot nella posizione predefinita o personalizzata configurato nelle impostazioni dello snapshot, effettua una richiesta
POST
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
snapshots.insert
e includi la proprietàstorageLocations
nella tua 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 per creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di snapshot, STANDARD o ARCHIVE.
Se il tipo di snapshot non è specificato, viene creato uno snapshot
STANDARD
. -
STORAGE_LOCATION: Facoltativo: il campo Cloud Storage (più regioni) o la regione di Cloud Storage in cui archiviare lo snapshot. Puoi specificare una sola località di archiviazione.
Utilizza il parametro
storageLocations
solo quando vuoi eseguire l'override del località di archiviazione predefinita o personalizzata configurata nello snapshot impostazioni. Vai alla pagina Esplora log nel Console Google Cloud:
Incolla questa query nel riquadro Query di log:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Esegui la query ed esamina i log:
Se non vengono trovati script pre o post-istantanea nell'istanza per bloccare l'attività/IOPS sul file system, non verrà creato alcuno snapshot. Assicurati di aver seguito i passaggi descritti in Creare script pre e post-istantanea.
In caso di errore di script o timeout, non viene creato alcuno snapshot. Rivedi Preparazione per snapshot coerenti. Tieni presente che il periodo di timeout massimo che puoi Configura nelle impostazioni è di 300 secondi. Prova a ripetere l'intera utilizzando gli script di esempio.
Un disco deve essere collegato a una VM per acquisire uno snapshot del disco con
guest-flush
abilitato. Scopri come creare una VM Linux e collegarla su un disco, consulta la sezione Creazione di una VM.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, vedi Esegui 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 seguenti ruoli IAM sul progetto:
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti le autorizzazioni necessarie per gestire gli snapshot standard. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per gestire gli snapshot standard, sono necessarie le seguenti autorizzazioni:
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.
Limitazioni
La creazione di snapshot coerenti con le applicazioni su Linux seguenti limitazioni:
Crea script pre e post-istantanea
Prima di procedere, aggiorna l'ambiente guest. in modo da eseguire il software più recente sulla tua VM Linux.
Per facilitare la coerenza dell'applicazione, crea la shell pre e post dello snapshot da eseguire prima e dopo l'acquisizione dello snapshot. Utilizza i post prima e dopo script per operazioni come:
Il seguente esempio di codice mostra uno script pre-snapshot. Tieni presente
#!
caratteri.#!/bin/bash sudo fsfreeze -f [example-disk-location]
Il seguente esempio di codice mostra uno script post-istantanea. Tieni presente
#!
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 prescript deve essere/etc/google/snapshots/pre.sh
e il percorso completo dello script del post devono essere/etc/google/snapshots/post.sh
.Fare riferimento a dischi specifici negli script
Il primo argomento passato agli script pre e post snapshot è un dei dischi per i quali stai creando snapshot. Puoi usare questo argomento negli script per vari controlli. Ad esempio, se la tua VM ha più dischi ma hai specificato un solo disco nella richiesta di snapshot, puoi per verificare per quale disco viene creato lo snapshot.
L'argomento viene formattato come segue:
Ad esempio, il disco di avvio collegato a SCSI potrebbe essere visualizzato come
1/0
mentre il disco aggiuntivo collegato alla VM potrebbe essere visualizzato come2/0
.Modifica il file di configurazione dell'ambiente guest
Configura le impostazioni degli snapshot coerenti con l'applicazione aggiornare un file di configurazione specifico sulla VM.
Crea uno snapshot con
guest-flush
abilitatoTramite la console Google Cloud, Google Cloud CLI o REST per creare uno snapshot con l'opzione
guest-flush
abilitata. Viene avviata l'esecuzione gli script pre e post-istantanea prima e dopo l'acquisizione dell'istantanea.Console
gcloud
Puoi creare lo snapshot nel criterio di località di archiviazione definita dal tuo impostazioni snapshot oppure utilizzando una posizione di archiviazione alternativa di tua scelta. Per ulteriori informazioni, vedi Scegli la località di archiviazione degli snapshot.
REST
Puoi creare lo snapshot nel criterio di località di archiviazione definita dal tuo impostazioni snapshot oppure utilizzando una posizione di archiviazione alternativa di tua scelta. Per ulteriori informazioni, vedi Scegli la località di archiviazione degli snapshot.
Sostituisci quanto segue:
Crea una pianificazione di snapshot con
guest-flush
abilitatoUsa gli snapshot pianificati per eseguire regolarmente e automaticamente il backup dei server Persistent Disk regionale e Google Cloud Hyperdisk. Se vuoi programmare snapshot coerenti con l'applicazione per il backup, utilizza l'
--guest-flush
quando crei la pianificazione dello snapshot, in modo che i dati vengono eseguiti prima e dopo ogni snapshot pianificato.Ad esempio, dopo configurare il file di configurazione dell'ambiente guest e creando script personalizzati, il comando seguente crea di snapshot orari coerenti con le applicazioni:
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 di snapshot per i dischi.
Risoluzione dei problemi
Risolvi i problemi relativi alla pianificazione e alla creazione di snapshot esaminando l'analisi dei log e il controllo delle configurazioni.
Esamina i log
Controlla 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-08-16 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" }] -