Uso de la consola serie de Azure para llamadas SysRq y NMI
Se aplica a: ✔️ Máquinas virtuales Linux
Solicitud del sistema (SysRq)
Una solicitud del sistema, o SysRq, es una secuencia de claves que entiende el kernel del sistema de operaciones Linux, que puede desencadenar un conjunto de acciones predefinidas. Estos comandos se usan a menudo cuando la solución de problemas o la recuperación de una máquina virtual no pueden realizarse mediante la administración tradicional (por ejemplo, si la máquina virtual no responde). Mediante la característica SysRq de la consola serie de Azure se imita la acción de presionar la tecla SysRq y los caracteres escritos en un teclado físico.
Una vez que se entrega la secuencia SysRq, la configuración del kernel controla cómo responde el sistema. Para información sobre cómo habilitar y deshabilitar SysRq, consulte la guía del administrador de SysRqtexto | markdown.
La consola serie de Azure se puede usar para enviar un comando SysRq a una máquina virtual de Azure mediante el icono de teclado de la barra de comandos que se muestra a continuación.
Al elegir "Send SysRq Command" (Enviar comando SysRq) se abre un cuadro de diálogo que proporciona opciones comunes de SysRq o que acepta una secuencia de comandos SysRq escritos en el cuadro de diálogo. Esto permite que la serie de comandos SysRq realice una operación de alto nivel como un reinicio seguro mediante: REISUB
.
No se puede usar el comando SysRq en máquinas virtuales que estén detenidas o cuyo kernel se encuentre en un estado sin respuesta (por ejemplo, una alerta de pánico del kernel).
Habilitación de SysRq
Como se describe en la guía del administrador de SysRq mencionada anteriormente, SysRq se puede configurar de forma que todos, ninguno o solo ciertos comandos estén disponibles. Puede habilitar todos los comandos SysRq mediante el paso siguiente, pero no sobrevivirán a un reinicio:
echo "1" >/proc/sys/kernel/sysrq
Para conservar la configuración de SysReq, puede hacer lo siguiente para habilitar todos los comandos SysRq:
- Agregar esta línea a /etc/sysctl.conf
kernel.sysrq = 1
- Reinicio o actualización de sysctl mediante la ejecución de
sysctl -p
Teclas de comando
En la guía del administrador de SysRq anterior:
Comando | Función |
---|---|
b |
Reiniciará inmediatamente el sistema sin necesidad de sincronizar o desmontar los discos. |
c |
Llevará a cabo un bloqueo del sistema mediante una desreferencia del puntero NULL. Si se configura, se realizará un volcado. |
d |
Muestra todos los bloqueos mantenidos. |
e |
Enviar una señal SIGTERM a todos los procesos, excepto init. |
f |
Llamará a OOM Killer para terminar un proceso de acumulación de memoria, pero no se alarme si no se puede eliminar nada. |
g |
La usa kgdb (depurador de kernel). |
h |
Mostrará ayuda (cualquier otra tecla aparte de las mostradas aquí también mostrará ayuda, pero h es fácil de recordar :-) |
i |
Enviar una señal SIGKILL a todos los procesos, excepto init. |
j |
Reanudar a la fuerza los sistemas de archivos bloqueados por el IOCTL FIFREEZE. |
k |
La clave de acceso seguro (SAK) termina todos los programas en la consola virtual actual. NOTA: Vea comentarios importantes más abajo, en la sección SAK. |
l |
Muestra un seguimiento regresivo de pila para todas las CPU activas. |
m |
Volcará información actual de memoria a la consola. |
n |
Se usa para realizar tareas de RT compatibles con Nice. |
o |
Apagará el sistema (si está configurado y se admite). |
p |
Volcará los registros y marcas actuales en la consola. |
q |
Volcará listas de todos los temporizadores de alta resolución armados (hrtimer) por CPU (pero NO los temporizadores timer_list normales) e información detallada sobre todos los dispositivos de eventos de reloj. |
r |
Desactiva el modo RAW de teclado y lo establece en XLATE. |
s |
Intentará sincronizar todos los sistemas de archivos montados. |
t |
Volcará una lista de tareas actuales y su información en la consola. |
u |
Intentará volver a montar todos los sistemas de archivos montados de solo lectura. |
v |
Restaura forzosamente la consola de framebuffer. |
v |
Provoca el volcado de memoria del búfer de ETM [específico de ARM]. |
w |
Volcar tareas que se encuentran en estado (bloqueado) ininterrumpido. |
x |
La usa la interfaz de XMON en plataformas ppc/powerpc. Mostrar registros de PMU globales en sparc64. Volcar todas las entradas TLB en MIPS. |
y |
Mostrar registros de CPU globales [específicos de SPARC 64]. |
z |
Volcar el búfer de ftrace. |
0 -9 |
Establece el nivel de registro de la consola, y controla qué mensajes del kernel se imprimen en la consola. (Por ejemplo, 0 haría que solo los mensajes de emergencia, como alertas de pánico o problemas se volcaran en la consola). |
Documentación específica de la distribución
Para obtener documentación específica de la distribución sobre SysRq y pasos para configurar Linux para crear un volcado de memoria cuando se recibe un comando de bloqueo de SysRq, consulte los siguientes vínculos:
Ubuntu
- Kernel Crash Dump (Volcado de memoria del kernel)
Red Hat
- What is the SysRq Facility and how do I use it? (¿Qué es la utilidad SysRq y cómo usarla?)
- How to use the SysRq facility to collect information from a RHEL server (¿Cómo usar la utilidad SysRq para recopilar información de un servidor de RHEL?)
SUSE
- Configure kernel core dump capture (Configuración de la captura de volcado de núcleo del kernel)
CoreOS
- Collecting crash logs (Recopilación de registros de bloqueo)
Interrupción no enmascarable (NMI)
Una interrupción no enmascarable (NMI) está diseñada para crear una señal que el software de una máquina virtual no pasará por alto. Históricamente, las NMI se han usado para supervisar problemas de hardware en sistemas que necesitaban tiempos de respuesta específicos. En la actualidad, los administradores del sistema y los programadores suelen usar NMI como mecanismo para depurar o solucionar los problemas de sistemas que no responden.
La consola serie se puede usar para enviar una NMI a una máquina virtual de Azure mediante el icono de teclado de la barra de comandos que se muestra a continuación. Una vez que se entrega la NMI, la configuración de la máquina virtual controla cómo responde el sistema. Los sistemas operativos Linux se pueden configurar para bloquearse y crear un volcado de memoria cuando el sistema operativo recibe una NMI.
Habilitar NMI
En el caso de sistemas Linux que admiten sysctl para configurar parámetros del kernel, puede habilitar una alerta de pánico al recibir esta NMI mediante estas acciones:
- Agregar esta línea a /etc/sysctl.conf
kernel.panic_on_unrecovered_nmi=1
- Reinicio o actualización de sysctl mediante la ejecución de
sysctl -p
Para más información sobre las configuraciones del kernel de Linux, como unknown_nmi_panic
, panic_on_io_nmi
y panic_on_unrecovered_nmi
, consulte: Documentación para /proc/sys/kernel/*. Para obtener documentación específica de la distribución sobre NMI y los pasos para configurar Linux para crear un volcado de memoria cuando se recibe una NMI, consulte los siguientes vínculos:
Ubuntu
- Kernel Crash Dump (Volcado de memoria del kernel)
Red Hat
- What is an NMI and what can I use it for? (¿Qué es una NMI y para qué puedo usarla?)
- How can I configure my system to crash when NMI switch is pushed? (¿Cómo puedo configurar mi sistema para que se bloquee cuando se inserta un modificador de NMI?)
- Crash Dump Admin Guide (Guía del administrador de volcados de memoria)
SUSE
- Configure kernel core dump capture (Configuración de la captura de volcado de núcleo del kernel)
CoreOS
- Collecting crash logs (Recopilación de registros de bloqueo)
Pasos siguientes
- La página principal de la documentación de Linux de la consola serie se encuentra aquí.
- Use la consola serie para arrancar en GRUB y entrar en modo de usuario único.
- La consola serie también está disponible para VM Windows
- Obtenga más información sobre Diagnósticos de arranque
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.