Como trabalhar com snapshots de disco permanente

Crie snapshots para fazer backup periódico de dados dos discos permanentes zonais ou regionais.

É possível criar snapshots com base em discos, mesmo quando estão anexados a instâncias em execução. Snapshots são recursos globais, portanto você pode usá-los para restaurar dados em um novo disco ou instância no mesmo projeto. Também é possível compartilhar snapshots entre projetos.

Antes de começar

Como criar snapshots

Para se preparar para a criação de snapshots de discos permanentes, faça o seguinte:

Como criar um snapshot de um disco permanente zonal

Console

  1. Acesse a página Criar um snapshot no Console do Google Cloud.
    Acesse a página "Criar um snapshot"
  2. Digite um Nome de snapshot.
  3. Como opção, digite uma Descrição para o snapshot.
  4. Selecione o Disco de origem no menu suspenso.
  5. Determine o local de armazenamento de snapshots. Use o local de armazenamento padrão ou um local de armazenamento personalizado.

    1. Em Local, selecione se quer armazenar seu instantâneo em um local Multirregional ou em um local Regional.
    2. Selecione qual região ou multirregião específica você quer usar. Para usar a região ou a multirregião mais próxima de seu disco de origem, selecione Com base no local do disco (padrão).
  6. Clique em Criar para criar o snapshot.

gcloud

Crie o snapshot no local de armazenamento padrão ou selecionado. É necessário especificar um nome de snapshot. O nome precisa ter de 1 a 63 caracteres e estar de acordo com o RFC 1035.

  • Para criar um snapshot de um disco permanente zonal no local de armazenamento padrão, use o comando gcloud compute snapshots create:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk SOURCE_DISK \
        --source-disk-zone SOURCE_DISK_ZONE
    

    Substitua:

    • SNAPSHOT_NAME: um nome para o snapshot.
    • SOURCE_DISK: o nome do disco permanente do qual você quer criar um snapshot.
    • SOURCE_DISK_ZONE: a zona do disco permanente da qual você quer criar um snapshot.
  • Se preferir, para criar um snapshot em um local de armazenamento personalizado, use a sinalização --storage-location para indicar o local a armazenar o snapshot:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk SOURCE_DISK \
        --source-disk-zone SOURCE_DISK_ZONE \
        --storage-location STORAGE_LOCATION
    

    Substitua:

    • SNAPSHOT_NAME: um nome para o snapshot.
    • SOURCE_DISK: o nome do disco permanente do qual você quer criar um snapshot.
    • SOURCE_DISK_ZONE: a zona do disco permanente da qual você quer criar um snapshot.
    • STORAGE_LOCATION: a multirregião do Cloud Storage ou a região do Cloud Storage em que você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.

A ferramenta gcloud aguarda até que um status READY ou FAILED seja retornado ou retorna os últimos detalhes conhecidos do snapshot após o tempo limite máximo ter se esgotado.

API

Crie o snapshot no local de armazenamento padrão ou selecionado.

  • Para criar um snapshot no local de armazenamento padrão, crie uma solicitação POST para o método snapshots.insert:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    
    {
      "name": SNAPSHOT_NAME
      "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME
    }
    

    Substitua:

    • 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 disco permanente do qual você quer criar um snapshot.
  • Se preferir, crie um snapshot em um local de armazenamento personalizado fazendo uma solicitação POST para o método snapshots.insert e especifique o local de armazenamento:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    
    {
      "name": SNAPSHOT_NAME
      "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME
      "storageLocations": STORAGE_LOCATION
    }
    

    Substitua:

    • 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 disco permanente do qual você quer criar um snapshot.
    • STORAGE_LOCATION: a multirregião do Cloud Storage ou a região do Cloud Storage em que você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.

Como criar um snapshot de um disco permanente regional

Depois de preparar o disco, você pode criar um instantâneo. Ao criar um instantâneo de um disco permanente regional, você precisa indicar a região onde o disco está localizado.

Console

  1. Acesse a página Criar um snapshot no Console do Google Cloud.
    Acesse a página "Criar um snapshot"
  2. Digite um Nome de snapshot.
  3. Como opção, digite uma Descrição para o snapshot.
  4. Em Disco de origem, selecione um disco atual a partir do qual você quer criar um snapshot.
  5. Como opção, é possível especificar um local de armazenamento personalizado:

    1. Em Local, selecione se quer armazenar seu snapshot em um local Multirregional ou Regional.
    2. Selecione qual região ou multirregião específica você quer usar. Para usar a região ou a multirregião mais próxima de seu disco de origem, selecione Com base no local do disco.
  6. Clique em Criar para criar o snapshot.

