Restaurar um disco a partir de um instant snapshot


Para acessar os dados capturados em um instant snapshot, restaure ou crie um novo disco a partir do instant snapshot.

Nesta página, explicamos como criar um disco com base em um instant snapshot. Depois de criar o disco, use-o anexando-o a uma máquina virtual (VM).

Antes de começar

  • 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.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

Restrições

As seguintes restrições são aplicadas:

  • Quando você cria um disco a partir de um instant snapshot, o novo disco sempre tem o mesmo tipo, local de armazenamento e criptografia que o disco de origem do snapshot.

  • Não é possível criar uma VM diretamente de um instant snapshot. É preciso criar um disco a partir do instant snapshot e usar o novo disco para criar uma VM.

  • Se o disco de origem do instant snapshot usar chaves de criptografia gerenciadas pelo cliente ou fornecidas pelo cliente, será necessário fornecer a mesma chave de criptografia ao criar um novo disco a partir do instant snapshot.

    Veja este exemplo. Imagine que você tem um disco, DISK-1, criptografado com uma chave de criptografia fornecida pelo cliente (CSEK, na sigla em inglês), KEY-1. Você também tem um instant snapshot, IS-1, criado a partir de DISK-1. Para criar um novo disco a partir de IS-1, é necessário fornecer a mesma chave, KEY-1, ao criar o novo disco.

    Se o disco estiver criptografado com chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês), você só precisará fornecer a chave se usar o REST ou a gcloud CLI para criar o disco. Se você usa o console do Google Cloud, não precisa especificar a chave de criptografia.

Criar um disco a partir de um instant snapshot

Um instant snapshot é criptografado com a mesma criptografia do disco de origem. As etapas para criar um disco a partir de um instant snapshot dependem de como o disco de origem do snapshot é criptografado.

Cada disco de origem é criptografado com um dos seguintes métodos:

  • Chaves de criptografia gerenciadas pelo Google. Esse é o padrão.
  • Chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês)
  • Chaves de criptografia fornecidas pelo cliente (CSEK).

Para saber como um disco específico é criptografado, consulte Ver informações sobre a criptografia de um disco.

Criar um disco a partir de um instant snapshot criptografado com criptografia gerenciada pelo Google (padrão)

É possível criar um disco a partir de um instant snapshot com a gcloud CLI, o console do Google Cloud ou o REST.

Console

  1. Encontre o instant snapshot que você quer restaurar:

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

      Acesse Snapshots

    2. Clique na guia Instant Snapshots.

    3. Na coluna Nome, clique no nome do instant snapshot que você quer restaurar.

  2. Clique em Create disk.

  3. No campo Nome, insira um nome para o disco.

  4. Opcional: no campo Descrição, insira mais detalhes.

  5. Verifique se o Tipo de origem do disco é instant snapshot.

  6. Na lista instant snapshot de origem, escolha o instant snapshot.

  7. Opcional: configure outras personalizações para o disco.

    • Digite um tamanho: no campo Tamanho, especifique um tamanho em GB para o disco. O tamanho precisa ser igual ou maior que o tamanho do disco de origem do snapshot.
    • Programar backups: se quiser que o Compute Engine crie snapshots padrão desse novo disco dentro de uma programação, marque a caixa de seleção Ativar programação de snapshot e escolha um snapshot cronograma. Caso contrário, desmarque a caixa de seleção.
  8. Opcional: para organizar seu projeto, adicione um ou mais rótulos.

  9. Para criar o disco, clique em Criar.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Use o comando gcloud beta compute disks create. Os argumentos especificados dependem de você estar criando um disco zonal ou regional.

    Criar um disco zonal

    Especifique a zona com a flag --zone:

    gcloud beta compute disks create DISK_NAME \
         --zone=ZONE \
         --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME
    

    Substitua:

    • DISK_NAME: o nome do novo disco.
    • ZONE: a zona do novo disco, por exemplo, europe-west1-a.
    • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.

    Criar um disco regional

    Especifique a região com --region e as zonas de replicação de destino do novo disco com --replica-zones.

      gcloud beta compute disks create DISK_NAME \
         --region=REGION \
         --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
         --replica-zones=ZONE1,ZONE2
    

    Substitua:

    • DISK_NAME: o nome do novo disco.
    • REGION: a região do disco regional, por exemplo, europe-west1.
    • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.
    • ZONE1,ZONE2: as zonas dentro da região em que as duas réplicas de disco estão localizadas, por exemplo: europe-west1-b,europe-west1-c

