Usar o console serial do Azure para chamadas SysRq e NMIUse the Azure Serial Console for SysRq and NMI calls

System Request (SysRq)System Request (SysRq)

SysRq é uma sequência de teclas compreendidas pelo kernel do sistema operacional Linux, que pode disparar um conjunto de ações predefinidas.A SysRq is a sequence of keys understood by the Linux operation system kernel, which can trigger a set of pre-defined actions. Esses comandos são frequentemente usados quando a solução de problemas ou recuperação de máquina virtual não puder ser executada por meio da administração tradicional (por exemplo, se a VM não estiver respondendo).These commands are often used when virtual machine troubleshooting or recovery can't be performed through traditional administration (for example, if the VM is not responding). Usar o recurso SysRq do Console Serial do Azure irá imitar o pressionamento da tecla SysRq e os caracteres digitados em um teclado físico.Using the SysRq feature of Azure Serial Console will mimic pressing of the SysRq key and characters entered on a physical keyboard.

Depois que a sequência SysRq for entregue, a configuração de kernel irá controlar como o sistema responde.Once the SysRq sequence is delivered, the kernel configuration will control how the system responds. Para obter informações sobre como habilitar e desabilitar SysRq, consulte o Guia do Administrador do SysRq texto | markdown.For information on enabling and disabling SysRq, see the SysRq Admin Guide text | markdown.

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.The Azure Serial Console can be used to send a SysRq to an Azure virtual machine using the keyboard icon in the command bar shown below.

Captura de tela do console serial do Azure.

Escolher "Enviar Comando de SysRq" abrirá uma caixa de diálogo, que fornecerá opções comuns de SysRq ou aceitará uma sequência de comandos de SysRq inseridos na caixa de diálogo.Choosing "Send SysRq Command" will open a dialog, which will provide common SysRq options or accept a sequence of SysRq commands entered into the dialog. Isso permite que a série de SysRqs execute uma operação de alto nível, como uma reinicialização segura usando: REISUB.This allows for series of SysRq's to perform a high-level operation such as a safe reboot using: REISUB.

Captura de tela da caixa de diálogo Enviar comando SysRq para o convidado.

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.The SysRq command can't be used on virtual machines that are stopped or whose kernel is in a non-responsive state. (por exemplo, um pânico de kernel).(for example a kernel panic).

Habilitar SysRqEnable SysRq

Conforme descrito no Guia do Administrador do SysRq acima, o SysRq pode ser configurado de modo que todos os comandos, nenhum deles ou apenas determinados comandos estejam disponíveis.As described in the SysRq Admin Guide above, SysRq can be configured such that all, none, or only certain commands are available. Você pode habilitar todos os comandos de SysRq usando a etapa abaixo, mas eles não permanecerão em vigor após uma reinicialização:You can enable all SysRq commands using the step below but it will not survive a reboot:

echo "1" >/proc/sys/kernel/sysrq

Para tornar a configuração do SysReq persistente, você pode fazer o seguinte para habilitar todos os comandos de SysRqTo make the SysReq configuration persistent, you can do the following to enable all SysRq commands

  1. Adicionar esta linha a /etc/sysctl.confAdding this line to /etc/sysctl.conf
    kernel.sysrq = 1
  2. Reinicializar ou atualizar sysctl executandoRebooting or updating sysctl by running
    sysctl -p

Teclas de ComandoCommand Keys

No Guia do Administrador do SysRq acima:From the SysRq Admin Guide above:

