Como criar snapshots de disco permanente

Crie snapshots para fazer backup periódico de dados dos discos permanentes zonais ou regionais. Para reduzir o risco de perda inesperada de dados, considere como prática recomendada a configuração de uma programação de snapshots para garantir que o backup de seus dados seja feito em uma programação regular.

Se quiser excluir ou restaurar os dados de um snapshot para um disco permanente, consulte Como restaurar e excluir snapshots de discos permanentes.

É possível criar snapshots com base em discos, mesmo quando estão anexados a instâncias em execução. Os snapshots são recursos globais. Portanto, qualquer snapshot é acessível por qualquer recurso dentro do mesmo projeto. Também é possível compartilhar snapshots entre projetos.

Os snapshots são diferentes das imagens públicas e das imagens personalizadas, usadas principalmente para criar discos de inicialização para instâncias ou configurá-los para modelos de instâncias.

O Compute Engine armazena várias cópias de cada snapshot em vários locais, com somas de verificação automáticas para garantir a integridade dos dados.

Antes de começar

Restrições

  • Não é possível alterar o local de armazenamento de um snapshot existente. Consulte Como selecionar o local de armazenamento de um snapshot.

  • É possível capturar snapshots dos seus discos uma vez a cada 10 minutos, no máximo. Se você quiser emitir uma sequência de solicitações para capturar snapshots dos discos, pode enviar 6 solicitações, no máximo, em 60 minutos. Para mais informações, consulte Limites de frequência de snapshots (em inglês).

Como os snapshots incrementais funcionam

Por serem incrementais e compactados automaticamente, é possível criar snapshots regulares em um disco permanente mais rapidamente e por um custo muito menor do que criando uma imagem completa do disco periodicamente. Os instantâneos incrementais funcionam da seguinte maneira:

  • O primeiro instantâneo bem-sucedido de um disco permanente é um instantâneo completo que contém todos os dados do disco.
  • O segundo só contém dados novos ou modificados desde o primeiro snapshot. Dados inalterados desde o snapshot 1 não são incluídos. Em vez disso, o snapshot 2 contém referências aos dados não alterados do snapshot 1.
  • O snapshot 3 contém os dados novos ou alterados desde o snapshot 2, mas não contém os dados sem alterações dos snapshots 1 ou 2. Em vez disso, o instantâneo 3 contém referências aos dados não alterados de blocos dos instantâneos 1 e 2.

Isso se repete para todos os instantâneos subsequentes do disco permanente. Os snapshots são sempre criados com base no último snapshot bem-sucedido.

Diagrama do processo de criação de um snapshot

Usando a ferramenta gcloud ou a API Compute Engine, é possível criar snapshots em cadeias de snapshots distintas especificando um snapshot chainName: Quando você cria vários snapshots de um disco permanente usando um nome de cadeia, cada snapshot é baseado gradualmente no último snapshot bem-sucedido criado com esse nome de cadeia. Esse recurso está disponível na versão Beta. Use este campo apenas se você for um proprietário de serviço avançado que precise criar cadeias de snapshots separadas, por exemplo, para rastreamento de estorno.

Como listar snapshots no projeto

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

gcloud compute snapshots list

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 com as informações que você quer ver.

Como selecionar o local de armazenamento de um snapshot

Ao criar um snapshot, especifique um local de armazenamento. O local de um snapshot afeta a disponibilidade dele e pode gerar custos de rede ao criar o snapshot ou restaurá-lo em um novo disco.

Os snapshots podem ser armazenados em qualquer local multirregional do Cloud Storage, como asia ou um local regional do Cloud Storage, como asia-south1.

Um local de armazenamento multirregional oferece maior disponibilidade e pode reduzir os custos de rede ao criar ou restaurar um snapshot. Por exemplo, a criação de um disco a partir de um snapshot armazenado em um local multirregional não acarreta custos de rede, desde que o novo disco permanente seja criado em uma das regiões do grupo multirregional. Um local de armazenamento regional proporciona mais controle sobre o local físico dos dados porque você especifica uma única região.