gcloud

Crie o snapshot no local de armazenamento padrão ou selecionado.

  • Para criar um snapshot de um disco permanente regional no local de armazenamento padrão, use o comando gcloud compute snapshots create:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk SOURCE_DISK \
        --source-disk-region=SOURCE_DISK_REGION
    

    Substitua:

    • SNAPSHOT_NAME: um nome para o snapshot.
    • SOURCE_DISK: o nome do disco permanente do qual você quer criar um snapshot.
    • SOURCE_DISK_REGION: a região do disco permanente regional do qual você quer criar um snapshot
  • Como opção, é possível especificar um local de armazenamento personalizado:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk SOURCE_DISK \
        --source-disk-region=SOURCE_DISK_REGION
        --storage-location STORAGE_LOCATION
    

    Substitua:

    • SNAPSHOT_NAME: um nome para o snapshot.
    • SOURCE_DISK: o nome do disco permanente do qual você quer criar um snapshot.
    • SOURCE_DISK_REGION: o nome do disco permanente regional do qual você quer criar um snapshot
    • STORAGE_LOCATION: a multirregião do Cloud Storage ou a região do Cloud Storage em que você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.

    A ferramenta de linha de comando gcloud aguarda até que um status READY ou FAILED seja retornado ou retorna os últimos detalhes conhecidos do snapshot após o tempo limite máximo ter se esgotado.

API

  • Para criar um snapshot no local de armazenamento padrão, crie uma solicitação POST para o método snapshots.insert:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": SNAPSHOT_NAME
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
    }
    

    Substitua:

    • 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_REGION: a região do disco de origem.
    • SOURCE_DISK_NAME: o nome do disco permanente do qual você quer criar um snapshot.
  • Se preferir, crie um snapshot em um local de armazenamento personalizado fazendo uma solicitação POST para o método snapshots.insert e especifique o local de armazenamento:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": SNAPSHOT_NAME
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
      "storageLocations": STORAGE_LOCATION
    }
    

    Substitua:

    • 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_REGION: a região do disco de origem.
    • SOURCE_DISK_NAME: o nome do disco permanente do qual você quer criar um snapshot.
    • STORAGE_LOCATION: a multirregião do Cloud Storage ou a região do Cloud Storage em que você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.

Como compartilhar dados de disco entre projetos

Para mover dados de um disco em um projeto para um disco em um projeto diferente, use o seguinte processo:

gcloud

  1. Crie um snapshot no projeto de destino do disco no projeto de origem usando o comando gcloud compute snapshots create:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \
        --project DESTINATION_PROJECT_ID
    

    Substitua:

    • SNAPSHOT_NAME: um nome para o snapshot.
    • SOURCE_PROJECT_ID: o ID do projeto de disco de origem.
    • ZONE: a zona do disco de origem.
    • SOURCE_DISK_NAME: o nome do disco de origem.
    • DESTINATION_PROJECT_ID: o ID do projeto de destino do novo snapshot.
  2. No projeto de destino, crie um novo disco com base no snapshot usando o comando gcloud compute disks create:

    gcloud compute disks create DISK_NAME \
        --source-snapshot SNAPSHOT_NAME \
        --project DESTINATION_PROJECT_ID
    

    Substitua:

    • DISK_NAME: um nome para o novo disco.
    • SNAPSHOT_NAME: o nome do snapshot.
    • DESTINATION_PROJECT_ID: o ID do projeto de destino do novo disco.

API

  1. Crie um snapshot no projeto de destino do disco no projeto de origem fazendo uma solicitação POST ao método snapshots.insert:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    
    {
      "name": SNAPSHOT_NAME
      "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME
    }
    

    Substitua:

    • DESTINATION_PROJECT_ID: o ID do projeto de destino do novo 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 disco de origem.
  2. No projeto de destino, crie um novo disco com base no snapshot usando o método disks.insert:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/zones/DESTINATION_ZONE/disks
    
    {
      "name": DISK_NAME
      "sourceSnapshot": SNAPSHOT_NAME
    }
    

    Substitua:

    • DESTINATION_PROJECT_ID: o ID do projeto de destino do novo disco.
    • DISK_NAME: um nome para o novo disco.
    • SNAPSHOT_NAME: o nome do snapshot.

Para ver uma lista dos snapshots disponíveis, consulte Como listar snapshots.

Como restaurar snapshots

