Crie instantâneos de discos consistentes de aplicações Linux

Pode criar instantâneos consistentes com a aplicação de discos anexados a instâncias de máquinas virtuais (VM) Linux. Em geral, a qualidade da imagem instantânea do disco depende da capacidade das suas aplicações de recuperar de imagens instantâneas que cria durante cargas de trabalho de escrita intensivas. As cópias instantâneas consistentes com a aplicação capturam o estado dos dados da aplicação no momento da cópia de segurança com todas as transações da aplicação concluídas e todas as escritas pendentes descarregadas para o disco.

Para criar instantâneos consistentes com a aplicação, pause as apps ou os processos do sistema operativo que escrevem dados no disco, limpe as memórias intermédias do disco e sincronize o sistema de ficheiros antes de criar o instantâneo. Consoante a sua aplicação, estes e outros passos podem ser necessários para garantir que todas as transações da aplicação são concluídas e captadas na cópia de segurança.

Para criar uma imagem instantânea consistente da aplicação dos seus discos, use o seguinte processo:

  1. Para preparar o ambiente convidado para a consistência da aplicação, crie scripts de shell personalizados para executar antes e depois da captura do instantâneo
  2. Configure as definições de instantâneo na instância da máquina virtual (VM).
  3. Crie um instantâneo com a opção guest-flush ativada. A opção guest-flush inicia os scripts de pré e pós-instantâneo.

Antes de começar

  • Crie uma VM do Linux.
  • Atualize o ambiente convidado.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

    Para mais informações, consulte o artigo Autenticar para usar REST na Trusted Cloud documentação de autenticação.

Funções e autorizações necessárias

Para receber as autorizações de que precisa para gerir as cópias de segurança instantâneas padrão, peça ao seu administrador que lhe conceda as seguintes funções de IAM no projeto:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para gerir as capturas de ecrã padrão. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para gerir as capturas de ecrã padrão:

  • Para criar um instantâneo de um disco zonal:
    • compute.snapshots.create no projeto
    • compute.disks.createSnapshot no disco
  • Para criar um instantâneo de um disco regional com os dados no disco:
    • compute.snapshots.create no projeto
    • compute.instances.useReadOnly na VM de origem
    • compute.disks.createSnapshot no disco
  • Para criar um instantâneo de um disco regional a partir de um ponto de verificação de recuperação de réplica:
    • compute.snapshots.create no projeto
    • compute.disks.createSnapshot no disco
  • Para criar uma programação de instantâneos: compute.resourcePolicies.create no projeto ou na organização
  • Para anexar um horário de instantâneos a um disco:
    • compute.disks.addResourcePolicies no disco
    • compute.resourcePolicies.use na política de recursos
  • Para eliminar um instantâneo:
    • compute.snapshots.delete no instantâneo
    • compute.snapshots.list no projeto

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Limitações

A criação de instantâneos consistentes com a aplicação no Linux tem as seguintes limitações:

  • A consistência da aplicação só é garantida pelo comportamento dos seus scripts personalizados pré e pós-instantâneo, e não pela própria operação de instantâneo.
  • Quando usa a opção guest-flush no seu pedido de criação de instantâneo, o instantâneo não é criado se o script devolver um erro ou atingir o limite de tempo limite.

Crie scripts de pré e pós-instantâneo

Antes de continuar, atualize o ambiente convidado para que esteja a executar o software mais recente na sua VM do Linux.

Para facilitar a consistência da aplicação, crie scripts de shell pré e pós-resumo para executar antes e depois da captura do resumo. Use os scripts pré e pós para operações como:

  • Pause as apps ou os processos do sistema operativo em execução na VM que escrevem dados no disco.
  • Limpe as buffers de disco. Por exemplo, o MySQL tem uma declaração FLUSH. Use a ferramenta disponível para a sua aplicação.
  • Sincronize o seu sistema de ficheiros.

O exemplo de código seguinte mostra um script de pré-captura. Tenha em atenção os #! carateres iniciais.

#!/bin/bash
sudo fsfreeze -f [example-disk-location]

O exemplo de código seguinte mostra um script de instantâneo de publicação. Tenha em atenção os #! carateres iniciais.

#!/bin/bash
sudo fsfreeze -u [example-disk-location]

Tem de guardar os seus scripts na VM no diretório /etc/google/snapshots/. O caminho completo do script prévio tem de ser /etc/google/snapshots/pre.sh e o caminho completo do script posterior tem de ser /etc/google/snapshots/post.sh.

