Se a VM Linux estiver inacessível por algum motivo, tente resgatá-la seguindo as etapas a seguir.
Para identificar por que uma instância de computação não é inicializada antes de ser resgatada, consulte Resolver problemas de inicialização de instâncias do Linux Compute Engine.
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:
- Admin da instância do Compute (v1) (
roles/compute.instanceAdmin.v1) -
VMs que usam uma conta de serviço:
Usuário da conta de serviço (
roles/iam.serviceAccountUser)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
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.createno projeto -
compute.disks.createno projeto -
compute.instances.getno projeto -
compute.disks.createSnapshotem discos -
compute.instances.attachDiskem uma nova VM -
compute.disks.useno disco -
compute.instances.startem uma VM nova e inacessível -
compute.instances.stopem 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.
- (Opcional) Interrompa a VM inacessível.
- Crie um snapshot no disco de inicialização da VM de origem. Se o sistema de arquivos raiz estiver dividido em vários discos, você precisará criar um snapshot de cada disco.
- Crie uma VM temporária usando uma imagem pública mais próxima do SO da VM inacessível. Em alguns casos, uma política de imagem confiável pode restringir a criação de discos de inicialização com base em imagens públicas. Nesses casos, peça a um administrador para remover temporariamente essa restrição antes de criar uma VM de resgate. Consulte Definir restrições de acesso a imagens para mais informações.
Para cada um dos snapshots dos discos de inicialização da VM inacessível que você criou anteriormente, crie um novo disco com base no snapshot e anexe-o à VM de resgate seguindo estas etapas:
No Google Cloud console do, acesse a página Instâncias de VM.
Clique no nome da VM temporária que você criou.
Clique em Editar.
Em Discos adicionais, clique em Adicionar novo disco e faça o seguinte:
- Adicione o nome do disco, como my-recovery-disk
- Em Tipo de origem, selecione a guia Snapshot.
- No menu suspenso Snapshot de origem, selecione o snapshot da VM de origem criada anteriormente nestas etapas.
- Clique em Concluído.
Clique em Salvar.
Conecte-se à VM temporária usando SSH.
Identifique o nome de cada um dos discos que você anexou anteriormente a VM executando o seguinte comando:
lsblk -d -o NAME,SERIAL
O resultado será assim:
NAME SERIAL sda rescue-vm sdb my-recovery-disk
Neste exemplo,
rescue-vmé o disco de inicialização da VM de resgate emy-recovery-diské o disco de inicialização do snapshot da VM inacessível VM. Anote oNAMEda VM inacessível para usar na próxima etapa.Para cada um dos discos que você anexou anteriormente à VM, faça o seguinte:
Identifique o sistema de arquivos de cada partição executando o seguinte comando:
fdisk -l /dev/NAME -o Device,Size,Type
Substitua
NAMEpelo nome do disco de inicialização da VM inacessível da etapa anterior. Neste exemplo, o nome seriasdb.O resultado será assim:
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Disk model: PersistentDisk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: B31430F1-F041-4555-96B9-B2F43DC057AD Device Size Type /dev/sdb1 2M BIOS boot /dev/sdb2 20M EFI System /dev/sdb3 10G Linux filesystem
A coluna
Typelista o sistema de arquivos de cada partição. Se o tipo de sistema de arquivos estiver ausente para alguma partição, execute o seguinte comando:file -sL /dev/PARTITION_NAME
Substitua
NAMEpelo nome da partição.A saída varia de acordo com o tipo de sistema de arquivos:
Nenhum sistema de arquivos: se a saída mostrar apenas
data, a partição não contém um sistema de arquivos. Exemplo de saída:/dev/sdb1: data
Sistema de arquivos EFI: se a saída descrever um setor de inicialização DOS/MBR, a partição terá um sistema de arquivos EFI. Exemplo de saída:
dev/sdb2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/ track 32, heads 64, serial number 0xf2af2664, label: "EFI ", FAT (16 bit)
Sistema de arquivos Linux: se a saída descrever dados do sistema de arquivos, a partição será um sistema de arquivos Linux. Exemplo de saída:
/dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
Anote o nome da partição do sistema de arquivos Linux.
Crie um ponto de montagem em
/rescue:sudo mkdir /rescue
Monte a partição do sistema de arquivos Linux em
/rescue:sudo mount PARTITION_NAME /rescue
Substitua PARTITION_NAME pelo nome do sistema de arquivos Linux que você anotou anteriormente.
Monte os sistemas de arquivos e dispositivos virtuais para modificar o diretório raiz do sistema de arquivos usando o comando
chroot:sudo mount -t proc /proc /rescue/proc sudo mount -t sysfs /sys /rescue/sys sudo mount -o bind /dev /rescue/dev sudo mount -o bind /dev/pts /rescue/dev/pts sudo mount -o bind /run /rescue/run
Mude o diretório raiz para o sistema de arquivos montado:
sudo chroot /rescue
O sistema de arquivos do disco de inicialização inacessível agora está montado em
/rescue, e o shell é executado em um ambientechrootnesse sistema de arquivos. É possível navegar pelo sistema de arquivos, alterar arquivos de configuração, corrigir problemas ou recuperar dados.
Reverter as alterações e reiniciar a VM inacessível
Depois de corrigir o problema ou recuperar os dados, siga as etapas abaixo para restaurar a VM original:
Depois de concluir a solução de problemas, saia do ambiente
chroot:exit
Desmonte os sistemas de arquivos virtuais, os dispositivos e o sistema de arquivos da VM inacessível da VM temporária:
cd / sudo umount /rescue/run sudo umount /rescue/dev/pts sudo umount /rescue/dev sudo umount /rescue/sys sudo umount /rescue/proc sudo umount /rescue
No Google Cloud console do, acesse a página Instâncias de VM.
Selecione a VM temporária que você criou.
Clique em Editar.
Em Discos adicionais, clique em do disco criado nas etapas anteriores para removê-lo da VM temporária.
Clique em Salvar.
Acesse a página Instâncias de VM no console do Google Cloud .
Se a VM inacessível ainda estiver em execução, interrompa a VM.
Clique no nome da VM que você acabou de interromper e clique em Editar.
Em Disco de inicialização, clique em Remover disco de inicialização para remover o disco de inicialização da VM inacessível.
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.
- Na seção Disco de inicialização, clique na guia Discos existentes.
- Na lista suspensa, selecione o disco que você criou na seção
anterior, por exemplo,
my-recovery-disk. - Clique em Selecionar e em Salvar.
Agora você poderá conectar-se à VM usando SSH.