Crie snapshots consistentes de aplicativos de discos anexados a instâncias de máquina virtual (VM) do Linux. Em geral, a qualidade do snapshot do disco depende do modo como os aplicativos podem se recuperar dos snapshots que você cria durante intensas cargas de trabalho de gravação. Os snapshots consistentes do aplicativo capturam o estado dos dados do aplicativo no momento do backup, com todas as transações do aplicativo concluídas e todas as gravações pendentes liberadas para o disco.
Para criar snapshots consistentes com o aplicativo, pausar apps ou processos do sistema operacional que gravam dados no disco, transferir os buffers do disco e sincronize o sistema de arquivos antes de criar o snapshot. Dependendo do aplicativo, essas e outras etapas podem ser necessárias para garantir que todas as transações do aplicativo sejam concluídas e capturadas no backup.
Para criar um snapshot consistente do aplicativo dos seus discos, use o seguinte processo:
- Para preparar o ambiente de convidado para a consistência do aplicativo, crie scripts de shell personalizados para serem executados antes e depois da captura do snapshot
- Defina as configurações de snapshots na instância de máquina virtual (VM).
- Crie um snapshot com a opção
guest-flush
ativada. A opçãoguest-flush
inicia seus scripts de snapshot pré e pós.
Antes de começar
- Crie uma VM do Linux.
- Atualize o ambiente de convidado.
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
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.
-
administrador de instâncias do Compute(v1) (
roles/compute.instanceAdmin.v1
) -
Para se conectar a uma VM que pode ser executada como uma conta de serviço:
Usuário da conta de serviço (v1) (
roles/iam.serviceAccountUser
) -
Para criar um snapshot de um disco zonal:
-
compute.snapshots.create
compute.disks.createSnapshot
-
-
Para criar um snapshot de um disco regional usando os dados dele:
-
compute.snapshots.create
-
compute.instances.useReadOnly
compute.disks.createSnapshot
-
-
Para criar um snapshot de um disco regional usando um checkpoint de recuperação de réplica:
-
compute.snapshots.create
compute.disks.createSnapshot
-
-
Para criar uma programação de snapshot:
compute.resourcePolicies.create
- Para anexar uma programação de snapshot a um disco:
-
compute.disks.addResourcePolicies
compute.resourcePolicies.use
-
- Para excluir um snapshot:
compute.snapshots.delete
-
compute.snapshots.list
- A consistência do aplicativo é garantida apenas pelo comportamento dos seus scripts de pré e pós-snapshot personalizados, e não pela própria operação do snapshot.
- Ao usar a opção
guest-flush
na solicitação de criação de snapshot, o snapshot não será criado se o script retornar um erro ou atingir o tempo limite. - Pause os apps ou processos do sistema operacional em execução na VM que grava dados no disco.
- Esvaziar os buffers do disco. Por exemplo, o MySQL tem uma instrução
FLUSH
(em inglês). Use a ferramenta que estiver disponível para o aplicativo. - Sincronize seu sistema de arquivos.
- Discos anexados por SCSI: uma lista separada por vírgulas de pares
<target/lun>
. - Discos anexados ao NVME: uma lista separada por vírgulas de pares
<nvme:namespace>
. Abra ou crie o arquivo de configuração do ambiente de convidado.
edit /etc/default/instance_configs.cfg
Adicione a seção a seguir ao arquivo de configuração, salve as alterações e saia do editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Substitua:
ENABLED
: defina comotrue
para ativar o recurso de snapshot consistente do aplicativo. O valor padrão éfalse
.TIMEOUT_SECONDS
: o número de segundos que o script de antes ou pós-snapshot pode levar para concluir a execução antes de expirar. O valor inteiro precisa estar entre 0 e 300. O valor padrão é60
.
Reinicie o agente convidado para usar as novas definições de configuração.
$ sudo systemctl restart google-guest-agent.service
Acesse a página Criar um snapshot no console do Google Cloud.
Acessar a página "Criar um snapshot"- Digite um Nome de snapshot.
-
Selecione um Tipo de snapshot. O snapshot padrão é
STANDARD
, que é a melhor opção para backup de longo prazo e recuperação de desastres.Escolha Snapshot do arquivo para uma retenção de dados mais econômica.
- Opcional: insira uma Descrição sobre o snapshot.
- Em Disco de origem, selecione o disco do qual você quer criar um snapshot.
Na seção Local, escolha o local de armazenamento dos snapshots.
O local padrão predefinido ou personalizado definido nas configurações de snapshot é selecionado automaticamente. Se preferir, modifique as configurações dos snapshots e os armazene em um local de armazenamento personalizado da seguinte forma:
Escolha o tipo de local de armazenamento que você quer para os snapshots.
- Escolha Multirregional para maior disponibilidade por um custo mais alto.
- Escolha Snapshots regionais para ter mais controle sobre a localização física dos dados por um custo menor.
- No campo Selecionar local, escolha a região ou multirregião específica que você quer usar. Para usar a região ou multirregião mais próxima do disco de origem, selecione Com base no local do disco.
- Marque a opção Ativar snapshot consistente do aplicativo.
- Clique em Criar para criar o snapshot.
Para criar um snapshot no local padrão predefinido ou personalizado definido nas configurações do snapshot, use o 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
-
Como alternativa, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua a flag
--storage-location
para indicar onde ele deve ser armazenado: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
Substitua:
- SNAPSHOT_NAME: um nome para o snapshot.
- SOURCE_ZONE: a zona do disco de origem.
- SOURCE_DISK_NAME: o nome do volume de disco a partir do qual você quer criar um snapshot.
- SNAPSHOT_TYPE: o tipo de snapshot, que é STANDARD ou
ARCHIVE.
Se um tipo de snapshot não for especificado, um snapshot
STANDARD
será criado. -
STORAGE_LOCATION (opcional): a multirregião do Cloud Storage ou a região do Cloud Storage onde você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.
Use o parâmetro
--storage-location
somente quando quiser substituir o local de armazenamento padrão predefinido ou personalizado que está definido nas configurações de snapshot.
-
Para criar o snapshot no local padrão predefinido ou personalizado configurado nas configurações de snapshot, faça uma solicitação
POST
para o métodosnapshots.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, }
-
Como alternativa, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação
POST
ao métodosnapshots.insert
e inclua nela a propriedadestorageLocations
: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: o ID do projeto em que você quer criar o snapshot.
- SNAPSHOT_NAME: um nome para o snapshot.
- SOURCE_PROJECT_ID: o ID do projeto de disco de origem.
- SOURCE_ZONE: a zona do disco de origem.
- SOURCE_DISK_NAME: o nome do volume de disco a partir do qual você quer criar um snapshot.
- SNAPSHOT_TYPE: o tipo de snapshot, que é STANDARD ou
ARCHIVE.
Se um tipo de snapshot não for especificado, um snapshot
STANDARD
será criado. -
STORAGE_LOCATION (opcional): a multirregião do Cloud Storage ou a região do Cloud Storage onde você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.
Use o parâmetro
storageLocations
somente quando quiser substituir o local de armazenamento padrão predefinido ou personalizado que está definido nas configurações de snapshot. Revise os registros dos seus eventos de criação de snapshot:
- No console do Google Cloud, acesse a página Logging do Google Cloud Observability > Registros:
Acessar Análise de registros - Acesse Explorador de registros na barra de navegação à esquerda.
- Na lista Filtrar por rótulo ou pesquisa de texto, selecione Converter para filtro avançado.
Substitua o campo de filtro pelo seguinte texto:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot"
- No console do Google Cloud, acesse a página Logging do Google Cloud Observability > Registros:
Se nenhum script for encontrado, nenhum snapshot será criado Verifique se você seguiu as etapas em Criar scripts de snapshot pré e postar.
Se houver um erro de script ou tempo limite, nenhum snapshot será criado. Consulte Como se preparar para snapshots consistentes. O tempo limite máximo para você definir nas configurações é de 300 segundos. Repita todo o processo usando os scripts de amostra.
Um disco precisa ser anexado a uma VM para capturar um snapshot do disco com
guest-flush
ativado. Para saber como criar uma VM do Linux e anexar um disco, consulte Como criar uma VM.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Papéis e permissões necessárias
Para receber as permissões necessárias para gerenciar snapshots padrão, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Esses papéis predefinidos contêm as permissões necessárias para gerenciar snapshots padrão. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para gerenciar snapshots padrão:
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Limitações
A criação de snapshots consistentes de aplicativos no Linux tem as seguintes limitações:
Criar scripts pré e pós snapshot
Antes de prosseguir, atualize o ambiente de convidado para que você esteja executando o software mais recente na sua VM do Linux.
Para facilitar a consistência do aplicativo, crie scripts de shell pré e pós para serem executados antes e depois da captura do snapshot. Use os scripts pré e pós para operações como:
O exemplo de código a seguir mostra um script pré-snapshot. Observe os caracteres iniciais
#!
.#!/bin/bash sudo fsfreeze -f [example-disk-location]
No exemplo de código a seguir, mostramos um script de snapshot de postagem. Observe os
#!
caracteres iniciais.#!/bin/bash sudo fsfreeze -u [example-disk-location]
Salve os scripts na VM no diretório
/etc/google/snapshots/
. O caminho completo do script de pré-lançamento precisa ser/etc/google/snapshots/pre.sh
e o caminho completo do script de postagem precisa ser/etc/google/snapshots/post.sh
.Como referenciar discos específicos nos scripts
O primeiro argumento transmitido aos scripts pré e pós-snapshot é uma lista de discos para os quais você está criando snapshots. É possível usar esse argumento nos scripts para várias verificações. Por exemplo, se a VM tiver vários discos anexados, mas você tiver especificado apenas um disco na solicitação de snapshot, será possível verificar para qual disco o snapshot está sendo criado.
O argumento é formatado da seguinte forma:
Por exemplo, seu disco de inicialização anexado a SCSI pode aparecer como
1/0
, enquanto um outro disco anexado à VM pode aparecer como2/0
.Editar o arquivo de configuração do ambiente de convidado
Defina as configurações de snapshot consistentes do aplicativo atualizando um arquivo de configuração específico na VM.
Criar um snapshot com
guest-flush
ativadoUsando o console do Google Cloud, a Google Cloud CLI ou REST, crie um snapshot com a opção
guest-flush
ativada. Isso começa a executar os scripts de snapshot anterior e posterior antes e depois da captura.Console
gcloud
Crie o snapshot na política de local de armazenamento definida pelas configurações do snapshot ou usando um local de armazenamento alternativo de sua escolha. Para mais informações, consulte Escolher o local de armazenamento dos snapshots.
REST
Crie o snapshot na política de local de armazenamento definida pelas configurações do snapshot ou usando um local de armazenamento alternativo de sua escolha. Para mais informações, consulte Escolher o local de armazenamento dos snapshots.
Substitua:
Criar uma programação de snapshot com o
guest-flush
ativadoUse snapshots programados para fazer backup regular e automático do Persistent Disk zonal e regional e do Google Cloud Hyperdisk. Se quiser programar snapshots consistentes do aplicativo para o backup, use a opção
--guest-flush
ao criar a programação de snapshot para que os scripts pré e pós snapshot sejam executados antes e depois de cada snapshot programado.Por exemplo, depois de configurar o arquivo de configuração do ambiente para convidado e criar scripts personalizados, o comando a seguir cria snapshots consistentes do aplicativo por hora:
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush
Para saber mais, consulte Sobre programações de snapshots para discos.
Solução de problemas
Siga as etapas abaixo para resolver problemas no processo de criação de snapshots.
A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-09-24 UTC.
-