Criar um snapshot de disco consistente do aplicativo do Windows


No Compute Engine, é possível usar snapshots para fazer backup dos dados de discos. Como os snapshots são incrementais, é possível criá-los com maior desempenho e menor carga total de armazenamento em comparação à criação de imagens de discos completas.

Os snapshots consistentes do aplicativo capturam o estado dos dados do aplicativo no momento do backup, com todas as transações do aplicativo concluídas e todas as gravações pendentes liberadas para o disco. Nas VMs do Windows, use o serviço de cópia de sombra de volume (VSS, na sigla em inglês) para criar snapshots consistentes de aplicativos sem primeiro interromper a instância ou desconectar o disco da VM.

Antes de começar

  • Crie uma instância do Windows.
  • Revise as práticas recomendadas de criação 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

Limitações

Os snapshots de disco no Windows têm as seguintes limitações:

  • Os snapshots do VSS funcionam apenas em instâncias do Windows com a versão de imagem v20160810 e mais recentes. Para instâncias com imagens mais antigas, crie um snapshot sem usar o VSS.
  • É preciso que o disco anexado use o sistema de arquivos NTFS, exFAT ou ReFS.
  • Os snapshots do VSS ajudam a preservar seus dados apenas quando você executa aplicativos compatíveis com VSS que se coordenam para criar um backup consistente de seus dados.
  • Se a operação de snapshot do VSS não for concluída em 300 segundos, o snapshot falhará com um erro de tempo limite.

Criar um snapshot do VSS do Windows

É possível criar snapshots do Serviço de cópia de sombra de volume (VSS, na sigla em inglês) sem ter que interromper a instância ou desconectar o disco da sua VM. Os snapshots do VSS destinam-se a backup e recuperação de sistemas com apps compatíveis com VSS.

O valor cobrado pelos snapshots do VSS é igual ao dos snapshots de Persistent Disk ou Hyperdisk comuns e corresponde somente ao tamanho total do snapshot.

Criar o snapshot

Console

  1. Acesse a página Criar um snapshot no console do Google Cloud.

    Acessar a página "Criar um snapshot"
  2. Digite um Nome de snapshot.
  3. Selecione um Tipo de snapshot. O snapshot padrão é STANDARD, que é a melhor opção para backup de longo prazo e recuperação de desastres.

    Escolha Snapshot do arquivo para uma retenção de dados mais econômica.

  4. Opcional: insira uma Descrição sobre o snapshot.
  5. Em Disco de origem, selecione o disco do qual você quer criar um snapshot.
  6. Na seção Local, escolha o local de armazenamento dos snapshots.

    O local padrão predefinido ou personalizado definido nas configurações de snapshot é selecionado automaticamente. Se preferir, modifique 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 por um custo mais alto.
      • Escolha Snapshots regionais para ter mais controle sobre a localização física dos dados por 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.
  7. Marque a opção Ativar snapshot consistente do aplicativo.
  8. Clique em Criar para criar o snapshot.

gcloud

Para criar um snapshot do VSS, use o comando gcloud compute snapshots create e inclua a flag --guest-flush.

Crie o snapshot na política de local de armazenamento definida pelas configurações do snapshot ou usando um local de armazenamento alternativo de sua escolha. Para mais informações, consulte Escolher o local de armazenamento dos snapshots.

  • Para criar um snapshot no local padrão predefinido ou personalizado definido nas configurações do snapshot, use o comando gcloud compute snapshots create.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --guest-flush
    
  • Como alternativa, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua a flag --storage-location para indicar onde ele deve ser armazenado:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION \
        --guest-flush
    

    Substitua:

    • SNAPSHOT_NAME: um nome para o snapshot.
    • SOURCE_ZONE: a zona do disco de origem.
    • SOURCE_DISK_NAME: o nome do volume de disco a partir do qual você quer criar um snapshot.
    • SNAPSHOT_TYPE: o tipo de snapshot, que é STANDARD ou ARCHIVE. Se um tipo de snapshot não for especificado, um snapshot STANDARD será criado.
    • STORAGE_LOCATION (opcional): a multirregião do Cloud Storage ou a região do Cloud Storage onde você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.

      Use o parâmetro --storage-location somente quando quiser substituir o local de armazenamento padrão predefinido ou personalizado que está definido nas configurações de snapshot.

    Para criar um snapshot do VSS de um Persistent Disk regional, nos exemplos anteriores, substitua --source-disk-zone= por --source-disk-region= e especifique a região em que o Persistent Disk regional está localizado.

    A CLI do Google Cloud 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.

