Este documento inclui informações sobre solução de problemas de inicialização de VMs devido a erros de cota e discos de inicialização.
Erros de cota
Se você receber um erro de cota ao tentar iniciar uma instância, será necessário solicitar mais cota de CPU. Para mais informações, consulte a seção Instâncias de VM na documentação sobre Cotas de recursos.
Discos de inicialização
Caso a instância não seja iniciada e você não consiga se conectar nem fazer login nela por meio do console serial interativo, identifique o motivo pelo qual o disco de inicialização não está concluindo o processo.
Identifique o motivo para o disco de inicialização não estar sendo iniciado
Verifique se o disco de inicialização não está cheio.
Se o disco de inicialização estiver completamente cheio e o sistema operacional não for compatível com o redimensionamento automático, não será possível se conectar à instância. Crie uma nova instância e recrie o disco de inicialização. Para mais informações, consulte Como recuperar VMs ou discos de inicialização completos.
Examine a saída da porta serial da instância de máquina virtual.
As mensagens de depuração do BIOS, do carregador de inicialização e do kernel de uma instância são exibidas na saída da porta serial da instância, fornecendo informações úteis sobre erros ou problemas. Se você ativar a geração de registros da saída de porta serial para o Cloud Logging, será possível acessar essas informações mesmo quando a instância não estiver em execução.
Ative o acesso interativo ao console serial.
Ative o acesso interativo ao console serial de uma instância para fazer login e depurar problemas de inicialização a partir da instância sem precisar que a inicialização seja concluída. Para mais informações, consulte Solução de problemas usando o console serial.
Verificar se a clonagem do disco de inicialização não está em andamento
Se a clonagem do disco de inicialização estiver em andamento, não será possível iniciar a VM e você verá um erro semelhante ao seguinte.
Failed to start example-vm: The instance resource 'projects/example-project/zones/us-central1-b/instances/example-vm' is already being used by 'projects/example-project/zones/us-central1-b/disks/clone'
Aguarde a conclusão do clone e inicie a VM.
Verificar se o snapshot do disco de inicialização não está em andamento
Se um snapshot do disco de inicialização estiver em andamento, não será possível iniciar a VM, e você verá um erro semelhante ao seguinte:
The instance resource 'projects/example-project/zones/asia-east1-b/instances/example-vm' is already being used by 'projects/example-project/global/snapshots/example-vm-prod-asia-east1-b-abc'
Aguarde a conclusão do snapshot e inicie a VM.
Verifique se o disco tem um sistema de arquivos válido.
Quando o sistema de arquivos está corrompido ou inválido, não é possível iniciar a instância. Valide o sistema de arquivos do disco:
Se aplicável, separe esse disco de qualquer instância a que ele esteja anexado:
gcloud compute instances delete old-instance --keep-disks boot
Inicie uma nova instância com a imagem mais recente fornecida pelo Google:
gcloud compute instances create debug-instance
Anexe o disco como não inicializável, mas não o monte. Substitua
DISK
pelo nome do disco que não será inicializado. Veja o nome do dispositivo que identifica o disco na instância:gcloud compute instances attach-disk debug-instance \ --disk DISK \ --device-name debug-disk
Conecte-se à instância:
gcloud compute ssh debug-instance
Encontre a partição raiz do disco, identificada pela notação
part1
. Nesse caso, a partição raiz do disco está em/dev/sdb1
:ls -l /dev/disk/by-id total 0 lrwxrwxrwx 1 root root 9 Jan 22 17:09 google-debug-disk -> ../../sdb lrwxrwxrwx 1 root root 10 Jan 22 17:09 google-debug-disk-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 Jan 22 17:02 google-persistent-disk-0 -> ../../sda lrwxrwxrwx 1 root root 10 Jan 22 17:02 google-persistent-disk-0-part1 -> ../../sda1 lrwxrwxrwx 1 root root 9 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk -> ../../sdb lrwxrwxrwx 1 root root 10 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda lrwxrwxrwx 1 root root 10 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
Execute uma verificação de sistema de arquivos na partição raiz:
sudo fsck /dev/sdb1 fsck from util-linux 2.20.1 e2fsck 1.42.5 (29-Jul-2012) /dev/sdb1: clean, 19829/655360 files, 208111/2621184 blocks
Monte seu sistema de arquivos:
sudo mkdir /mydisk
sudo mount /dev/sdb1 /mydisk
Verifique se o disco tem arquivos de kernel:
ls /mydisk/boot/vmlinuz-* /mydisk/boot/vmlinuz-3.2.0-4-amd64
Verifique se o disco tem um registro mestre de inicialização (MBR, na sigla em inglês) válido.
Execute o comando a seguir na instância de depuração com o disco de inicialização permanente anexado, como
/dev/sdb
:sudo parted /dev/sdb print
Se o MBR é válido, as informações sobre o sistema de arquivos são listadas:
Disk /dev/sdb: 10.7GB Sector size (logical/physical): 512B/4096B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2097kB 10.7GB 10.7GB primary ext4 boot
Corrigir o problema de inicialização
Depois de identificar em que parte está ocorrendo a falha na inicialização, corrija o problema realizando uma das ações a seguir:
Use sua imagem importada para criar um disco de inicialização independente
Comece novamente e importe a imagem do disco de inicialização mais uma vez
Como criar um disco de inicialização independente
Ative sua imagem importada em um disco secundário anexado a uma instância de VM temporária. Use o console do Google Cloud ou a CLI gcloud para criar um disco independente usando a imagem que você fez upload e crie uma VM temporária com o disco independente anexado. É possível usar essa instância para modificar arquivos no disco independente e corrigir erros que impedem a inicialização da imagem.
Console
Crie um disco independente a partir da imagem do disco de inicialização que você importou. Desanexe um disco de inicialização de uma instância e crie a instância usando esse disco.
- In the Google Cloud console, go to the Disks page.
- Click Create disk.
-
On the Create a disk page,
specify the following attributes:
-
Zone:
Select a zone near you. You must use this same zone when you create your temporary instance.
- Disk source type: Image
- Source image: Specify the name of the boot disk image that you imported.
-
Zone:
- To create the disk, click Create.
Crie uma instância temporária em que é possível anexar o disco independente e configurar o carregador de inicialização para funcionar em um ambiente do console do Google Cloud.
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique no botão Criar instância.
Na página Criar uma instância, especifique um nome de instância e uma zona para localizar a instância. A zona precisa ser a mesma em que você criou o disco independente.
Expanda a seção Gerenciamento, segurança, discos, rede, locatário único.
Na guia Discos da seção Discos adicionais, clique em Anexar disco atual. Uma nova seção será exibida.
Na seção Disco, selecione o disco independente que foi criado na lista suspensa. Isso anexa o disco independente à instância para que seja possível ativá-lo e, posteriormente, modificar o respectivo conteúdo.
Clique em Concluído para terminar de anexar o disco.
Clique no botão Criar para criar a instância.
gcloud
Crie um disco independente a partir da imagem do disco de inicialização que você importou. Desanexe um disco de inicialização de uma instância e crie a instância usando esse disco.
gcloud compute disks create DISK_NAME \ --zone=ZONE \ --image=IMAGE_NAME
Substitua:
DISK_NAME
: o nome do novo disco independente.
: uma zona perto de você. Use esta mesma zona quando criar a instância temporária.ZONE
IMAGE_NAME
: o nome da imagem do disco de inicialização importada.
Crie uma instância temporária em que é possível anexar o disco independente e configurar o carregador de inicialização para funcionar em um ambiente do console do Google Cloud.
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --disk name=DISK_NAME
Substitua:
INSTANCE_NAME
: um nome exclusivo para a instância;ZONE
: a zona em que você criou o disco independente;DISK_NAME
: o nome do disco independente criado a partir da imagem do disco de inicialização importada.
Depois de criar a instância com o disco independente anexado, você tem um ambiente virtual onde pode modificar o carregador de inicialização a partir da sua imagem de disco de inicialização original.
Como configurar o disco de inicialização
Conecte-se à instância, ative o disco independente e configure o carregador de inicialização para que ele seja executado no Compute Engine.
- Conectar à instância temporária
usando o SSH no navegador ou o
comando
gcloud compute ssh
. Use o comando
blkid
para identificar o disco que quer modificar e as partições que precisa ativar. Nesse exemplo,/dev/sdb
é o disco que você importou.lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk └─sda1 8:1 0 10G 0 part / sdb 8:16 0 100G 0 disk ├─sdb1 8:17 0 96G 0 part ├─sdb2 8:18 0 1K 0 part └─sdb5 8:21 0 4G 0 part
Ative a partição raiz a partir do disco independente no diretório
/tmp
. Nesse exemplo,/dev/sdb1
é a partição raiz, e as outras partições não exigem modificações. O esquema de partição pode exigir a ativação de várias partições para acessar todos os arquivos que você precisa mudar.sudo mount /dev/sdb1 /tmp
Edite os arquivos que possam provocar falha do disco no processo de inicialização. Para mais informações, consulte as instruções de configuração do carregador de inicialização.
Desmonte o disco de inicialização da instância temporária.
sudo umount /tmp
Como usar o disco de inicialização
Quando terminar a configuração do disco, desanexe-o e use-o como disco de inicialização da nova instância.
Console
Desanexe o disco independente da instância temporária.
No console do Google Cloud, acesse a página Instâncias de VMs.
Na lista de instâncias, clique no nome da instância temporária em que você modificou o disco de inicialização independente. A página de detalhes da instância é aberta.
No início da página, clique em Editar.
Em Discos adicionais, clique no X ao lado do disco independente para indicar que você quer desanexá-lo da instância temporária.
Clique em Salvar.
Use o disco independente desanexado para criar uma instância.
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique no botão Criar instância.
Na página Criar uma instância, especifique um nome de instância e uma zona para localizar a instância. A zona precisa ser a mesma em que você criou o disco independente.
Em Disco de inicialização, clique em Alterar para começar a configurar o disco de inicialização.
Na guia Discos atuais, selecione o disco de inicialização independente para usá-lo na inicialização da nova instância.
Clique no botão Criar para criar a instância.
gcloud
Desanexe o disco independente da instância temporária.
gcloud compute instances detach-disk INSTANCE_NAME \ --disk name=DISK_NAME
Substitua:
INSTANCE_NAME
: um nome exclusivo para a instância;DISK_NAME
: o nome do novo disco independente.
Use o disco independente desanexado para criar uma instância.
gcloud compute instances create INSTANCE_NAME \ --zone ZONE \ --disk name=DISK_NAME,boot=yes
Substitua:
INSTANCE_NAME
: um nome exclusivo para a instância;ZONE
: a zona em que o disco independente está localizado;DISK_NAME
: o nome do disco independente criado a partir da imagem do disco de inicialização importada.
Teste a instância criada usando o disco de inicialização modificado. Se ainda não conseguir se conectar à instância, veja a saída da porta serial novamente para identificar onde o processo de inicialização está falhando. Repita o processo de solução de problemas até corrigir as erros na imagem do disco de inicialização.