Este documento ajuda você a descobrir por que sua instância do Linux Compute Engine não inicializa e a corrigir problemas comuns.
Uma instância de computação que não inicializa geralmente apresenta um ou mais destes sintomas:
- A instância de computação está no estado
RUNNING, mas não é possível se conectar a ela usando SSH. - A saída do console serial para no meio da sequência de inicialização ou termina em um prompt de emergência ou resgate.
- A saída do console serial contém
FAILED,error:,Kernel panicouemergency mode.
Para resolver um problema de inicialização, primeiro identifique a causa e, em seguida, corrija-o na instância de computação, se ainda for possível se conectar, ou corrija-o off-line anexando o disco de inicialização a outra instância de computação.
Se a instância de computação terminar a inicialização, mas você não conseguir se conectar a ela, consulte Solução de problemas de erros de SSH.
Antes de começar
- Verifique se a instância de computação grava a saída do console serial. A saída da porta serial fica disponível enquanto a instância de computação é executada. Para mantê-la depois que a instância de computação for interrompida, ative a geração de registros da porta serial para o Cloud Logging. Para mais informações, consulte Como visualizar a saída da porta serial.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar
código ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
-
Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
- Defina uma região e uma zona padrão.
-
Detectar a causa automaticamente
Antes de ler a saída do console serial manualmente, use uma das ferramentas a seguir. Cada um lê a saída da inicialização mais recente da instância de computação, informa a causa mais provável e vincula à seção correspondente neste documento.
Console
No console do Google Cloud , acesse a página Instâncias de VM.
Na linha da instância de computação, clique em SSH.
Se a conexão falhar, clique em Resolver problemas na caixa de diálogo de conexão. A ferramenta de solução de problemas executa verificações de conectividade, incluindo uma verificação de inicialização que analisa a saída do console serial.
gcloud
Para verificar uma instância de computação a que não é possível se conectar usando SSH, execute o solucionador de problemas de SSH da CLI gcloud, que executa verificações de conectividade e de inicialização:
gcloud compute ssh INSTANCE_NAME --zone=ZONE --troubleshoot
Para verificar a sequência de inicialização diretamente, execute o comando de diagnóstico de inicialização:
Para usar esse comando, instale o componente de comandos alfa.
gcloud alpha compute diagnose boot INSTANCE_NAME --zone=ZONE
Substitua:
INSTANCE_NAME: o nome da instância de computação.ZONE: a zona que contém a instância de computação.
Se um problema de inicialização for detectado, a saída vai nomear a causa e vincular à correção. Se nenhum problema for encontrado, siga as etapas manuais.
Ler a saída do console serial
Se as ferramentas não detectarem um problema ou se você quiser confirmar a causa, leia a saída do console serial:
Console
No console do Google Cloud , acesse a página Instâncias de VM.
Selecione a instância de computação para ver a saída da porta serial.
Em Registros, clique em Porta serial 1 (console).
gcloud
gcloud compute instances get-serial-port-output INSTANCE_NAME --zone=ZONE
Substitua:
INSTANCE_NAME: o nome da instância de computação.ZONE: a zona que contém a instância de computação.
Acesse a última inicialização. As linhas úteis geralmente estão imediatamente antes da primeira linha [FAILED], da linha Kernel panic ou do comando de emergência. Compare o que você encontrar com as assinaturas nas seções a
seguir.
Problemas comuns de inicialização
As seções a seguir listam falhas comuns de inicialização em instâncias de computação do Linux, as assinaturas de saída do console serial e como resolvê-las. A maioria das resoluções exige que você anexe o disco de inicialização a uma VM de resgate, conforme descrito em Corrigir o disco off-line.
Não é possível montar a entrada de arquivo /etc/fstab
Sintoma:a saída do console serial contém linhas como as seguintes, seguidas por You are in emergency mode:
UUID=1234abcd-... does not exist
Timed out waiting for device /dev/sdb1
mount: special device /dev/sdb1 does not exist
[DEPEND] Dependency failed for /mnt/data.mount
Causa:uma entrada em /etc/fstab se refere a um dispositivo ou UUID que não está
conectado à instância de computação, ou o sistema de arquivos não pode ser montado. O serviço
systemd interrompe a inicialização e entra no modo de emergência.
Resolução:na VM de resgate, corrija ou remova a entrada em /etc/fstab no disco montado. Para o procedimento, consulte
Resolver problemas de inicialização da VM do Linux causados por erros fstab.
Para a opção de montagem que impede que um dispositivo ausente bloqueie a inicialização,
consulte Montar o disco.
O GRUB não consegue carregar a configuração ou o kernel
Sintoma:a inicialização é interrompida em um prompt do GRUB, e a saída do console serial contém linhas como as seguintes:
error: file '/boot/grub/grub.cfg' not found
error: file '/vmlinuz-6.1.0-18-amd64' not found
error: no such partition
error: no such device
error: unknown filesystem
error: you need to load the kernel first
grub rescue>
Minimal BASH-like line editing is supported
Causa:o carregador de inicialização GRUB não consegue encontrar o arquivo de configuração, os
módulos ou o kernel e o disco RAM inicial a que a configuração se
refere. Esse problema ocorre após uma falha no upgrade do pacote, uma mudança no
layout da partição, uma partição /boot reformatada ou corrompida ou um disco
clonado cujos UUIDs do sistema de arquivos foram alterados.
Resolução:na VM de resgate, monte o disco de inicialização e entre em um ambiente chroot, conforme descrito em Resgatar uma VM. Em seguida, gere novamente o arquivo de configuração do GRUB, conforme descrito em Configurar o carregador de inicialização.
Se não for possível corrigir o carregador de inicialização, restaure o disco de um
snapshot.
O disco RAM inicial não pode montar o sistema de arquivos raiz
Sintoma:a saída do console serial contém linhas como as seguintes:
dracut-initqueue[452]: Warning: dracut-initqueue timeout - starting timeout scripts
dracut: FATAL: ...
Failed to mount /sysroot
ALERT! UUID=1234abcd-... does not exist. Dropping to a shell!
Gave up waiting for root file system device
VFS: Unable to mount root fs on unknown-block(0,0)
Causa:o disco RAM inicial (initramfs) foi iniciado, mas não foi possível encontrar
ou montar o sistema de arquivos raiz. As causas comuns são um parâmetro de kernel root= ou UUID que não corresponde mais ao disco, uma imagem initramfs sem o driver do disco ou uma imagem initramfs corrompida. Em séries de máquinas que usam a interface de disco NVMe, uma configuração de inicialização que nomeia o disco por um caminho de dispositivo, como /dev/sda, não corresponde mais. Use o UUID.
Resolução:confirme se o sistema de arquivos raiz que o disco RAM inicial está procurando existe no disco montado e recrie o disco RAM inicial para seu sistema operacional. Para ver o procedimento, consulte Resolver problemas de inicialização da VM do Linux devido ao kernel panic e Corrigir o disco off-line.
Corrupção do sistema de arquivos
Sintoma:a saída do console serial contém linhas como as seguintes:
Bad magic number in super-block
EXT4-fs error (device sda1): ...
XFS (sda1): Metadata corruption detected
XFS (sda1): log mount/recovery failed
BTRFS error (device sda1): ...
UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
Causa:o sistema de arquivos no disco de inicialização está danificado, geralmente após um desligamento incorreto, um disco cheio ou um erro de E/S.
Resolução:crie um snapshot do disco. Em seguida, na VM de resgate, verifique e repare o sistema de arquivos no disco desmontado, conforme descrito em Identificar o motivo pelo qual o disco de inicialização não está sendo inicializado. Se a verificação não conseguir reparar o sistema de arquivos, restaure o disco de um snapshot.
Kernel panic
Sintoma:a saída do console serial contém Kernel panic - not
syncing: seguido pelo motivo, por exemplo, Attempted to kill init!, Fatal exception, hung_task: blocked tasks, Out of memory, Fatal
Machine check ou NMI: Not continuing. Uma imagem de kernel corrompida para
antes com -- System halted.
Causa:o kernel encontrou um erro irrecuperável. O motivo após os dois-pontos identifica a categoria: um init falho, uma verificação de máquina de hardware, um pânico de esgotamento de memória ou uma imagem de kernel corrompida.
Resolução:redefina a instância de computação. Se o pânico se repetir, consulte Resolver problemas de inicialização da VM do Linux devido ao kernel panic.
Falha ao carregar a política do SELinux
Sintoma:a saída do console serial contém um dos seguintes itens e a inicialização é interrompida:
Failed to load SELinux policy
Unable to load SELinux policy
Você também pode ver Warning -- SELinux targeted policy relabel is
required, que não é um erro: a instância de computação reclassifica o sistema de arquivos
e depois reinicializa sozinha.
Causa:o repositório de políticas do SELinux no disco está ausente ou corrompido, ou os rótulos de arquivo estão inconsistentes após uma restauração ou uma mudança off-line.
Resolução:na VM de resgate, marque o disco montado para uma nova rotulagem completa do SELinux na próxima inicialização ou reinstale os pacotes de política do SELinux para seu sistema operacional se o repositório de políticas estiver danificado. Em imagens do SO baseadas no RHEL, é possível deixar a instância de computação inicializar enquanto você corrige a política definindo o SELinux no modo permissivo, conforme descrito em Mudar o SELinux para o modo permissivo.
O sistema não pode iniciar o processo init
Sintoma:a saída do console serial contém linhas como as seguintes:
Failed to switch root
Target filesystem doesn't have requested /sbin/init
No working init found
run-init: /sbin/init: No such file or directory
/sbin/init: error while loading shared libraries: ...
Causa:o sistema de arquivos raiz foi montado, mas o programa init, como
systemd, está ausente, não é executável ou depende de uma biblioteca compartilhada
que está ausente. Esse problema geralmente ocorre após um upgrade de pacote interrompido
ou uma restauração incompleta.
Resolução:na VM de resgate, insira um ambiente chroot conforme
descrito em
Resgatar uma VM. Verifique
se o programa init existe e se as bibliotecas estão intactas. Se
não estiverem, reinstale o pacote do sistema init usando o gerenciador de pacotes da sua
distribuição.
Modo de emergência e conta raiz bloqueada
Sintoma:a saída do console serial termina com uma das seguintes opções:
You are in emergency mode. After logging in, type "journalctl -xb" to view system logs
Give root password for maintenance (or press Control-D to continue):
Cannot open access to console, the root account is locked.
Causa:uma unidade falhou durante a inicialização e o systemd parou no destino de emergência. Nas imagens do SO fornecidas pelo Google, a conta raiz não tem senha. Portanto, o shell de emergência não pode ser usado no console serial.
Resolução:as linhas que precedem o nome do aviso de emergência indicam a unidade com falha. A falha geralmente é causada por um dos seguintes problemas:
- Não é possível montar a entrada de arquivo
/etc/fstab - O disco RAM inicial não pode montar o sistema de arquivos raiz
- Corrupção do sistema de arquivos
Corrija a causa off-line, conforme descrito em Corrigir o disco off-line. Não tente usar o shell de emergência.
O firmware não consegue encontrar um disco inicializável
Sintoma:a saída do console serial contém uma das seguintes mensagens antes de qualquer mensagem do kernel:
No bootable device.
BdsDxe: failed to load Boot0001
Invalid partition table!
Verification failed: (0x1A) Security Violation
Causa:o disco de inicialização não está anexado como o dispositivo de inicialização, a tabela de partição ou o registro de inicialização está danificado ou, em uma instância de VM protegida com inicialização segura, o carregador de inicialização ou o kernel não está assinado corretamente.
Resolução:confirme se o disco está anexado como o disco de inicialização da instância de computação. Consulte Como remover e anexar discos. Se a tabela de partição ou o registro de inicialização estiverem danificados, repare o carregador de inicialização conforme descrito em O GRUB não consegue carregar a configuração ou o kernel. Não é possível corrigir uma violação da Inicialização segura editando o disco. Restaure um kernel e um carregador de inicialização assinados ou desative a Inicialização segura na instância de computação, conforme descrito em Como modificar opções de VM protegida em uma instância de VM.
Corrigir o disco off-line
A maioria dos problemas de inicialização não pode ser corrigida de dentro da instância de computação, porque ela nunca chega a um prompt de login. Em vez disso, anexe o disco de inicialização a uma VM de resgate temporária, monte-o, faça a alteração e mova o disco de volta. Para o procedimento, consulte Resgatar uma VM inacessível.
As resoluções neste documento pressupõem que o disco de inicialização original esteja anexado e montado em uma VM de resgate. Antes de mudar o disco, crie um snapshot para restaurá-lo se o reparo falhar. Para ver o procedimento, consulte Criar snapshots de arquivo e de disco padrão.
Restaurar a instância de computação se o disco não puder ser reparado
Se nenhuma das resoluções funcionar ou se o sistema de arquivos não puder ser reparado, restaure o disco de inicialização de um snapshot ou crie uma nova instância de computação de um snapshot ou uma imagem personalizada do SO e mova seus dados para ela.
A seguir
- Resgatar uma VM inacessível
- Como visualizar a saída da porta serial
- Resolver erros do SSH
- Criar snapshots de arquivo e de disco padrão