Você pode criar snapshots consistentes de aplicativos de discos anexados a instâncias de máquinas virtuais (VM) Linux. Em geral, a qualidade do instantâneo do disco depende de quão bem seus aplicativos podem se recuperar de instantâneos criados durante cargas de trabalho de gravação pesadas. 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 instantâneos consistentes com aplicativos, pause aplicativos ou processos do sistema operacional que gravam dados no disco, libere os buffers de disco e sincronize o sistema de arquivos antes de criar o instantâneo. Dependendo do seu 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 instantâneo consistente de aplicativo dos seus discos, use o seguinte processo:
- Para preparar o ambiente convidado para consistência do aplicativo, crie scripts de shell personalizados para serem executados antes e depois da captura do snapshot
- Defina as configurações de snapshot na sua instância de máquina virtual (VM).
- Crie um instantâneo com a opção
guest-flush
habilitada. A opçãoguest-flush
inicia seus scripts de pré e pós-instantâneo.
Antes de começar
- Crie uma VM Linux .
- Atualize o ambiente convidado .
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:
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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Administrador de instância 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 instantâneo de um disco zonal:
-
no projetocompute.snapshots.create
-
no discocompute.disks.createSnapshot
-
- Para criar um instantâneo de um disco regional usando os dados do disco:
-
no projetocompute.snapshots.create
-
na VM de origemcompute.instances.useReadOnly
-
no discocompute.disks.createSnapshot
-
- Para criar um instantâneo de um disco regional a partir de um ponto de verificação de recuperação de réplica:
-
no projetocompute.snapshots.create
-
no discocompute.disks.createSnapshot
-
- Para criar um agendamento de snapshot:
no projeto ou organizaçãocompute.resourcePolicies.create
- Para anexar uma programação de snapshot a um disco:
-
no discocompute.disks.addResourcePolicies
-
na política de recursoscompute.resourcePolicies.use
-
- Para excluir um instantâneo:
-
no instantâneocompute.snapshots.delete
-
no projetocompute.snapshots.list
-
- A consistência do aplicativo é garantida apenas pelo comportamento de seus scripts personalizados pré e pós-instantâneo, e não pela operação de instantâneo em si.
- 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 limite de tempo limite. - Pause aplicativos ou processos do sistema operacional em execução na VM que grava dados no disco.
- Limpe os buffers do disco. Por exemplo, o MySQL possui uma instrução
FLUSH
. Use qualquer ferramenta disponível para sua aplicação. - Sincronize seu sistema de arquivos.
- Discos anexados a SCSI : uma lista separada por vírgulas de pares
<target/lun>
. - Discos anexados a NVME : uma lista separada por vírgulas de pares
<nvme:namespace>
. Abra ou crie seu arquivo de configuração do ambiente convidado.
edit /etc/default/instance_configs.cfg
Adicione a seção a seguir ao arquivo de configuração, salve suas alterações e saia do editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Substitua o seguinte:
-
ENABLED
: Defina comotrue
para ativar o recurso de instantâneo consistente do aplicativo. O valor padrão éfalse
. TIMEOUT_SECONDS
: o número de segundos que o script pré ou pós-instantâneo pode levar para terminar a execução antes do tempo limite. O valor inteiro deve estar entre 0 e 300. O valor padrão é60
.
-
Reinicie o Guest Agent para usar as novas definições de configuração.
$ sudo systemctl restart google-guest-agent.service
Acesse a página Criar um instantâneo no console do Google Cloud.
Vá para a página Criar um instantâneo- Insira um Nome para instantâneo.
Selecione um tipo de instantâneo . O padrão é um
STANDARD
PADRÃO, que é a melhor opção para backup de longo prazo e recuperação de desastres.Escolha Arquivar snapshot para uma retenção de dados mais econômica.
- Opcional: insira uma descrição da captura instantânea.
- Em Disco de origem , selecione o disco existente do qual você deseja criar um instantâneo.
Na seção Local , escolha o local de armazenamento do snapshot .
O local padrão predefinido ou personalizado definido nas configurações do snapshot é selecionado automaticamente. Opcionalmente, você pode substituir as configurações de snapshot e armazená-los em um local de armazenamento personalizado fazendo o seguinte:
Escolha o tipo de local de armazenamento que deseja para seu instantâneo.
- Escolha Multirregional para maior disponibilidade a um custo mais elevado.
- Escolha snapshots regionais para ter mais controle sobre a localização física dos seus dados a um custo menor.
- No campo Selecionar local , selecione a região ou multirregião específica que você deseja usar. Para usar a região ou multirregião mais próxima do disco de origem, selecione Com base na localização do disco .
- Marque a opção Habilitar snapshot consistente do aplicativo .
- Clique em Criar para criar o instantâneo.
Para criar um snapshot no local padrão predefinido ou personalizado configurado 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
Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua o sinalizador
--storage-location
para indicar onde armazenar seu 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
( Visualização ) Para criar um instantâneo com escopo regional em uma região permitida, inclua o sinalizador
--region
para indicar onde criar seu instantâneo.gcloud beta compute snapshots create SNAPSHOT_NAME \ --region=SNAPSHOT_SCOPE_REGION --source-disk=SOURCE_DISK_NAME \ --source-disk-zone=SOURCE_ZONE \ --snapshot-type=SNAPSHOT_TYPE
- SNAPSHOT_NAME : um nome para o instantâneo.
- SOURCE_ZONE : a zona do disco de origem.
- SOURCE_DISK_NAME : o nome do volume de disco a partir do qual você deseja criar um instantâneo.
- SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo
STANDARD
será criado. STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.
Use o parâmetro
--storage-location
somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações do snapshot.SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro
--storage-location
. O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do 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, }
Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação
POST
para o métodosnapshots.insert
e inclua a propriedadestorageLocations
em sua solicitação: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, }
( Visualização ) Para criar um snapshot com escopo regional em uma região permitida, faça uma solicitação
POST
para o métodosnapshots.insert
e defina a região de criação:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE" }
- DESTINATION_PROJECT_ID : o ID do projeto no qual você deseja criar o instantâneo.
- SNAPSHOT_NAME : um nome para o instantâneo.
- SOURCE_PROJECT_ID : o ID do projeto do disco de origem.
- SOURCE_ZONE : a zona do disco de origem.
- SOURCE_DISK_NAME : o nome do disco a partir do qual você deseja criar um instantâneo.
- SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo
STANDARD
será criado. STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.
Use o parâmetro
storageLocations
somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações de snapshot.SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro
storageLocations
. O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .Acesse a página do Logs Explorer no console do Google Cloud:
Cole a seguinte consulta no painel Consulta de log :
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Execute a consulta e investigue os logs:
Se nenhum script pré ou pós-instantâneo for encontrado na instância para congelar a atividade/IOPS no sistema de arquivos, nenhum instantâneo será criado. Certifique-se de ter seguido as etapas em Criar scripts de pré e pós-instantâneo .
Se houver um erro de script ou tempo limite, nenhum instantâneo será criado. Revise Preparando capturas instantâneas consistentes . Observe que o período máximo de tempo limite que você pode definir nas configurações é de 300 segundos. Tente repetir todo o processo usando os scripts de exemplo .
Um disco deve ser anexado a uma VM para capturar um instantâneo do disco com
guest-flush
habilitada. Para saber como criar uma VM Linux e anexar um disco, consulte Criando 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.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções e permissões necessárias
Para obter as permissões necessárias para gerenciar snapshots padrão, peça ao administrador que conceda a você as seguintes funções do IAM no projeto:
Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .
Essas funções predefinidas contêm as permissões necessárias para gerenciar instantâneos padrão. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :
Permissões necessárias
As seguintes permissões são necessárias para gerenciar snapshots padrão:
Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .
Limitações
A criação de snapshots consistentes de aplicativos no Linux tem as seguintes limitações:
Crie scripts pré e pós-instantâneo
Antes de continuar, atualize o ambiente convidado para que você execute o software mais recente em sua VM Linux.
Para facilitar a consistência do aplicativo, crie scripts de shell pré e pós-instantâneo para serem executados antes e depois da captura do instantâneo. Use os scripts pré e pós para operações como:
O exemplo de código a seguir mostra um script de pré-instantâneo. Observe o
#!
personagens.#!/bin/bash sudo fsfreeze -f [example-disk-location]
O exemplo de código a seguir mostra um script de pós-instantâneo. Observe o
#!
personagens.#!/bin/bash sudo fsfreeze -u [example-disk-location]
Você deve salvar seus scripts em sua VM no diretório
/etc/google/snapshots/
. O caminho completo do seu pré-script deve ser/etc/google/snapshots/pre.sh
e o caminho completo do seu post script deve ser/etc/google/snapshots/post.sh
.Referenciando discos específicos em seus scripts
O primeiro argumento passado para seus scripts pré e pós-instantâneo é uma lista de discos para os quais você está criando instantâneos. Você pode usar esse argumento em seus scripts para diversas verificações. Por exemplo, se sua VM tiver vários discos anexados, mas você especificou apenas um disco na solicitação de instantâneo, poderá verificar para qual disco o instantâneo está sendo criado.
O argumento é formatado da seguinte forma:
Por exemplo, o disco de inicialização conectado ao SCSI pode aparecer como
1/0
, enquanto um disco adicional conectado à VM pode aparecer como2/0
.Edite o arquivo de configuração do seu ambiente convidado
Defina as configurações de snapshot consistentes do seu aplicativo atualizando um arquivo de configuração específico em sua VM.
Crie um instantâneo com
guest-flush
habilitadaUsando o console do Google Cloud, a Google Cloud CLI ou REST, crie um snapshot com a opção
guest-flush
ativada. Isso inicia a execução dos scripts pré e pós-instantâneo antes e depois da captura do instantâneo.Console
gcloud
Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .
Substitua o seguinte:
DESCANSAR
Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .
Substitua o seguinte:
Crie uma programação de snapshot com
guest-flush
habilitadaUse snapshots programados para fazer backup regular e automático do disco permanente zonal e regional e do hiperdisco do Google Cloud. Se desejar agendar snapshots consistentes do aplicativo para seu backup, use a opção
--guest-flush
ao criar o agendamento de snapshot para que os scripts pré e pós-instantâneo sejam executados antes e depois de cada snapshot agendado.Por exemplo, depois de configurar o arquivo de configuração do ambiente 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 \ --max-retention-days SNAPSHOT_RETENTION_AGE
Para saber mais, consulte Sobre agendamentos de snapshots para discos .
Solução de problemas
Solucione problemas de agendamento de snapshot e processo de criação revisando os logs e verificando as configurações.
Revise os registros
Verifique as configurações
O que vem 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 2025-04-17 UTC.
-