Se sua VM Linux estiver inacessível por algum motivo, você pode tentar resgatar a VM usando as etapas a seguir.
Funções obrigatórias
Para obter as permissões necessárias para resgatar uma VM, peça ao administrador para conceder a você as seguintes funções do IAM no projeto:
- Administrador de 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 obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .
Estas funções predefinidas contêm as permissões necessárias para resgatar uma VM. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :
Permissões necessárias
As seguintes permissões 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
na nova VM -
compute.disks.use
no disco -
compute.instances.start
em VM nova e inacessível -
compute.instances.stop
em VM nova e inacessível
Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .
Resgatar uma VM
Se não conseguir se conectar à VM ou se o disco de inicialização estiver cheio, você deverá criar uma VM temporária para resgatar a VM inacessível.
- (Opcional) Pare a VM inacessível.
- Crie um instantâneo do disco de inicialização da VM inacessível. Se o sistema de arquivos raiz estiver dividido em vários discos, você deverá criar um instantâneo de cada disco.
- Crie uma VM temporária usando uma imagem pública mais próxima do sistema operacional da VM inacessível . Em alguns casos, uma política de imagem confiável pode impedir a criação de discos de inicialização a partir de imagens públicas. Nesses casos, você deverá solicitar a um administrador que suspenda temporariamente essa restrição antes de poder criar uma VM de resgate. Consulte Definir restrições de acesso à imagem para obter mais informações.
Para cada um dos instantâneos dos discos de inicialização da VM inacessível que você criou anteriormente, crie um novo disco a partir do instantâneo e anexe-o à VM de resgate fazendo o seguinte:
No console do Google Cloud, acesse a página de 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
- Para Tipo de origem , selecione a guia Instantâneo .
- No menu suspenso Instantâneo de origem , selecione o instantâneo da VM de origem que você criou 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
A saída é semelhante à seguinte:
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 instantâneo da VM inacessível. Anote oNAME
da VM inacessível para uso na próxima etapa.Para cada um dos discos anexados 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
.A saída é semelhante à seguinte:
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 faltando em alguma partição, execute o seguinte comando:file -sL /dev/PARTITION_NAME
Substitua
NAME
pelo nome da partição.A saída difere dependendo do tipo de sistema de arquivos:
Nenhum sistema de arquivos : se a saída exibir 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 possui 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 descreve dados do sistema de arquivos, a partição é um sistema de arquivos Linux. Exemplo de saída:
/dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
Observe 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.
Se desejar modificar o diretório raiz do sistema de arquivos usando o comando
chroot
, você deverá montar adicionalmente 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
O sistema de arquivos do disco de inicialização inacessível agora está montado em
/rescue
. Você pode navegar no sistema de arquivos, alterar arquivos de configuração, corrigir problemas ou recuperar os dados.
Reverta as alterações e inicialize a VM inacessível de volta
Depois que o problema for corrigido ou os dados forem recuperados, você precisará trazer de volta a VM real. Use as etapas a seguir para restaurar a VM original:
Desmonte o disco adicional montado em
/rescue
na VM temporária:cd ~ sudo umount /rescue
No console do Google Cloud, acesse a página de instâncias de VM .
Selecione a VM temporária que você criou.
Clique em
Editar .Em Discos adicionais , clique em
no disco criado nas etapas anteriores para desanexar o disco adicional da VM temporária.Clique em Salvar .
Acesse a página de instâncias de VM no console do Google Cloud.
Se a VM inacessível ainda estiver em execução, pare a VM .
Clique no nome da VM que você acabou de interromper e clique em
Editar .Em Disco de inicialização , clique em
Detach book disk para desconectar o disco de inicialização existente da VM inacessível.Em seguida, clique em Rescue a VM nesta página.
CONFIGURE BOOT DISK 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ê deve conseguir se conectar à VM usando SSH.