REST

Para criar um disco zonal ou regional a partir de um instant snapshot, use o método disks.insert.

Criar um disco zonal

Faça uma solicitação POST, especificando o instant snapshot de origem.

 POST https://compute.googleapis.com/compute/beta/projects/PROJECT/zones/SOURCE_ZONE/disks/insert
{
 "name": "NEW_DISK_NAME",
 "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME"
}

Substitua:

  • PROJECT: o projeto em que o novo disco será criado.
  • SOURCE_ZONE: a zona onde o instant snapshot está localizado, por exemplo, us-central1-a. O disco é criado nessa zona.
  • NEW_DISK_NAME: um nome exclusivo do novo snapshot.
  • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.

Criar um disco regional

Faça uma solicitação POST, especificando o instant snapshot de origem e as zonas em que o disco será replicado.


POST https://compute.googleapis.com/compute/beta/projects/PROJECT/region/SOURCE_REGION/disks/insert

{
"name": "NEW_DISK_NAME",
"sourceInstantSnapshot": "projects/PROJECT/regions/SOURCE_REGION/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME",
"replicaZones": [
  "projects/PROJECT/zones/ZONE1",
  "projects/PROJECT/zones/ZONE2"
]
}

Substitua:

  • PROJECT: o projeto em que o novo disco será criado.
  • SOURCE_REGION: a região em que o instant snapshot está localizado. O disco é criado nessa região.
  • NEW_DISK_NAME: um nome exclusivo do novo snapshot.
  • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.
  • ZONE1,ZONE2: as zonas dentro da região para as duas réplicas de disco, por exemplo, europe-west1-b, europe-west1-c.

Resposta da solicitação de API

Se a solicitação POST for bem-sucedida, o corpo da resposta será um objeto que poderá ser pesquisado para conferir o status da criação do disco. Consulte Como processar respostas da API para mais informações.

Criar um disco a partir de um instant snapshot criptografado por CMEK ou CSEK

Console

Se o instant snapshot usar a criptografia padrão do Google ou CMEK, o console do Google Cloud fornecerá automaticamente a chave de criptografia quando você criar um disco a partir do instant snapshot. Caso contrário, se o instant snapshot for criptografado por CSEK, será preciso fornecer a chave de criptografia para criar um disco.

Siga as etapas na seção "Criptografia gerenciada pelo Google", especificando a chave de criptografia conforme estas instruções:

  1. Na seção Descriptografia, insira a chave de criptografia no campo Chave de criptografia.
  2. Se a chave estiver encapsulada com a chave RSA pública, selecione Chave encapsulada.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Use o comando gcloud beta compute disks create.

    Se o disco de origem for criptografado por CMEK, use o parâmetro --kms-key para fornecer o nome da chave.

    Se o disco de origem for criptografado por CSEK, use o parâmetro --csek-key-file para especificar a chave de criptografia do disco de origem.

    CMEK

    Para criar um disco zonal a partir de um instant snapshot criptografado por CMEK, use o seguinte comando:

         gcloud beta compute disks create NEW_DISK_NAME \
           --zone=SOURCE_ZONE \
           --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
           --kms-key=projects/KMS_PROJECT_NAME/locations/KEYRING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

    Substitua:

    • NEW_DISK_NAME: o nome do novo disco.
    • SOURCE_ZONE: a zona onde o instant snapshot está localizado, por exemplo, europe-west1-a.
    • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.
    • KMS_PROJECT_NAME: o projeto que contém a chave.
    • KEYRING_LOCATION: a localização do keyring que detém a chave. Se o keyring for global, especifique global. Caso contrário, especifique o nome da região onde o keyring está localizado, por exemplo, us-west1.
    • KEY_RING_NAME: o nome do keyring que contém a chave, por exemplo, key-ring-1.
    • KEY_NAME: o nome da chave usada para criptografar o disco.

    CSEK

    Para criar um disco zonal a partir de um instant snapshot criptografado por CSEK, use o seguinte comando:

         gcloud beta compute disks create NEW_DISK_NAME \
           --zone=SOURCE_ZONE \
           --source-instant-snapshot=SOURCE_INSTANT_SNAPSHOT_NAME \
           --csek-key-file=PATH_TO_CSEK_JSON_FILE
     

    Substitua:

    • NEW_DISK_NAME: o nome do novo disco.
    • SOURCE_ZONE: a zona onde o instant snapshot está localizado, por exemplo, europe-west1-a.
    • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.
    • CSEK_JSON_FILE: caminho para um arquivo JSON que contém a chave. Veja um exemplo do formato do arquivo CSEK.

    Para criar um disco regional, substitua a flag --zone no exemplo anterior pelas flags a seguir:

    • --region: a região do novo disco
    • --replica-zones: as zonas dentro da região das duas réplicas de disco.