REST

Ao criar um snapshot, para indicar que você quer criar um snapshot do VSS, inclua a propriedade guestFlush no corpo da solicitação POST para compute.snapshots.insert.

Crie o snapshot na política de local de armazenamento definida pelas configurações do snapshot ou usando um local de armazenamento alternativo de sua escolha. Para mais informações, consulte Escolher o local de armazenamento dos snapshots.

  • Para criar o snapshot no local padrão predefinido ou personalizado configurado nas configurações de snapshot, faça uma solicitação POST para o método snapshots.insert.

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "guestFlush": true,
    }
    
  • Como alternativa, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação POST ao método snapshots.insert e inclua nela a propriedade storageLocations:

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "storageLocations": [
          "STORAGE_LOCATION"
      ],
      "guestFlush": true,
    }
    

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 volume de disco a partir do qual você quer criar um snapshot.
  • SNAPSHOT_TYPE: o tipo de snapshot, que é STANDARD ou ARCHIVE. Se um tipo de snapshot não for especificado, um snapshot STANDARD será criado.
  • STORAGE_LOCATION (opcional): a multirregião do Cloud Storage ou a região do Cloud Storage onde você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.

    Use o parâmetro storageLocations somente quando quiser substituir o local de armazenamento padrão predefinido ou personalizado que está definido nas configurações de snapshot.

Para criar um snapshot do VSS de um Persistent Disk regional, substitua a linha a seguir nas solicitações POST mostradas anteriormente:

"sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
Use esta linha ao criar um snapshot de um Persistent Disk regional:
"sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",

Opcional: marque o disco como disponível para leitura e gravação

Quando você cria um snapshot do VSS, o Windows Server marca o volume no snapshot como "Somente leitura". Quando você cria um novo disco a partir do snapshot do VSS, ele também é definido para o modo somente leitura.

Isso pode causar problemas. Por exemplo, se você criar uma instância de VM com um novo disco de inicialização com base em um snapshot do VSS de um disco de inicialização existente, a sinalização "Somente leitura" no novo disco de inicialização impedirá que a VM seja inicializada corretamente.

Para contornar esse problema, remova a flag "Somente leitura" de qualquer disco novo criado com base em um snapshot do VSS seguindo as seguintes etapas:

  1. Verifique se o disco está anexado a uma VM.

    • Se o disco criado com base no snapshot do VSS for um disco de dados que não é de inicialização, conecte-o a qualquer VM nova ou existente.
    • Se o disco criado a partir do snapshot do VSS for um disco de inicialização e você quiser usá-lo para inicializar uma VM, anexe temporariamente o disco a uma VM separada já existente. Depois de concluir as etapas a seguir, remova o disco dessa VM e use-o para inicializar uma nova instância de VM.
  2. Faça login na VM do Windows à qual o disco está anexado.

  3. Abra um prompt de comando do PowerShell e execute a ferramenta diskpart.

    PS C:\> diskpart
    
  4. Identifique o disco que você quer ativar.

    DISKPART> list disk
    
  5. Use o comando select disk para selecionar o disco.

    DISKPART> select disk DISK_NUMBER
    

    Substitua DISK_NUMBER pelo número do disco que você quer ativar.

  6. Monte o disco.

    DISKPART> online disk
    
  7. Liste todos os volumes no disco.

    DISKPART> list volume
    
  8. Selecione o novo volume.

    DISKPART> select volume VOLUME_NUMBER
    

    Substitua VOLUME_NUMBER pelo número do volume a ser configurado como leitura e gravação.

  9. Limpe a flag "Somente leitura".

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  10. Saia da ferramenta diskpart.

    DISKPART> exit
    
  11. Se for um disco de inicialização de outra VM, sincronize os arquivos dele com a nova assinatura do disco.

    PS C:\> bcdboot DRIVE_LETTERWindows /s DRIVE_LETTER
    

    Substitua DRIVE_LETTER pela letra da unidade do volume que você quer sincronizar. Por exemplo, F para F:\.