Fazer referência a discos específicos nos seus scripts

O primeiro argumento transmitido aos seus scripts pré e pós-instantâneo é uma lista de discos para os quais está a criar instantâneos. Pode usar este argumento nos seus scripts para várias verificações. Por exemplo, se a sua VM tiver vários discos anexados, mas só tiver especificado um disco no pedido de instantâneo, pode verificar para que disco está a ser criado o instantâneo.

O argumento está formatado da seguinte forma:

  • Discos ligados por SCSI: uma lista separada por vírgulas de pares <target/lun>.
  • Discos ligados a NVME: uma lista separada por vírgulas de pares <nvme:namespace>.

Por exemplo, o disco de arranque ligado por SCSI pode aparecer como 1/0, enquanto um disco adicional ligado à VM pode aparecer como 2/0.

Edite o ficheiro de configuração do ambiente de convidado

Configure as definições de instantâneos consistentes com a aplicação atualizando um ficheiro de configuração específico na sua VM.

  1. Abra ou crie o ficheiro de configuração do ambiente convidado.

    edit /etc/default/instance_configs.cfg
    
  2. Adicione a secção seguinte ao ficheiro de configuração e, de seguida, guarde as alterações e saia do editor.

    [Snapshots]
    enabled = ENABLED
    timeout_in_seconds = TIMEOUT_SECONDS
    

    Substitua o seguinte:

    • ENABLED: definido como true para ativar a funcionalidade de instantâneo consistente da aplicação. O valor predefinido é false.
    • TIMEOUT_SECONDS: o número de segundos que o script de pré-instantâneo ou pós-instantâneo pode demorar a terminar a execução antes de atingir o limite de tempo. O valor inteiro tem de estar entre 0 e 300. O valor predefinido é 60.

  3. Reinicie o agente convidado para usar as novas definições de configuração.

    $ sudo systemctl restart google-guest-agent.service
    

Crie um instantâneo com a opção guest-flush ativada

Use a Trusted Cloud consola, a Google Cloud CLI ou o REST para criar uma cópia instantânea com a opção guest-flush ativada. Isto inicia a execução dos scripts de pré e pós-resumo antes e depois da captura do resumo.

Consola

  1. Aceda à página Criar uma captura instantânea na Trusted Cloud consola.

    Aceda à página Crie um instantâneo
  2. Introduza um Nome para o instantâneo.
  3. Selecione um Tipo de instantâneo. A predefinição é uma cópia instantânea STANDARD, que é a melhor opção para cópias de segurança a longo prazo e recuperação de desastres.

    Escolha Arquivo de instantâneo para uma retenção de dados mais rentável.

  4. Opcional: introduza uma descrição do instantâneo.
  5. Em Disco de origem, selecione o disco existente do qual quer criar uma captura instantânea.
  6. Na secção Localização, escolha a localização de armazenamento das suas fotos instantâneas.

    A localização predefinida ou personalizada definida nas definições de instantâneo é selecionada automaticamente. Opcionalmente, pode substituir as definições de instantâneo e armazenar os instantâneos numa localização de armazenamento personalizada da seguinte forma:

    1. Escolha o tipo de localização de armazenamento que quer para a sua captura instantânea.

    2. No campo Selecionar localização, selecione a região específica ou multirregião que quer usar. Para usar a região ou a multirregião mais próxima do disco de origem, selecione Com base na localização do disco.
  7. Selecione a opção Ativar instantâneo consistente da aplicação.
  8. Clique em Criar para criar a captura de ecrã.

gcloud

Pode criar o instantâneo na política de localização de armazenamento definida pelas suas definições de instantâneo ou usando uma localização de armazenamento alternativa à sua escolha. Para mais informações, consulte o artigo Escolha a localização de armazenamento das capturas de ecrã.

  • Para criar uma captura de ecrã na localização predefinida ou personalizada configurada nas definições de captura de ecrã, 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
    
  • Em alternativa, para substituir as definições de imagens instantâneas e criar uma imagem instantânea numa localização de armazenamento personalizada, inclua a flag --storage-location para indicar onde armazenar a imagem instantânea.

    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
    
  • (Pré-visualização) Para criar um instantâneo com âmbito regional numa região permitida, inclua a flag --region para indicar onde criar o 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
    

