Criar programações para snapshots de disco


Você cria uma programação de snapshot para fazer backup regular e automático do Persistent Disk zonal e regional e do Google Cloud Hyperdisk. Use as programações de snapshot como uma prática recomendada para fazer backup das cargas de trabalho do Compute Engine.

Se você quiser criar uma programação de snapshot que capture o estado dos dados do aplicativo no momento do backup, também conhecida como consistentes para aplicativos, guest-flush ou snapshot do VSS, consulte Criar snapshots de disco consistentes do aplicativo do Linux ou Criar um snapshot de disco consistente do aplicativo do Windows.

Para mais informações sobre as propriedades da programação de snapshot, consulte Propriedades da programação de snapshot.

Antes de começar

  • Consulte as Limitações das programações de snapshots.
  • 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.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Papéis e permissões necessárias

Para receber as permissões necessárias para criar uma programação de snapshot, 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 criar uma programação de snapshot. Para conferir 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 criar uma programação de snapshot:

  • Para criar uma programação de snapshot: compute.resourcePolicies.create no projeto ou na organização
  • Para anexar uma programação de snapshot a um disco:
    • compute.disks.addResourcePolicies no disco
    • compute.resourcePolicies.use na política de recursos
  • Para criar um disco com uma programação de snapshot:
    • compute.disks.create no projeto
    • compute.resourcePolicies.create no projeto
    • compute.disks.addResourcePolicies no disco

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Visão geral da criação de programações de snapshots

Ao criar uma programação de snapshot, é possível criar uma política de recursos que pode ser aplicada a um ou mais volumes de Hyperdisk ou Persistent Disk.

É possível criar programações de snapshots das seguintes maneiras:

Como usar criptografia com programações de snapshots

Se um disco usar uma chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês), quando você usar uma programação de snapshot para criar snapshots desse disco, todos os snapshots criados serão automaticamente criptografados com a mesma chave.

Não é possível usar programações de snapshots com discos que utilizam uma chave de criptografia fornecida pelo cliente (CSEK).

Como criar uma programação de snapshot

É possível criar uma programação de snapshot para seus discos usando o console do Google Cloud, a CLI do Google Cloud ou o REST. Crie a programação de snapshot na mesma região do disco. Por exemplo, se o disco estiver na zona us-west1-a, será preciso criar a programação de snapshot na região us-west1. No entanto, é possível armazenar snapshots gerados pela programação de snapshot em um local diferente.

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM
    As etapas restantes serão exibidas automaticamente no console do Google Cloud.

  2. Selecione o projeto que contém suas instâncias de VM.
  3. Na coluna Nome, clique no nome da VM que tem o disco permanente para criar uma programação de snapshot para ele.
  4. Em Armazenamento, clique no nome do Disco de inicialização ou do Disco extra para criar uma programação de snapshot para ele.
  5. Clique em Editar. Talvez seja necessário clicar no menu Mais ações e em Editar.
  6. Em Programação de snapshot, escolha Criar uma programação.
  7. Em Nome, insira um dos seguintes nomes para a programação de snapshot:
    • boot-disk-snapshot-schedule
    • attached-persistent-disk-snapshot-schedule
  8. Na seção Local, escolha o local de armazenamento dos snapshots. O local padrão predefinido ou personalizado que está definido nas configurações de snapshot é selecionado automaticamente. Se preferir, substitua as configurações dos snapshots e os armazene em um local de armazenamento personalizado da seguinte forma:

    1. Escolha o tipo de local de armazenamento que você quer para os snapshots.

      • Escolha Multirregional para maior disponibilidade a um custo mais alto.
      • Escolha Snapshots regionais para maior controle sobre a localização física dos dados a um custo menor.
    2. 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.

  9. Para concluir a criação da programação de snapshot, clique em Criar.
  10. Para anexar essa programação de snapshot ao disco permanente, clique em Salvar.

gcloud

Para criar uma programação de snapshot para um disco, use o comando gcloud compute resource-policies create snapshot-schedule. Defina a frequência da programação por hora, dia ou semana.

gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
    --description "SCHEDULE_DESCRIPTION" \
    --max-retention-days MAX_RETENTION_DAYS \
    --start-time START_TIME \
    --hourly-schedule SNAPSHOT_INTERVAL \
    --daily-schedule \
    --weekly-schedule SNAPSHOT_INTERVAL \
    --weekly-schedule-from-file FILE_NAME \
    --on-source-disk-delete DELETION_OPTION

