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. Se preferir, especifique um nome de snapshot com a sinalização --snapshot-names. O nome do snapshot padrão é uma string alfanumérica aleatória de 12 caracteres que começa com uma letra.

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

    gcloud compute disks snapshot DISK_NAME

    Substitua DISK_NAME pelo nome do disco permanente zonal do 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 disks snapshot DISK_NAME \
        --storage-location STORAGE_LOCATION
    

    onde:

    • DISK_NAME é o nome do disco permanente zonal a partir do qual você quer criar um instantâneo;
    • 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. Especifique um nome de snapshot com o campo name. O nome precisa ter de 1 a 63 caracteres e estar de acordo com o RFC 1035.

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/createSnapshot
    
    {
      "name": SNAPSHOT_NAME
    }
    

    onde:

    • PROJECT_ID é o ID do projeto;
    • ZONE é a zona onde sua instância e o disco estão localizados;
    • DISK_NAME é o nome do disco permanente zonal a partir do qual você quer criar um instantâneo;
    • SNAPSHOT_NAME é o nome do snapshot.
  • Se preferir, crie um snapshot em um local de armazenamento personalizado fazendo uma solicitação POST para o método disks.createSnapshot e especifique o local de armazenamento:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/createSnapshot
    
    {
      "name": SNAPSHOT_NAME
      "storageLocations": STORAGE_LOCATION
    }
    

    onde:

    • PROJECT_ID é o ID do projeto;
    • ZONE é a zona onde sua instância e o disco estão localizados;
    • DISK_NAME é o nome do disco permanente zonal a partir do qual você quer criar um instantâneo;
    • SNAPSHOT_NAME é o nome do 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 disks snapshot:

    gcloud compute disks snapshot DISK_NAME \
        --region=REGION
    

    Substitua:

    • DISK_NAME: o nome do disco permanente regional a partir do qual você quer criar um snapshot
    • REGION é a região em que seu disco permanente regional está localizado.
  • Como opção, é possível especificar um local de armazenamento personalizado:

    gcloud compute disks snapshot DISK_NAME --region
        REGION --storage-location STORAGE_LOCATION
    

    em que:

    • DISK_NAME é o nome do disco permanente regional a partir do qual você quer criar um snapshot.
    • REGION é a região em que o disco permanente regional está localizado.
    • 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 regionDisk.createSnapshot:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/createSnapshot
    {
     "name": SNAPSHOT_NAME
    }
    

    onde:

    • PROJECT_ID é o ID do projeto.
    • REGION é a região em que o disco permanente regional está localizado.
    • DISK_NAME é o nome do disco que terá o snapshot criado.
    • SNAPSHOT_NAME é o nome do snapshot.
  • Se preferir, crie um snapshot em um local de armazenamento personalizado fazendo uma solicitação POST para o método regionDisk.createSnapshot e especifique o local de armazenamento:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/VAR/disks/DISK_NAME/createSnapshot
    {
     "name": SNAPSHOT_NAME
     "storageLocations": STORAGE_LOCATION
    }
    

    onde:

    • PROJECT_ID é o ID do projeto;
    • REGION é a região em que seu disco permanente regional está localizado;
    • DISK_NAME é o nome do disco permanente regional a partir do qual você quer criar um snapshot.
    • SNAPSHOT_NAME é o nome do 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 snapshots entre projetos

Para mover dados de disco entre projetos, compartilhe um snapshot do disco com usuários em outros projetos. Por exemplo, para mover os dados do disco disk-1 em project-a para um novo disco disk-2 em project-b, execute as etapas a seguir. Neste exemplo, disk-1 está localizado na zona us-west2-a e instance-1 está localizado na zona us-west2-b.

gcloud

  1. Crie um snapshot de disk-1:

    gcloud compute disks snapshot disk-1 --project project-a --snapshot-names snapshot-1
    
  2. Crie um disco novo em project-b com base no snapshot:

    gcloud compute disks create disk-2  --project project-b --source-snapshot projects/project-a/global/snapshots/snapshot-1
    
  3. Anexe o disco novo à instância instance-1 em project-b.

    gcloud compute instances attach-disk instance-1 --project project-b --disk disk-2
    
  4. Monte o disco. Consulte as etapas de 5 a 7 do tópico Como formatar e montar um disco permanente.

API

  1. Para criar um snapshot de disk-1, faça uma solicitação POST ao método disks.createSnapshot.

    POST https://compute.googleapis.com/compute/v1/projects/project-a/zones/us-west2-a/disks/disk-1/createSnapshot
    
    {
    "name": "snapshot-1"
    }
    
  2. Crie um novo disco disk-2 em project-b com base no snapshot. Elabore uma solicitação POST para criar um disco permanente zonal usando o método disks.insert.

    POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/disks
    
    {
    "name": "disk-2",
    "type": "zones/us-west2-b/diskTypes/DISK_TYPE"
    "sourceSnapshot": "projects/project-a/global/snapshots/snapshot-1"
    }
    

    Substitua:

    • DISK_TYPE: o tipo de disco permanente, pd-standard, pd-ssd ou pd-balanced
  3. Anexe o disco novo à instância instance-1 em project-b. O disco precisa estar na mesma zona da instância. Elabore uma solicitação POST para o método instances.attachDisk e inclua o URL do disco permanente zonal que você acabou de criar.

    POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/instances/instance-1/attachDisk
    
    {
    "source": "/compute/v1/projects/project-b/zones/us-west2-b/disks/disk-2"
    }
    
  4. Monte o disco. Consulte as etapas de 5 a 7 do tópico Como formatar e montar um disco permanente.

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. Opcional: selecione um tamanho em gigabytes para o disco. Esse número precisa ser igual ou maior que o disco de origem do snapshot. Se você não especificar esse valor, o novo disco terá o mesmo tamanho 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, em gigabytes, do novo disco. 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: o tipo do disco permanente Por exemplo, 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, em gigabytes, do novo disco.
    • DISK_TYPE: o tipo do disco permanente Por exemplo, 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