Criar um snapshot sem usar VSS

Em algumas situações, pode ser útil criar snapshots de discos anexados a VMs do Windows sem usar VSS.

Para criar um snapshot de disco em uma VM do Windows sem usar o VSS, faça o seguinte:

  1. Prepare o sistema para um snapshot limpo.
  2. Crie o snapshot
  3. remontar o disco.
  4. Marque o disco como disponível para leitura/gravação

Preparar o sistema para criar um snapshot limpo

Antes de criar um snapshot do disco, verifique se essa ação é consistente com o estado pretendido para o disco. Se você captura um snapshot de um disco em estado "com erros", isso pode provocar uma verificação de disco e possível perda de dados. Sincronize e desconecte o sistema de arquivos.

Sincronizar o sistema de arquivos

Em cenários em que não é possível desmontar o disco, por exemplo, quando um aplicativo está gravando dados no disco, sincronize o sistema de arquivos para transferir os buffers do disco. Para fazer isso, siga estas etapas:

  1. Faça login na VM do Windows.
  2. Faça o download e instale a ferramenta Sync da Microsoft.
  3. Interrompa a gravação dos aplicativos no disco.
  4. Abra uma janela elevada do prompt de comando.
  5. Na janela da linha de comando, execute:

    PS C:\> sync DRIVE_LETTER
    

    Substitua DRIVE_LETTER pela letra da unidade do volume que você quer sincronizar. Por exemplo, F para F:\.

Desconectar o disco

  1. Faça login na VM do Windows.

  2. Abra um prompt de comando do PowerShell e execute a ferramenta diskpart.

    PS C:\> diskpart
    
  3. Identifique o disco que você quer desconectar e criar um snapshot dele.

    DISKPART> list disk
    
  4. Depois selecione o disco usando o número que acabou de encontrar.

    DISKPART> select disk DISK_NUMBER
    

    Substitua DISK_NUMBER pelo número do disco que você quer reativar.

  5. Desconecte o disco.

    DISKPART> offline disk
    

Criar um snapshot

remontar o disco.

  1. Faça login na VM do Windows.

  2. Abra um prompt de comando do PowerShell e execute a ferramenta diskpart.

    PS C:\> diskpart
    
  3. Identifique o disco que você quer ativar.

    DISKPART> list disk
    
  4. Use o comando select disk para selecionar o disco.

    DISKPART> select disk DISK_NUMBER
    

    Substitua DISK_NUMBER pelo número do disco que você quer ativar.

  5. Monte o disco.

    DISKPART> online disk
    

Remover a sinalização "Somente leitura" do disco

  1. Se necessário, siga estas etapas:

    1. Faça login na VM do Windows.

    2. Abra um prompt de comando do PowerShell e execute a ferramenta diskpart.

      PS C:\> diskpart
      
  2. Liste todos os volumes no disco.

    DISKPART> list volume
    
  3. Selecione o novo volume.

    DISKPART> select volume VOLUME_NUMBER
    

    Substitua VOLUME_NUMBER pelo número do volume que você quer configurar para leitura e gravação.

  4. Limpe a flag "Somente leitura".

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  5. Saia da ferramenta diskpart.

    DISKPART> exit
    
  6. Se o disco for de inicialização de outra instância de VM, sincronize os arquivos do disco de inicialização no prompt de comando do PowerShell com a nova assinatura do disco.

    PS C:\> bcdboot DRIVE_LETTER:\Windows /s DRIVE_LETTER
    

    Substitua DRIVE_LETTER pela letra da unidade do volume que você quer sincronizar. Por exemplo, F para F:\.

A seguir