Substitua o seguinte:

  • SNAPSHOT_NAME: um nome para o resumo.
  • SOURCE_ZONE: a zona do disco de origem.
  • SOURCE_DISK_NAME: o nome do volume do disco a partir do qual quer criar uma captura instantânea.
  • SNAPSHOT_TYPE: o tipo de instantâneo, STANDARD ou ARCHIVE. Se não for especificado um tipo de instantâneo, é criado um instantâneo STANDARD.
  • STORAGE_LOCATION: Opcional: para instantâneos com âmbito global, a multirregião do Cloud Storage ou a região do Cloud Storage onde quer armazenar o instantâneo. Só pode especificar uma localização de armazenamento.

    Use o parâmetro --storage-location apenas quando quiser substituir a localização de armazenamento predefinida ou personalizada configurada nas definições de instantâneo.

  • SNAPSHOT_SCOPE_REGION: opcional: para resumos com âmbito regional, a região à qual o resumo se destina. Se incluir este parâmetro, não pode usar o parâmetro --storage-location. O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION.

REST

Pode criar o instantâneo na política de localização de armazenamento definida pelas suas definições de instantâneo ou usando uma localização de armazenamento alternativa à sua escolha. Para mais informações, consulte o artigo Escolha a localização de armazenamento das capturas de ecrã.

  • Para criar um instantâneo na localização predefinida ou personalizada configurada nas definições de instantâneos, faça um pedido POST ao método snapshots.insert:

    POST https://compute.s3nsapis.fr/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,
    }
    
  • Em alternativa, para substituir as definições de instantâneo e criar um instantâneo numa localização de armazenamento personalizada, faça um pedido ao método POST e inclua a propriedade snapshots.insert no seu pedido:storageLocations

    POST https://compute.s3nsapis.fr/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,
    }
    
  • (Pré-visualização) Para criar uma imagem instantânea com âmbito regional numa região permitida, faça um pedido POST ao método snapshots.insert e defina a região de criação:

    POST https://compute.s3nsapis.fr/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"
    }
    

Substitua o seguinte:

  • DESTINATION_PROJECT_ID: o ID do projeto no qual quer criar a captura de ecrã.
  • SNAPSHOT_NAME: um nome para o resumo.
  • 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 quer criar uma captura instantânea.
  • SNAPSHOT_TYPE: o tipo de instantâneo, STANDARD ou ARCHIVE. Se não for especificado um tipo de instantâneo, é criado um instantâneo STANDARD.
  • STORAGE_LOCATION: Opcional: para instantâneos com âmbito global, a multirregião do Cloud Storage ou a região do Cloud Storage onde quer armazenar o instantâneo. Só pode especificar uma localização de armazenamento.

    Use o parâmetro storageLocations apenas quando quiser substituir a localização de armazenamento predefinida ou personalizada configurada nas definições de instantâneo.

  • SNAPSHOT_SCOPE_REGION: Opcional: para resumos com âmbito regional, a região à qual o resumo se destina. Se incluir este parâmetro, não pode usar o parâmetro storageLocations. O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION.

Crie um agendamento de instantâneos com a opção guest-flush ativada

Use instantâneos agendados para fazer regularmente e de forma automática uma cópia de segurança do seu disco persistente zonal e regional e do Google Cloud Hyperdisk. Se quiser programar instantâneos consistentes com a aplicação para a sua cópia de segurança, use a opção --guest-flush quando criar a programação de instantâneos para que os scripts pré e pós-instantâneo sejam executados antes e depois de cada instantâneo programado.

Por exemplo, depois de configurar o ficheiro de configuração do ambiente de convidado e criar scripts personalizados, o seguinte comando cria instantâneos consistentes da aplicação de hora a 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 o artigo Acerca das programações de instantâneos para discos.

Resolução de problemas

Resolva problemas com o horário e o processo de criação de instantâneos revendo os registos e verificando as configurações.

Reveja os registos

  1. Aceda à página Explorador de registos na Trusted Cloud consola:

    Aceda ao Explorador de registos

  2. Cole a seguinte consulta no painel de consulta do registo:

    resource.type="gce_disk"
    jsonPayload.event_subtype="compute.disks.createSnapshot" OR
    protoPayload.methodName="ScheduledSnapshots"
    
  3. Execute a consulta e investigue os registos:

    consulta do registo de criação de instantâneos.

Verifique as configurações

O que se segue?