Substitua:

  • SCHEDULE_NAME: o nome da programação de snapshot.
  • SCHEDULE_DESCRIPTION: uma descrição da programação de snapshot. Coloque a descrição entre aspas;
  • MAX_RETENTION_DAYS: o número de dias para reter o snapshot.

    Por exemplo, um valor de 3 significa que os snapshots são retidos por três dias antes de serem excluídos. Use um valor igual ou superior a 1.

  • START_TIME: o horário de início no fuso horário UTC. O horário precisa ser uma hora redonda.

    Exemplo:

    • É preciso especificar 14h PST como 22:00.
    • Se você definir o horário de início como 22:13, receberá um erro.

    Se você usar a flag --weekly-schedule-from-file e especificar um horário de início no arquivo, não será necessário incluir essa flag.

  • SNAPSHOT_INTERVAL: o intervalo entre a criação de snapshots sucessivos. As flags de frequência do snapshot hourly-schedule, daily-schedule, weekly-schedule e weekly-schedule-from-file são mutuamente exclusivas. É possível usar apenas uma para a programação de snapshot.

    • Defina uma programação diária incluindo a flag --daily-schedule sem nenhum valor.
    • Defina uma programação por hora com a flag --hourly-schedule definida como um valor inteiro entre 1 e 23. Para gerar snapshots todos os dias no mesmo horário, escolha um número por hora dividido igualmente em 24. Por exemplo, definir --hourly-schedule como 12 significa que um snapshot é criado a cada 12 horas.
    • Defina uma programação semanal com a flag --weekly-schedule definida como o dia da semana em que você quer que o snapshot seja criado. Escreva o dia da semana por extenso. Os valores não diferenciam maiúsculas de minúsculas. Por exemplo, para fazer backup do disco todas as sextas-feiras, seu comando incluiria --weekly-schedule=friday.
    • Defina uma programação semanal avançada, especificando dias da semana e horários de início distintos, incluindo a flag --weekly-schedule-from-file. Substitua FILE_NAME pelo nome do arquivo que contém a programação de snapshot semanal. Embora você possa especificar diferentes dias da semana e horários de início usando um arquivo, não é possível especificar várias programações semanais diretamente na linha de comando. Por exemplo, seu arquivo pode especificar duas programações semanais, às segundas e quartas, mas não é possível duplicar essa configuração na linha de comando:

      [
        {"day": "MONDAY", "startTime": "04:00"},
        {"day": "WEDNESDAY", "startTime": "02:00"}
      ]
      

      Se você incluir um horário de início no arquivo, não será necessário definir a flag --start-time na linha de comando. A programação usa o fuso horário UTC.

  • DELETION_OPTION determina o que acontecerá com os snapshots se o disco de origem for excluído. Se você quiser manter todos os snapshots gerados, omita essa flag. Caso contrário, especifique apply-retention-policy para usar as configurações em uma política de retenção.

Exemplos

Veja o que há em comum em todos os exemplos abaixo:

  • A regra de exclusão de disco está incluída. A sinalização --on-source-disk-delete está definida como o padrão keep-auto-snapshots para manter permanentemente todos os snapshots gerados automaticamente. A alternativa é definir essa sinalização como apply-retention-policy para usar sua política de retenção de snapshots.
  • O local de armazenamento é definido manualmente como US. Assim, todos os snapshots gerados são armazenados na multirregião dos EUA.
  • Os rótulos env=dev e media=images estão aplicados a todos os snapshots gerados.
  • A política de retenção está definida como 10 dias.

Programação por hora: neste exemplo, a programação de snapshot começa às 22h UTC (14h PST) e ocorre a cada quatro horas.

  gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
      --description "MY HOURLY SNAPSHOT SCHEDULE" \
      --max-retention-days 10 \
      --start-time 22:00 \
      --hourly-schedule 4 \
      --region us-west1 \
      --on-source-disk-delete keep-auto-snapshots \
      --snapshot-labels env=dev,media=images \
      --storage-location US

Programação diária: neste exemplo, a programação de snapshot começa às 22h UTC (14h PST) e ocorre todos os dias no mesmo horário. A flag --daily-schedule precisa estar presente, mas sem um valor associado.

gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
    --description "MY DAILY SNAPSHOT SCHEDULE" \
    --max-retention-days 10 \
    --start-time 22:00 \
    --daily-schedule \
    --region us-west1 \
    --on-source-disk-delete keep-auto-snapshots \
    --snapshot-labels env=dev,media=images \
    --storage-location US

Programação por semana: neste exemplo, a programação de snapshot começa às 22h UTC (14h PST) e ocorre toda semana às terças e quintas-feiras.

gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
    --description "MY WEEKLY SNAPSHOT SCHEDULE" \
    --max-retention-days 10 \
    --start-time 22:00 \
    --weekly-schedule tuesday,thursday \
    --region us-west1 \
    --on-source-disk-delete keep-auto-snapshots \
    --snapshot-labels env=dev,media=images \
    --storage-location US

REST

Para criar uma programação de snapshot, crie uma solicitação POST para resourcePolicies.insert. Inclua o nome da programação e a frequência do snapshot.

Também é possível especificar manualmente um local de armazenamento de snapshots e adicionar rótulos de recursos à sua solicitação.

Por padrão, o parâmetro onSourceDiskDelete está definido como keepAutoSnapshots. Isso significa que, se o disco de origem for excluído, o respectivo snapshot gerado automaticamente será mantido por tempo indefinido. Como alternativa, defina a flag como applyRetentionPolicy para aplicar sua política de retenção.