Para restaurar o conteúdo de um snapshot em um novo disco, você tem as seguintes opções:

  • Criar um novo disco permanente a partir de um snapshot: crie um novo disco e selecione-o como Origem.

  • Criar uma nova instância a partir de um snapshot: ao criar uma nova instância, use snapshots para criar discos de inicialização e discos de dados para a instância. No caso de interrupção, é possível recuperar seus dados rapidamente. Basta restaurar um ou mais snapshots para os novos discos permanentes em uma nova instância. Para mais informações, consulte Como criar uma instância a partir de snapshots.

Como criar um novo disco permanente a partir de um snapshot

O novo disco permanente precisa ter pelo menos o mesmo tamanho do disco de origem para aceitar o snapshot. Se você criar um disco permanente maior que o disco de origem do snapshot, será preciso redimensionar o sistema de arquivos nesse disco permanente para incluir o espaço em disco adicional.

É possível criar um novo disco permanente zonal a partir de um determinado snapshot uma vez a cada 10 minutos, no máximo. Se você quiser emitir uma sequência de solicitações para capturar snapshots dos discos, é possível enviar 6 solicitações, no máximo, em 60 minutos. Esse limite não se aplica ao criar discos permanentes regionais a partir de um snapshot. Para mais informações, consulte Limites de frequência de snapshots.

Dependendo do sistema operacional e do tipo de sistema de arquivos, talvez seja preciso usar uma ferramenta de redimensionamento de sistema de arquivos diferente. Para mais informações, consulte a documentação do sistema operacional.

Console

  1. No Console do Google Cloud, acesse a página Snapshots.

    Acessar Snapshots

  2. Encontre o nome do snapshot que você quer restaurar.

  3. Acessar a página Discos.

    Acessar a página "Discos"

  4. Clique em Criar novo disco.

  5. Especifique os seguintes parâmetros de configuração:

    • Um nome para o disco.
    • Um tipo para o disco.
    • Opcionalmente, é possível modificar a seleção de região e zona padrão. É possível selecionar qualquer região e zona, independentemente do local de armazenamento do snapshot de origem.
  6. Em Tipo de origem, clique em Snapshot.

  7. Selecione o nome do snapshot que será restaurado.

  8. Selecione o tamanho do novo disco em gigabytes. Esse número precisa ser igual ou maior que o disco de origem do snapshot.

  9. Clique em Criar para criar o disco.

gcloud

  1. Use o comando gcloud compute snapshots list para encontrar o nome do snapshot que você quer restaurar:

    gcloud compute snapshots list
    
  2. Use o comando gcloud compute snapshots describe para encontrar o tamanho do snapshot que você quer restaurar:

    gcloud compute snapshots describe SNAPSHOT_NAME
    

    Substitua SNAPSHOT_NAME pelo nome do snapshot que está sendo restaurado.

  3. Use o comando gcloud compute disks create para criar um novo disco permanente regional ou zonas do snapshot. Se você precisar de um disco permanente SSD para aumentar a capacidade ou IOPS, inclua a sinalização --type e especifique pd-ssd.

    gcloud compute disks create DISK_NAME \
        --size=DISK_SIZE \
        --source-snapshot=SNAPSHOT_NAME \
        --type=DISK_TYPE
    

    Substitua:

    • DISK_NAME: o nome do novo disco.
    • DISK_SIZE: o tamanho do novo disco em gigabytes. Esse número precisa ser igual ou maior que o disco de origem do snapshot.
    • SNAPSHOT_NAME: o nome do snapshot que está sendo restaurado.
    • DISK_TYPE: URL completo ou parcial do tipo do disco permanente. Por exemplo, https://www.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE/diskTypes/pd-ssd.

API

  1. Crie uma solicitação GET para snapshots.list para exibir a lista de snapshots no projeto.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
    

    Substitua PROJECT_ID pela ID do seu projeto.

  2. Crie uma solicitação POST para criar um disco permanente zonal usando o método disks.insert. Inclua as propriedades name, sizeGb e type. Para restaurar um disco usando um snapshot, é preciso incluir a propriedade sourceSnapshot.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
     "name": "DISK_NAME",
     "sizeGb": "DISK_SIZE",
     "type": "zones/ZONE/diskTypes/DISK_TYPE"
     "sourceSnapshot": "SNAPSHOT_NAME"
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • ZONE a zona em que a instância e o novo disco estão localizados.
    • DISK_NAME: o nome do novo disco.
    • DISK_SIZE: o tamanho do novo disco em gigabytes. Esse número precisa ser igual ou maior que o disco de origem do snapshot.
    • DISK_TYPE: URL completo ou parcial do tipo do disco permanente. Exemplo:https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ ZONE/diskTypes/pd-ssd
    • SNAPSHOT_NAME: o snapshot de origem do disco que você está restaurando.

