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:
-
Administrador da instância da computação (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.create
no projeto -
compute.disks.create
no projeto -
compute.instances.get
no projeto -
compute.disks.createSnapshot
nos 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 funções personalizadas 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 for dividido em vários discos, você precisará fazer 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 a partir de imagens públicas. Nesses casos, é necessário pedir a um administrador para suspender 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 conecte-o à VM de resgate fazendo o seguinte:
No console do Google Cloud, acesse a página Instâncias de VMs.
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 à 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. Anote oNAME
da VM inacessível para uso 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
NAME
pelo 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
Type
lista o sistema de arquivos de cada partição. Se o tipo de sistema de arquivos estiver ausente em qualquer partição, execute o seguinte comando:file -sL /dev/PARTITION_NAME
Substitua
NAME
pelo 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 do Linux: se a saída descrever dados do sistema de arquivos, a partição será um sistema de arquivos do 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 do Linux em
/rescue
:sudo mount PARTITION_NAME /rescue
Substitua PARTITION_NAME pelo nome do sistema de arquivos Linux que você anotou anteriormente.
Se você quiser modificar o diretório raiz do sistema de arquivos usando o comando
chroot
, também será necessário montar o sistema de arquivos virtual e os dispositivos executando os seguintes comandos: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
Agora, o sistema de arquivos do disco de inicialização inacessível está ativado em
/rescue
. É possível navegar pelo sistema de arquivos, alterar arquivos de configuração, corrigir problemas ou extrair 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:
Desmonte o disco adicional ativado em
/rescue
na VM temporária:cd ~ sudo umount /rescue
No console do Google Cloud, acesse a página Instâncias de VMs.
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 VMs 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 Resgatar uma VM nesta página.
CONFIGURAR DISCO DE INICIALIZAÇÃO para anexar o disco que você criou e corrigiu anteriormente em- 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.