REST

Para criar um disco zonal ou regional a partir de um instant snapshot criptografado por CMEK ou CSEK, faça uma solicitação POST ao método disks.insert usando as properties listadas na seção Criptografia gerenciada pelo Google.

Além disso, forneça a chave de criptografia do disco de origem no campo diskEncryptionKey. As properties do campo diskEncryptionKey dependem de o disco ser ou não criptografado por CMEK ou CSEK.

Os exemplos a seguir mostram como criar um novo disco zonal para cada tipo de criptografia.

CMEK

No corpo da solicitação, especifique o nome da chave com a property diskEncryptionKey.kmsKeyName:

{
"name": "NEW_DISK_NAME",
"sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/SOURCE_INSTANT_SNAPSHOT_NAME",
"diskEncryptionKey": {
      "kmsKeyName": "projects/KMS_PROJECT/locations/LOCATION/keyRings/KEYRING_LOCATION/cryptoKeys/KEY_NAME"
  }
}

Substitua:

  • NEW_DISK_NAME: um nome exclusivo do novo snapshot.
  • PROJECT: o projeto em que o novo disco será criado.
  • SOURCE_ZONE: a zona onde o instant snapshot está localizado, por exemplo, us-central1-a. O disco é criado nessa zona.
  • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.
  • KMS_PROJECT: o projeto que contém a chave.
  • LOCATION: a localização do keyring que detém a chave. Se o keyring for global, especifique global. Caso contrário, especifique o nome da região onde o keyring está localizado, por exemplo, us-west1.
  • KEY_RING: o nome do keyring que contém a chave, por exemplo, key-ring-1.
  • KEY: o nome da chave usada para criptografar o disco.

CSEK

O corpo da solicitação depende de a CSEK usada para criptografar o instant snapshot ser criptografada por RSA ou não.

Para usar uma chave bruta (não criptografada por RSA), especifique a chave na property diskEncryptionKey.rawKey do corpo da solicitação:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/SOURCE_ZONE/disks/insert
{
  "name": "NEW_DISK_NAME",
  "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME,
  "diskEncryptionKey": {
      "rawKey": "RAW_ENCRYPTION_KEY"
  }
}

Substitua os seguintes valores pelos valores correspondentes:

  • PROJECT: o projeto em que o novo disco será criado.
  • SOURCE_ZONE: a zona onde o instant snapshot está localizado, por exemplo, us-central1-a. O disco é criado nessa zona.
  • NEW_DISK_NAME: um nome exclusivo do novo snapshot.
  • SOURCE_INSTANT_SNAPSHOT_NAME: o nome do instant snapshot de origem.
  • RAW_ENCRYPTION_KEY: a chave usada para criptografar o instant snapshot e o disco de origem, por exemplo, SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=.

Para usar uma chave criptografada por RSA, modifique o exemplo anterior conforme a seguir:

  • Faça uma solicitação POST à versão Beta do método disks.insert:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/disks/insert
    

  • Especifique a chave na property diskEncryptionKey.rsaEncryptedKey do corpo da solicitação:

    "diskEncryptionKey": {
     "rsaEncryptedKey": "RSA_ENCRYPTED_KEY"
    }
    

Substitua RSA_ENCRYPTED_KEY pela sua chave criptografada.

Resposta da solicitação de API

Se a solicitação POST for bem-sucedida, o corpo da resposta será um objeto que poderá ser pesquisado para conferir o status da criação do disco. Consulte Como processar respostas da API para mais informações.