No exemplo a seguir, definimos uma programação de snapshot diária que começa às 12h UTC (04:00 PST) e se repete todos os dias. No exemplo, uma política de retenção de cinco dias também está definida. Após esse período, os snapshots serão removidos automaticamente.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

    {
     "name": "SCHEDULE_NAME",
     "description": "SCHEDULE_DESCRIPTION",
     "snapshotSchedulePolicy": {
       "schedule": {
         "dailySchedule": {
           "startTime": "12:00",
           "daysInCycle": "1"
         }
       },
       "retentionPolicy": {
         "maxRetentionDays": "5"
       },
       "snapshotProperties": {
         "guestFlush": "False",
         "labels": {
           "env": "dev",
           "media": "images"
         },
         "storageLocations": "STORAGE_LOCATION"
       }
     }
    }

Substitua:

  • PROJECT_ID: o nome do projeto
  • REGION: o local da política de recursos de programação de snapshot
  • SCHEDULE_DESCRIPTION: a descrição da programação de snapshot
  • SCHEDULE_NAME: o nome da programação de snapshot
  • STORAGE_LOCATION: o local de armazenamento

É possível criar uma programação por semana ou por mês do mesmo modo. Consulte o método resourcePolicies.insert para conferir detalhes específicos sobre como definir uma programação semanal ou mensal.

Por exemplo, na solicitação a seguir, uma programação semanal é criada e executada às terças e quintas, às 9h e às 2h UTC, respectivamente.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

{
   "name": "SCHEDULE_NAME",
   "description": "SCHEDULE_DESCRIPTION",
   "snapshotSchedulePolicy": {
      "schedule": {
        "weeklySchedule": {
          "dayOfWeeks": [
          {
            "day": "Monday",
            "startTime": "9:00"
          },
          {
            "day": "Thursday",
            "startTime": "2:00"
          }
          ]
        }
      },
      "retentionPolicy": {
          "maxRetentionDays": "5"
      },
      "snapshotProperties": {
          "guestFlush": "False",
          "labels": {
               "production": "webserver"
          },
          "storageLocations": "US"
      }
  }
}

Anexar uma programação de snapshot a um disco

Depois de criar uma programação, anexe-a a um disco. Use o console, a gcloud CLI ou a API Compute Engine.

Console

Anexe uma programação de snapshot a um disco atual.

  1. No console do Google Cloud, acesse a página Discos.

    Acessar "Discos"

  2. Selecione o nome do disco ao qual você quer anexar uma programação de snapshot. Isso abre a página Gerenciar disco.

  3. Na página Gerenciar disco, clique em Editar. Talvez seja necessário clicar no menu Mais ações primeiro.

  4. Use o menu suspenso Programação de instantâneo para adicionar a programação ao disco. Se preferir, crie uma nova programação.

  5. Se você criou uma nova programação, clique em Criar.

  6. Clique em Salvar para concluir a tarefa.

gcloud

Para anexar uma programação de snapshot a um disco, use o comando gcloud disks add-resource-policies.

gcloud compute disks add-resource-policies DISK_NAME \
    --resource-policies SCHEDULE_NAME \
    --zone ZONE

Substitua:

  • DISK_NAME: o nome do disco atual
  • SCHEDULE_NAME: o nome da programação de snapshot
  • ZONE: o local do disco

REST

Crie uma solicitação POST para disks.addResourcePolicies para anexar uma programação de snapshot a um disco.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/addResourcePolicies

{
  "resourcePolicies": [
    "regions/REGION/resourcePolicies/SCHEDULE_NAME"
  ]
}

Substitua:

  • PROJECT_ID: o nome do projeto
  • ZONE: a zona em que o disco está localizado.
  • REGION: a região em que a programação de snapshot foi criada.
  • DISK_NAME: o nome do disco.
  • SCHEDULE_NAME: o nome da programação de snapshot que você está aplicando a esse disco.

Criar um disco com uma programação de snapshot

É possível usar o console do Google Cloud ou a gcloud CLI para criar um disco e uma programação de snapshot ao mesmo tempo.

Console

  1. No console do Google Cloud, acesse a página Discos.

    Acessar "Discos"

  2. Clique em Criar disco.

  3. Preencha os campos obrigatórios para criar um disco zonal ou regional.

  4. Crie o disco na mesma região da programação de snapshot.

  5. Preencha os campos em Programação de snapshot.

  6. Use o menu suspenso e preencha os campos para criar a programação.

  7. Clique em Criar para criar a programação.

  8. Clique em Criar para criar o disco.

gcloud

Use o comando gcloud disks create para criar um Persistent Disk ou Hyperdisk zonal ou regional e anexar uma programação de snapshot a ele.

gcloud compute disks create DISK_NAME \
     --resource-policies SCHEDULE_NAME \
     --zone ZONE

Substitua:

  • DISK_NAME: o nome do novo disco
  • SCHEDULE_NAME: o nome da programação de snapshot
  • ZONE: o local em que você está criando o disco. O disco precisa estar em uma zona que esteja na mesma região que a programação de snapshot.

A seguir