Um snapshot pode ser usado para criar um novo disco em qualquer região e zona, independentemente do local de armazenamento do snapshot.

Se você tiver uma política da organização que inclua a restrição de locais de recursos, qualquer local de armazenamento de snapshot que for especificado tem que estar no conjunto de locais definido pela restrição. Consulte Locais de recursos do Compute Engine para mais informações.

Se você não especificar um local de armazenamento para o snapshot, o Google Cloud usará o local padrão, que armazena o snapshot em um local multirregional do Cloud Storage mais próximo da região do disco de origem. Se precisar escolher armazenamento regional ou se precisar especificar um local multirregional diferente, armazene seu snapshot em um local personalizado.

Local padrão

Se um local de armazenamento não for especificado, seu snapshot será armazenado na multirregião geograficamente mais próxima do local do disco permanente.

Por exemplo, se seu disco permanente estiver armazenado em us-central1, seu snapshot será armazenado na multirregião us por padrão.

No entanto, um local padrão como australia-southeast1 está fora de uma multirregião. A multirregião mais próxima é asia. A criação ou restauração de um snapshot gera custos de rede.

Veja abaixo alguns exemplos de casos de uso para escolher um local padrão para armazenar snapshots:

  • O local multirregional padrão atende às políticas corporativas ou de colocação de dados do governo.
  • O disco permanente é armazenado em um local regional que faz parte de um local multirregional padrão. Por exemplo, seu disco permanente está na região us-central1, então a multirregião padrão é us. Nesse caso, é necessário priorizar a disponibilidade do snapshot mais alto em vez de um desempenho de restauração de snapshot potencialmente mais lento.
  • Seus snapshots não serão restaurados com frequência em discos localizados fora do local padrão de armazenamento de snapshots.

Local personalizado

Selecione um local regional personalizado para armazenar seu snapshot ou se precisar especificar um local multirregional diferente.

Veja abaixo alguns exemplos de casos para seleção de um local de armazenamento personalizado para os instantâneos:

  • O local multirregional personalizado atende às políticas corporativas ou de colocação de dados do governo.
  • Seu aplicativo foi implantado em uma região que não está incluída em um dos locais multirregionais do Cloud Storage e você quer priorizar o desempenho da restauração de snapshots em vez da disponibilidade deles.
  • É possível restaurar os snapshots várias vezes de um disco fora do local padrão de armazenamento de snapshots.

Se for necessário estar em conformidade com as políticas corporativas e de colocação de dados governamentais, armazene o snapshot no local regional mais próximo que esteja em conformidade com essas políticas.

Se seu aplicativo não for implantado em parte de uma multirregião e você quiser priorizar custos baixos de rede em relação à alta disponibilidade de snapshots, armazene seu snapshot na região em que o disco de origem está localizado. O armazenamento de seu snapshot na região em que seu disco de origem está localizado minimiza os custos de rede para restaurar e criar snapshots daquele disco de origem.

No entanto, diferentemente de um armazenamento multirregional, um local de armazenamento regional não armazena seus dados de forma redundante em vários data centers. Desse modo, seus dados podem não ser acessíveis se ocorrer uma interrupção em grande escala. Para garantir a disponibilidade de seus dados, convém armazenar um snapshot redundante em um segundo local.

Custos de rede

A seleção do local de armazenamento de snapshots é essencial para minimizar os custos de rede. Se você armazenar seu snapshot na mesma região do disco de origem, não haverá cobrança de rede ao acessar esse snapshot da mesma região. Se você acessar o snapshot de uma região diferente, haverá custo de rede.

Se o local de armazenamento geográfico do disco de origem for o mesmo da sua região, não haverá cobrança de rede.

Por exemplo, se o disco de origem estiver em asia-east1-a é possível armazenar seu snapshot na região asia-east1 ou na multirregião asia. Não serão cobrados custos de rede quando você acessar os snapshots.