Como alternativa, anexe o novo disco a uma instância atual.

Console

  1. Acesse a página Instâncias da VM.

    Acessar a página "Instâncias de VM"

  2. Clique no nome da instância em que você quer restaurar o disco não inicializável.
  3. No início da página, clique em Editar.
  4. Em Discos extras, clique em Anexar disco atual.
  5. Selecione o nome do novo disco criado a partir do snapshot.
  6. Clique em Concluído para anexar o disco.
  7. Na parte inferior da página de detalhes da instância, clique em Salvar para aplicar as alterações à instância.

gcloud

  1. Use o comando gcloud compute instances attach-disk para anexar o disco permanente a uma instância:

    gcloud compute instances attach-disk INSTANCE_NAME \
        --disk DISK_NAME
    

    onde:

    • INSTANCE_NAME é o nome da instância;
    • DISK_NAME é o nome do disco criado a partir do snapshot.

API

  1. Crie uma solicitação POST para o método instances.attachDisk e inclua o URL para o disco permanente por zona que você acabou de criar a partir do snapshot.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
    
    {
     "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
    

    onde:

    • PROJECT_ID é o ID do projeto;
    • ZONE é a zona em que a instância e o novo disco estão localizados;
    • INSTANCE_NAME é o nome da instância em que você está adicionando o novo disco permanente;
    • DISK_NAME é o nome do novo disco.

Depois de criar e anexar um novo disco a uma instância, é necessário ativar o disco para que o sistema operacional possa usar o espaço de armazenamento disponível.

Excluir um snapshot

O Compute Engine usa snapshots incrementais para que cada snapshot contenha apenas os dados que mudaram desde o snapshot anterior. Como os snapshots subsequentes talvez precisem de informações armazenadas em um snapshot anterior, lembre-se de que excluir um snapshot não necessariamente exclui todos os dados dele. Para saber mais sobre a exclusão de snapshots, consulte Exclusão de snapshot.

Para excluir um snapshot:

Console

  1. Acesse a página Snapshots no Console do Google Cloud.

    Acessar a página "Snapshots"

  2. Selecione um ou mais snapshots que você quer excluir.
  3. Na parte superior da página Instantâneos, clique em Excluir.

gcloud

Para excluir um snapshot, use o comando gcloud compute snapshots delete:

gcloud compute snapshots delete SNAPSHOT_NAME

em que SNAPSHOT_NAME é o nome do snapshot que está sendo excluído.

API

Faça uma solicitação DELETE para o método compute.snapshots.delete para excluir snapshots.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME

onde:

  • PROJECT_ID é o nome do projeto;
  • SNAPSHOT_NAME é o nome do snapshot a ser excluído.

Como excluir vários snapshots com base em um filtro

O Compute Engine usa snapshots incrementais para que cada snapshot contenha apenas os dados que mudaram desde o snapshot anterior. Como os snapshots posteriores talvez exijam informações armazenadas em um snapshot anterior, a exclusão de um snapshot não necessariamente exclui todos os dados dele. Para saber mais sobre a exclusão de snapshots, consulte Exclusão de snapshot.

As seções a seguir descrevem como excluir vários snapshots com base em um determinado filtro. Para mais informações sobre filtros de ferramenta gcloud, consulte Filtros de tópico da ferramenta gcloud.

Para excluir os snapshots, use uma combinação do comando gcloud compute snapshots list com um determinado filtro e do comando gcloud compute snapshots delete com xargs:

gcloud compute snapshots list --filter="EXPRESSION" --uri |
   xargs gcloud compute snapshots delete

Substitua EXPRESSION por um filtro de tópico gcloud.

Por exemplo, --filter="creationTimestamp>'2021-01-01'" exclui todos os snapshots criados depois de 01-01-2021.

Como listar snapshots

gcloud

Para ver uma lista de snapshots disponíveis em um projeto específico, use o comando gcloud compute snapshots list.

gcloud compute snapshots list --project PROJECT_ID

em que PROJECT_ID é o ID do projeto.

API

Para ver uma lista de snapshots disponíveis para você em um projeto específico, faça uma solicitação GET para o método snapshots.list:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots

em que PROJECT_ID é o ID do projeto.

Como visualizar informações sobre um snapshot

Para listar informações sobre um snapshot específico, como o horário de criação, o tamanho e o disco de origem, use o comando gcloud compute snapshots describe:

gcloud compute snapshots describe SNAPSHOT_NAME

em que SNAPSHOT_NAME é o nome do snapshot.

A seguir