ComandoCommand FunçãoFunction
b Reiniciará imediatamente o sistema sem sincronizar ou desmontar os discos.Will immediately reboot the system without syncing or unmounting your disks.
c Executará uma falha do sistema por meio de uma desreferência de ponteiro NULL.Will perform a system crash by a NULL pointer dereference. Um despejo de memória será utilizado se configurado.A crashdump will be taken if configured.
d Mostra todos os bloqueios mantidos.Shows all locks that are held.
e Envie um SIGTERM para todos os processos, exceto para init.Send a SIGTERM to all processes, except for init.
f Chamará o killer oom para encerrar um processo de consumo de memória, mas não acionará o pânico se nada puder ser encerrado.Will call the oom killer to kill a memory hog process, but do not panic if nothing can be killed.
g Usado por kgdb (depurador de kernel)Used by kgdb (kernel debugger)
h Exibirá a ajuda (qualquer outra chave diferente daquelas listadas aqui também exibirá a ajuda, mas h é fácil de lembrar :-)Will display help (any other key than those listed here will also display help, but h is easy to remember :-)
i Envie um SIGKILL para todos os processos, exceto para init.Send a SIGKILL to all processes, except for init.
j Forçar "Apenas descongelá-lo" - sistemas de arquivos congelados por FIFREEZE ioctl.Forcibly "Just thaw it" - filesystems frozen by the FIFREEZE ioctl.
k A Chave de Acesso Seguro (SAK) encerra todos os programas no console do virtual atual.Secure Access Key (SAK) Kills all programs on the current virtual console. OBSERVAÇÃO: consulte os comentários importantes abaixo na seção SAK.NOTE: See important comments below in SAK section.
l Mostra um backtrace de pilha para todas as CPUs ativas.Shows a stack backtrace for all active CPUs.
m Despejará as informações da memória atual no console.Will dump current memory info to your console.
n Usado para facilitar as tarefas de RTUsed to make RT tasks nice-able
o Desativará o sistema (se configurado e com suporte).Will shut off your system (if configured and supported).
p Despejará os registros e sinalizadores atuais para o console.Will dump the current registers and flags to your console.
q Despejará por listas de CPU de todos os hrtimers armados (mas NÃO temporizadores timer_list regulares) e informações detalhadas sobre todos os dispositivos clockevent.Will dump per CPU lists of all armed hrtimers (but NOT regular timer_list timers) and detailed information about all clockevent devices.
r Desativa o modo bruto do teclado e define-o como XLATE.Turns off keyboard raw mode and sets it to XLATE.
s Tentará sincronizar todos os sistemas de arquivos montados.Will attempt to sync all mounted filesystems.
t Despejará uma lista de tarefas atuais e suas informações no console.Will dump a list of current tasks and their information to your console.
u Tentará montar novamente todos os sistemas de arquivos somente leitura montados.Will attempt to remount all mounted filesystems read-only.
v Restaura forçadamente o console framebufferForcefully restores framebuffer console
v Causa despejo do buffer de ETM [específico de ARM]Causes ETM buffer dump [ARM-specific]
w Despeja tarefas que estão em estado ininterrupto (bloqueado).Dumps tasks that are in uninterruptible (blocked) state.
x Usado pela interface xmon em plataformas ppc/powerpc.Used by xmon interface on ppc/powerpc platforms. Mostre os Registros PMU globais em sparc64.Show global PMU Registers on sparc64. Despeje todas as entradas TLB em MIPS.Dump all TLB entries on MIPS.
y Mostrar Registros de CPU globais [específico de SPARC-64]Show global CPU Registers [SPARC-64 specific]
z Despejar o buffer ftraceDump the ftrace buffer
0-9 Define o nível de log de console, controlando quais mensagens de kernel serão impressas no console.Sets the console log level, controlling which kernel messages will be printed to your console. (0, por exemplo, faria isso, para que apenas mensagens de emergência como PANICs ou OOPSes fizessem isso no console.)(0, for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)

Documentação específica de distribuiçãoDistribution-specific documentation

Para obter a documentação específica de distribuição em SysRq e as etapas para configurar o Linux para criar um despejo de memória no recebimento de um comando "Crash" de SysRq, consulte os links abaixo:For distribution-specific documentation on SysRq and steps to configure Linux to create a crash dump when it receives a SysRq "Crash" command, see the links below:

UbuntuUbuntu

Red HatRed Hat

SUSESUSE

CoreOSCoreOS

Interrupção Não Mascarável (NMI)Non-Maskable Interrupt (NMI)

Uma interrupção não mascarável (NMI) foi projetada para criar um sinal que o software em uma máquina virtual não irá ignorar.A non-maskable interrupt (NMI) is designed to create a signal that software on a virtual machine will not ignore. Historicamente, as NMIs são usadas para monitorar os problemas de hardware em sistemas que necessitam de tempos de resposta específicos.Historically, NMIs have been used to monitor for hardware issues on systems that required specific response times. Hoje, os programadores e os administradores do sistema geralmente usam a NMI como um mecanismo para depurar ou solucionar problemas de sistemas que não respondem.Today, programmers and system administrators often use NMI as a mechanism to debug or troubleshoot systems that are not responding.

O Console Serial pode ser usado para enviar uma NMI a uma máquina virtual do Azure usando o ícone de teclado na barra de comandos mostrada abaixo.The Serial Console can be used to send a NMI to an Azure virtual machine using the keyboard icon in the command bar shown below. Depois que a NMI for entregue, a configuração de máquina virtual irá controlar como o sistema responde.Once the NMI is delivered, the virtual machine configuration will control how the system responds. Os sistemas operacionais Linux poderão ser configurados para parar e criar um despejo de memória quando o sistema operacional receber uma NMI.Linux operating systems can be configured to crash and create a memory dump the operating system receives an NMI.

Captura de tela do console serial.

Habilitar NMIEnable NMI

Para sistemas Linux que dão suporte a sysctl para configurar parâmetros de kernel, você pode habilitar um pânico ao receber essa NMI usando o seguinte:For Linux systems which support sysctl for configuring kernel parameters, you can enable a panic when receiving this NMI by using the following:

  1. Adicionar esta linha a /etc/sysctl.confAdding this line to /etc/sysctl.conf
    kernel.panic_on_unrecovered_nmi=1
  2. Reinicializar ou atualizar sysctl executandoRebooting or updating sysctl by running
    sysctl -p

Para obter mais informações sobre configurações de kernel do Linux, incluindo unknown_nmi_panic, panic_on_io_nmi e panic_on_unrecovered_nmi, consulte: Documentação para /proc/sys/kernel/*.For more information on Linux kernel configurations, including unknown_nmi_panic, panic_on_io_nmi, and panic_on_unrecovered_nmi, see: Documentation for /proc/sys/kernel/*. Para obter a documentação específica de distribuição em NMI e as etapas para configurar o Linux para criar um despejo de memória no recebimento de uma NMI, consulte os links abaixo:For distribution-specific documentation on NMI and steps to configure Linux to create a crash dump when it receives an NMI, see the links below:

UbuntuUbuntu

Red HatRed Hat

SUSESUSE

CoreOSCoreOS

Próximas etapasNext steps