Há uma taxa de rede pelo acesso entre regiões. Por exemplo, se o disco de origem estiver em asia-east1 e você armazenar seus snapshots em asia-east2, serão cobrados custos de rede ao acessar o snapshot entre essas duas regiões.

Duas regiões, australia-southeast1 e southamerica-east1, têm um local de armazenamento de snapshots multirregional padrão, que resultarão em custos de rede, a menos que você substitua o padrão ao criar um snapshot.

  • Se o disco de origem estiver em australia-southeast1, o local de armazenamento do snapshot padrão será na multirregião asia. Para reduzir custos, substitua esse local padrão e armazene seus snapshots na região australia-southeast1.
  • Se o disco de origem estiver em southamerica-east1, o local de armazenamento do snapshot padrão será na multirregião us. Para reduzir custos, substitua esse local padrão e armazene seus snapshots na região southamerica-east1.

Se você restaurar um snapshot em um disco em uma região que não está incluída no local de armazenamento do snapshot, serão cobrados custos de rede. Por exemplo, se você criar um novo disco permanente regional em australia-southeast1 de um snapshot armazenado em asia, um local multirregional, serão cobrados custos de rede.

Como criar um snapshot

Durante a preparação para criar snapshots de discos permanentes, faça o seguinte:

Como criar um snapshot de um disco permanente zonal

Depois de preparar o disco, será possível criar um snapshot. Siga estas etapas para fazer um snapshot de um disco permanente zonal. Se o disco permanente que você quer usar estiver localizado em várias zonas, siga as instruções para criar um snapshot de um disco permanente regional.

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 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 (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]
    

    em que:

    • [DISK_NAME] é o 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]
    

    em que:

    • [DISK_NAME] é o nome do disco permanente zonal 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

Crie o snapshot no local de armazenamento padrão ou selecionado. Se preferir, especifique um nome de snapshot com o campo name. 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 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
    

    em que:

    • [PROJECT_ID] é o ID do projeto;
    • [ZONE] é a zona em que sua instância e o disco estão localizados;
    • [DISK_NAME] é o nome do disco permanente zonal 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 disks.createSnapshot e especifique o local de armazenamento:

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

    em que:

    • [PROJECT_ID] é o ID do projeto;
    • [ZONE] é a zona em que sua instância e o disco estão localizados;
    • [DISK_NAME] é o nome do disco permanente zonal 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.

Criar um snapshot de um disco permanente regional

Depois de preparar o disco, será possível criar um snapshot. 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]
    

    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 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 seu 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
    

    em que:

    • [PROJECT_ID] é o ID do projeto;
    • [REGION] é a região em que seu disco permanente regional está localizado;
    • [DISK_NAME] é o nome do disco que terá o snapshot criado.
  • 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/[REGION]/disks/[DISK_NAME]/createSnapshot
    {
     "storageLocations": [STORAGE_LOCATION]
    }
    

    em que:

    • [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.
    • [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",
    "sizeGb": DISK_SIZE,
    "type": "zones/us-west2-b/diskTypes/DISK_TYPE"
    "sourceSnapshot": "projects/project-a/global/snapshots/snapshot-1"
    }
    

    Substitua:

    • DISK_SIZE: o tamanho do novo disco em GB
    • 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 acessar um snapshot em um projeto, especifique o ID do projeto nas solicitações de API ou nos comandos gcloud. O acesso a um snapshot em um projeto só estará disponível se você tiver o papel compute.snapshots.useReadOnly para esse snapshot. O acesso a todos os snapshots em um projeto estará disponível apenas se você tiver o papel compute.storageAdmin nesse projeto.

Para ver uma lista de snapshots disponíveis no projeto com o ID SNAPSHOT_PROJECT_ID, execute o seguinte comando:

gcloud compute snapshots list --project SNAPSHOT_PROJECT_ID

A seguir