Pânico do kernel em VMs Linux do Azure
Aplica-se a: ✔️ VMs linux
Este artigo discute várias condições que podem levar a um kernel panic e fornece diretrizes de solução de problemas.
Em geral, um kernel panic é uma situação em que o kernel não consegue carregar corretamente e, portanto, o sistema falha ao inicializar. Outra forma de kernel panic ocorre quando o kernel encontra uma situação com a qual não sabe como lidar e se protege parando.
Pré-requisitos
Verifique se o console serial está habilitado e funcional na VM do Linux.
Como identificar um kernel panic?
Use o portal do Azure para exibir a saída do log do console serial da VM na folha de diagnóstico de inicialização, na folha do console serial ou na CLI da AZ para identificar a cadeia de caracteres de pânico do kernel específica.
Um kernel panic é semelhante à saída abaixo e aparecerá no final do log do console serial:
Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
[ 300.206297] Kernel panic - xxxxxxxx
[ 300.207216] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G ------------ T 3.xxx.x86_64 #1
Alguns dos eventos de kernel panic mais comuns:
Mensagem de pânico | Motivo |
---|---|
Opa: 0000 [# 1] SMP " (verifique o log para obter detalhes) | O sistema entrou em pânico devido à desreferência de um endereço incorreto. |
SysRq: Disparar um crashdump | O despejo de memória foi iniciado pelo usuário com sysrq-c ou ecoando c em /proc/sysrq-trigger. |
kernel BUG no <nome do caminho / nome do arquivo>:< número da> linha! | Este formato é o padrão para uma verificação de BUG com falha (que é como um ASSERT, mas a lógica é invertida). O nome do arquivo e o número da linha indicarão qual verificação de BUG falhou. |
Pânico do kernel - não sincronizando: softlockup: tarefas suspensas | O detector de bloqueio suave encontrou uma CPU que não agendou a tarefa de watchdog dentro do limite de bloqueio suave. |
Pânico do kernel - não sincronizando: Watchdog detectou LOCKUP rígido na CPU 0 | O detector de travamento rígido encontrou uma CPU que não recebeu nenhuma interrupção de hrtimer dentro do limite de travamento rígido. |
Kernel panic - não sincronizando: hung_task: tarefas bloqueadas | O watchdog de tarefa suspensa detectou pelo menos uma tarefa que esteve em um estado ininterrupto por mais do que o valor de tempo limite da tarefa bloqueada. |
Kernel panic - não sincronizando: sem memória. panic_on_oom é selecionado | O sistema ficou sem memória e troca e foi forçado a começar a matar processos para liberar memória (não comportamento padrão). |
Pânico do kernel - não sincronizado: Sem memória e sem processos matáveis... | O sistema ficou sem memória e troca e tem matado processos para liberar memória, mas ficou sem processos para matar. |
Pânico do kernel - não sincronizando: ocorreu um NMI, consulte o Log de Gerenciamento Integrado para obter detalhes. | O Watchdog interceptou um NMI (interrupção não mascarável). |
Kernel panic - não sincronizando: erro NMI OCK: não continua | O sistema recebeu uma verificação de E/S NMI do hardware (não um erro de paridade de memória) e kernel.panic_on_io_nmi foi definido (não é o padrão). |
Pânico do kernel - não sincronizando: NMI: não continuando | O sistema recebeu um NMI (erro de paridade de hardware ou memória) e kernel.panic_on_unrecovered_nmi foi definido (não o padrão). |
Kernel panic - não sincronizando: nmi watchdog | O sistema recebeu um NMI e kernel.panic_on_timeout ou kernel.panic_on_oops foi definido (não os valores padrão). |
Kernel panic - não sincroniza: verificação de máquina fatal | Um evento de exceção de verificação de máquina foi gerado para uma condição fatal. |
Kernel panic - não sincronizando: Tentativa de matar o init! | O processo de inicialização é o primeiro processo a ser iniciado e nunca deve sair. |
Pânico do kernel - não sincronizando: VFS: Não é possível montar o fs raiz no bloco desconhecido (0,0) | Supõe-se que o kernel usará um initramfs para montar o rootfs. Esse erro ocorre quando o kernel não tem initramfs. |
Cenário 1: o pânico do kernel ocorre no momento da inicialização
Um pânico do kernel no momento da inicialização impede que a VM conclua o processo de inicialização do sistema operacional. Isso acontece toda vez que a máquina virtual é iniciada e não permite o login.
Esse tipo de evento é comumente relacionado, mas não limitado a:
- Uma atualização recente do kernel.
- Um downgrade recente do kernel.
- Alterações no módulo do kernel.
- Alterações na configuração do sistema operacional (GRUB, sysctl e SELinux).
- Problemas do SELinux.
- Arquivos e diretórios importantes ausentes.
- Faltam bibliotecas e pacotes importantes do núcleo do sistema.
- Permissões erradas nos arquivos.
- Partições ausentes.
Resolução para o cenário 1
Para lidar com esse tipo de kernel panic, as seguintes abordagens podem ser usadas:
Método 1: usando o console serial do Azure
Use o console serial do Azure para interromper o processo de inicialização e selecione uma versão anterior do kernel, se disponível. Dessa forma, a VM poderá inicializar novamente e, em seguida, você poderá usar um dos seguintes métodos para corrigir o problema específico com o kernel que não inicializa:
- Reinstale ou regenere um initramfs ausente.
- Reinstale o kernel problemático.
- Revise os módulos de kernel carregados ou ausentes.
- Revise as partições.
Método 2: Reparo offline usando uma VM de resgate
Caso o console serial do Azure não esteja disponível ou nenhum kernel anterior esteja disponível, você precisará de uma VM de resgate/reparo para fazer um reparo offline.
Use o comando Reparar VM para criar uma VM de reparo que tenha uma cópia do disco do sistema operacional da VM de destino anexada. Em seguida, use chroot mount a cópia dos sistemas de arquivos do sistema operacional na VM de reparo. Depois disso, tente os seguintes métodos para corrigir os problemas do kernel:
- Reinstale ou regenere um initramfs ausente.
- Reinstale o kernel problemático.
- Revise os módulos de kernel carregados ou ausentes.
- Revise as partições.
- Recupere arquivos ausentes.
- Recupere bibliotecas e pacotes importantes do núcleo do sistema ausentes.
Cenário 2: Kernel panic em tempo de execução
Esse tipo de pânico do kernel geralmente será disparado em momentos imprevisíveis após a conclusão do processo de inicialização do sistema operacional e fará com que a VM pare de responder, impedindo-a de fazer logon. É comumente relacionado, mas não limitado a:
- Uma atualização recente do kernel.
- Um downgrade recente do kernel.
- Alterações no módulo do kernel.
- Alterações na configuração do sistema operacional (GRUB, sysctl e SELinux).
- Problemas do SELinux.
- Alterações na carga de trabalho do aplicativo.
- Alterações ou bugs no desenvolvimento de aplicativos.
- Possíveis bugs do kernel.
- Problemas relacionados ao desempenho.
Resolução para o cenário 2
Para lidar com esse tipo de kernel panic, as seguintes abordagens podem ser usadas:
- Revise o uso de recursos e o desempenho geral do sistema. O pânico do kernel pode estar relacionado a uma possível escassez de recursos que pode levar a um redimensionamento da VM.
- Se possível, instale as atualizações mais recentes disponíveis nos repositórios de distribuição do Linux correspondentes. O kernel panic pode estar relacionado a bugs conhecidos no kernel ou em outro software.
- Existe a possibilidade de que o kernel panic esteja relacionado a uma alteração recente do kernel, caso em que também é aconselhável inicializar sobre uma versão anterior do kernel, conforme explicado em Resolução para o cenário 1.
- Se as opções acima não forem aplicáveis, talvez seja necessário configurar o kdump e gerar um despejo principal para compartilhar com suporte para análise posterior.
Cenários de pânico do kernel mais específicos
Cenários comuns de kernel panic com instruções específicas de solução de problemas/recuperação:
Documento | Cenário |
---|---|
Uma VM Linux do Azure em um kernel com base em 3.10 sofre pane após uma atualização de nó host | Este artigo discute um problema que ocorre quando uma VM Linux do Azure que está executando o kernel baseado em 3.10 falha após uma atualização de nó de host no Azure. |
Como recuperar uma máquina virtual linux do Azure de problemas de inicialização relacionados ao kernel | Este artigo fornece soluções para um problema em que uma VM (máquina virtual) Linux não pode ser reiniciada após a aplicação de alterações de kernel. |
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.