Resgate uma VM inacessível


Se a VM Linux estiver inacessível por algum motivo, tente resgatá-la seguindo as etapas a seguir.

Funções exigidas

Para receber as permissões necessárias para resgatar uma VM, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esses papéis predefinidos contêm as permissões necessárias para resgatar uma VM. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para resgatar uma VM:

  • compute.instances.create no projeto
  • compute.disks.create no projeto
  • compute.instances.get no projeto
  • compute.disks.createSnapshot em discos
  • compute.instances.attachDisk em uma nova VM
  • compute.disks.use no disco
  • compute.instances.start em uma VM nova e inacessível
  • compute.instances.stop em uma VM nova e inacessível

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Resgatar uma VM

Se não for possível se conectar à VM ou se o disco de inicialização estiver cheio, crie uma VM temporária para localizar a VM inacessível.

  1. (Opcional) Interrompa a VM inacessível.
  2. Crie um snapshot no disco de inicialização da VM de origem.
  3. Crie uma VM temporária usando uma imagem pública mais próxima do SO da VM inacessível.
  4. Verifique se é possível se conectar à VM temporária usando o SSH.
  5. Adicione mais um disco à VM temporária seguindo estas etapas:

    1. No console do Google Cloud, acesse a página Instâncias de VMs.

      Acessar instâncias de VM

    2. Clique no nome da VM temporária que você criou.

    3. Clique em Editar.

    4. Em Discos adicionais, clique em Adicionar novo disco e faça o seguinte:

      1. Adicione o nome do disco, como my-recovery-disk
      2. Em Tipo de origem, selecione a guia Snapshot.
      3. No menu suspenso Snapshot de origem, selecione o snapshot da VM de origem criada anteriormente nestas etapas.
      4. Clique em Concluído.
    5. Clique em Save.

  6. Conecte-se à VM temporária usando SSH.

  7. execute o seguinte comando:

    ls -l /dev/disk/by-id/google-*

    A saída será semelhante a esta:

      /dev/disk/by-id/google-my-vm -> ../../sda
      /dev/disk/by-id/google-my-vm-part1 -> ../../sda1
      /dev/disk/by-id/google-my-vm-part14 -> ../../sda14
      /dev/disk/by-id/google-my-vm-part15 -> ../../sda15
      /dev/disk/by-id/google-my-recovery-disk -> ../../sdb
      /dev/disk/by-id/google-my-recovery-disk-part1 -> ../../sdb1
      /dev/disk/by-id/google-my-recovery-disk-part2 -> ../../sdb2
      /dev/disk/by-id/google-my-recovery-disk-part5 -> ../../sdb5
    

    Use os links simbólicos (/dev/disk/by-id/google-my-recovery-disk-partN) para localizar o dispositivo e as partições subjacentes do disco recém-adicionado, por exemplo, /dev/sdb1.

    O link simbólico do disco é google-DISK_NAME ou, se você tiver especificado um nome de dispositivo personalizado para o disco, google-DEVICE_NAME. Anote o nome do dispositivo que o novo link simbólico do disco aponta.

  8. Crie um ponto de montagem em /mnt/newdisk:

    sudo mkdir /mnt/newdisk

  9. Ative a partição extra de disco no ponto de montagem /mnt/newdisk:

     sudo mount -o discard,defaults DISK_NAME /mnt/newdisk

    Substitua DISK_NAME pelo nome do disco que você anotou anteriormente nessas etapas, por exemplo, /dev/sdb1.

    Se você vir o erro Filesystem has duplicate UUID XXXXXX - can't mount, mount: /mnt/newdisk: wrong fs type, bad option ou bad superblock on /dev/sdb, use o seguinte comando:

     sudo mount -o nouuid DISK_NAME /mnt/newdisk

    Agora, o sistema de arquivos da VM inacessível está ativado em /mnt/newdisk. É possível navegar pelo sistema de arquivos, alterar arquivos de configuração, corrigir problemas ou recuperar os dados.

Reverter as alterações e inicializar a VM inacessível novamente

Depois que o problema for corrigido ou os dados forem recuperados, você precisará recuperar a VM real. Siga as etapas abaixo para restaurar a VM original:

  1. Desmonte o disco adicional ativado em /mnt/newdisk na VM temporária:

     cd ~
     sudo umount /mnt/newdisk

  2. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

    1. Selecione a VM temporária que você criou.

    2. Clique em Editar.

    3. Em Discos adicionais, clique em do disco criado nas etapas anteriores para removê-lo da VM temporária.

    4. Clique em Save.

  3. Acesse a página Instâncias de VMs no Console do Google Cloud.

    Acessar instâncias de VM

    1. Se a VM inacessível ainda estiver em execução, interrompa a VM.

    2. Clique no nome da VM que você acabou de interromper e clique em Editar.

    3. Em Disco de inicialização, clique em Remover disco de inicialização para remover o disco de inicialização da VM inacessível.

    4. Em seguida, clique em CONFIGURAR DISCO DE INICIALIZAÇÃO para anexar o disco que você criou e corrigiu anteriormente em Resgatar uma VM nesta página.

      1. Na seção Disco de inicialização, clique na guia Discos existentes.
      2. Na lista suspensa, selecione o disco que você criou na seção anterior, por exemplo, my-recovery-disk.
      3. Clique em Selecionar e em Salvar.
    5. Iniciar a VM.

  4. Agora você poderá conectar-se à VM usando SSH.