Use o console serial do Azure para chamadas SysRq e NMI
Aplica-se a: ✔️ VMs linux
Solicitação do sistema (SysRq)
Um SysRq é uma sequência de chaves compreendidas pelo kernel do sistema operacional Linux, que pode desencadear um conjunto de ações pré-definidas. Esses comandos geralmente são usados quando a solução de problemas ou recuperação da máquina virtual não pode ser executada por meio da administração tradicional (por exemplo, se a VM não estiver respondendo). O uso do recurso SysRq do console serial do Azure simulará o pressionamento da tecla SysRq e os caracteres inseridos em um teclado físico.
Assim que a sequência SysRq for entregue, a configuração do kernel controlará como o sistema responde. Para obter informações sobre como habilitar e desabilitar o SysRq, consulte a marcação de texto | do Guia de Administração do SysRq.
O console serial do Azure pode ser usado para enviar um SysRq para uma máquina virtual do Azure usando o ícone de teclado na barra de comandos mostrada abaixo.
Escolher "Enviar comando SysRq" abrirá uma caixa de diálogo, que fornecerá opções comuns de SysRq ou aceitará uma sequência de comandos SysRq inseridos na caixa de diálogo. Isso permite que séries de SysRq executem uma operação de alto nível, como uma reinicialização segura usando: REISUB
.
O comando SysRq não pode ser usado em máquinas virtuais que estão paradas ou cujo kernel está em um estado não responsivo. (por exemplo, um kernel panic).
Habilitar SysRq
Conforme descrito no Guia de administração do SysRq acima, o SysRq pode ser configurado de forma que todos, nenhum ou apenas alguns comandos estejam disponíveis. Você pode ativar todos os comandos SysRq usando a etapa abaixo, mas não sobreviverá a uma reinicialização:
echo "1" >/proc/sys/kernel/sysrq
Para tornar a configuração SysReq persistente, você pode fazer o seguinte para habilitar todos os comandos SysRq
- Adicionando esta linha a /etc/sysctl.conf
kernel.sysrq = 1
- Reinicializando ou atualizando o sysctl executando
sysctl -p
Teclas de comando
Do Guia de administração do SysRq acima:
Comando | Função |
---|---|
b |
Irá reiniciar imediatamente o sistema sem sincronizar ou desmontar seus discos. |
c |
Irá executar uma falha do sistema por um desreferenciamento de ponteiro NULL. Um despejo de memória será feito se configurado. |
d |
Mostra todos os bloqueios mantidos. |
e |
Envie um SIGTERM para todos os processos, exceto para init. |
f |
Chamará o oom killer para matar um processo devorador de memória, mas não entre em pânico se nada puder ser morto. |
g |
Usado pelo kgdb (depurador do kernel) |
h |
Exibirá ajuda (qualquer outra chave além das listadas aqui também exibirá ajuda, mas h é fácil de lembrar :-) |
i |
Envie um SIGKILL para todos os processos, exceto para init. |
j |
Forçosamente "Apenas descongele" - sistemas de arquivos congelados pelo FIFREEZE ioctl. |
k |
Secure Access Key (SAK) Mata todos os programas no console virtual atual. NOTA: Veja os comentários importantes abaixo na seção SAK. |
l |
Mostra um backtrace de pilha para todas as CPUs ativas. |
m |
Irá despejar as informações de memória atuais em seu console. |
n |
Usado para tornar as tarefas de RT agradáveis |
o |
Irá desligar seu sistema (se configurado e suportado). |
p |
Irá despejar os registros e sinalizadores atuais em seu console. |
q |
Descarregará listas por CPU de todos os cronômetros armados (mas NÃO cronômetros timer_list regulares) e informações detalhadas sobre todos os dispositivos clockevent. |
r |
Desativa o modo bruto do teclado e o define como XLATE. |
s |
Tentará sincronizar todos os sistemas de arquivos montados. |
t |
Irá despejar uma lista de tarefas atuais e suas informações em seu console. |
u |
Tentará remontar todos os sistemas de arquivos montados somente para leitura. |
v |
Restaura com força o console framebuffer |
v |
Causa dump do buffer ETM [específico do ARM] |
w |
Despeja tarefas que estão em estado ininterrupto (bloqueado). |
x |
Usado pela interface xmon em plataformas ppc/powerpc. Mostrar registros globais de PMU em sparc64. Despeje todas as entradas TLB no MIPS. |
y |
Mostrar registros globais de CPU [específico SPARC-64] |
z |
Despejar o buffer ftrace |
0 -9 |
Define o nível de log do console, controlando quais mensagens do kernel serão impressas em seu console. (0 , por exemplo, faria com que apenas mensagens de emergência como PANICs ou OOPses chegassem ao seu console.) |
Documentação específica da distribuição
Para obter a documentação específica da distribuição no SysRq e as etapas para configurar o Linux para criar um despejo de memória ao receber um comando "Crash" do SysRq, consulte os links abaixo:
Ubuntu
Red Hat
- O que é o SysRq Facility e como posso usá-lo?
- Como usar o recurso SysRq para coletar informações de um servidor RHEL
SUSE
CoreOS
Interrupção Não Mascarável (NMI)
Uma interrupção não mascarável (NMI) é projetada para criar um sinal que o software em uma máquina virtual não irá ignorar. Historicamente, os NMIs têm sido usados para monitorar problemas de hardware em sistemas que exigiam tempos de resposta específicos. Hoje, os programadores e administradores de sistema costumam usar o NMI como um mecanismo para depurar ou solucionar problemas de sistemas que não estão respondendo.
O console serial pode ser usado para enviar um NMI para uma máquina virtual do Azure usando o ícone do teclado na barra de comandos mostrada abaixo. Assim que o NMI for entregue, a configuração da máquina virtual controlará como o sistema responde. Os sistemas operacionais Linux podem ser configurados para travar e criar um despejo de memória, o sistema operacional recebe um NMI.
Ativar NMI
Para sistemas Linux que suportam sysctl para configurar os parâmetros do kernel, você pode habilitar um pânico ao receber este NMI usando o seguinte:
- Adicionando esta linha a /etc/sysctl.conf
kernel.panic_on_unrecovered_nmi=1
- Reinicializando ou atualizando o sysctl executando
sysctl -p
Para obter mais informações sobre as configurações do kernel do Linux, incluindo unknown_nmi_panic
, panic_on_io_nmi
e panic_on_unrecovered_nmi
, consulte: Documentação para /proc/sys/kernel/*. Para documentação específica de distribuição sobre NMI e etapas para configurar o Linux para criar um despejo de memória ao receber um NMI, consulte os links abaixo:
Ubuntu
Red Hat
- O que é um NMI e para que posso usá-lo?
- Como posso configurar meu sistema para travar quando o botão NMI é pressionado?
- ‧‧‧‧‧‧‧‧‧‧‧‧‧‧Guia‧de‧Administração‧do‧Despejo‧de‧Memória
SUSE
CoreOS
Próximas etapas
- A página de documentação principal do Serial Console Linux está localizada aqui.
- Use o console serial para inicializar no GRUB e entrar no modo de usuário único
- O console serial também está disponível para VMs Windows
- Saiba mais sobre diagnóstico de inicialização
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.