¿Cómo puedo utilizar la clave « Linux » SysRq para solucionar un problema en una instancia de servidor virtual que no responde desde la consola serie?

Tu instancia de servidor virtual de Linux no responde y no puedes acceder a ella ni a través de SSH ni mediante acceso directo.

Una instancia de servidor virtual de Linux puede dejar de responder por diversas razones, como fallos del sistema, situaciones de interbloqueo o problemas relacionados con el núcleo. Cuando el servidor virtual no responde, es posible que los métodos habituales de resolución de problemas, como SSH o el acceso directo, no funcionen. En estos casos, se mantiene el acceso a la consola serie, lo que permite a los administradores interactuar con el servidor mediante la clave « Linux » de System Request ( SysRq ).

Los fallos del sistema, los errores críticos del núcleo o los procesos que no responden pueden provocar que un servidor Linux deje de estar disponible a través de los procesos habituales. Estos problemas pueden deberse a errores de software, fallos de hardware o parámetros del sistema mal configurados. La clave « SysRq » proporciona acceso de bajo nivel al núcleo « Linux » y elude los procesos de nivel superior que se han bloqueado o no responden. Este mecanismo está integrado en el núcleo de Linux como medida de seguridad para ayudar a los usuarios a realizar acciones críticas del sistema, como reiniciar el servidor u obtener información de diagnóstico, incluso cuando no se dispone de otros métodos de entrada.

Para diagnosticar y resolver el problema utilizando la clave « SysRq » desde la consola serie, sigue estos pasos:

  1. Accede a la instancia del servidor virtual conectándote a una consola serie. Para obtener más información, consulte Acceso a instancias de servidor virtual utilizando consolas de VNC o de serie.

  2. Activar comandos « SysRq ». Si los comandos « SysRq » ya están activados, puedes saltarte este paso. Para habilitar los comandos « SysRq », configura el parámetro « kernel.sysrq ».

    echo 1 > /proc/sys/kernel/sysrq
    
  3. Envía el comando « SysRq » desde la consola serie. El siguiente ejemplo inicia un volcado de memoria del núcleo (kdump).

    Para activar la generación de un volcado de memoria, asegúrate de que el servicio « crashkernel » esté configurado en la instancia del servidor virtual « Linux ». Para obtener instrucciones, consulta el mecanismo de volcado de memoria del núcleo.

    1. Pulsa la tecla Intro.

    2. Pulsa la tecla « ~ » (tilde).

      Para teclados AZERTY: pulsa la tecla Alt Gr + la tecla 2 para escribir la tecla « ~ ».

    3. Pulsa « B » (la tecla «B» mayúscula).

    4. Pulsa c (con «c» minúscula), lo que inicia un volcado de memoria del núcleo (kdump).

    Ten en cuenta lo siguiente cuando utilices comandos de « SysRq »:

    • Pulsa y suelta cada tecla por separado. No mantengas pulsada ninguna tecla.
    • Completa toda la secuencia en un plazo de cinco segundos; de lo contrario, los comandos « SysRq » no se detectarán en la consola serie.
    • Al escribir esta secuencia, los caracteres no aparecen en la consola serie. El sistema los interpreta como caracteres de secuencia de salto. La escritura normal en la consola se reanuda una vez finalizada la secuencia, o bien si esta agota el tiempo de espera o detecta un carácter no válido.
    • Si la secuencia supera el tiempo de espera (tarda más de cinco segundos) o se pulsa un carácter de secuencia de interrupción no válido, reinicia el proceso desde el paso 1.

    Ejemplo:

    ENTER + ~ + B + c
    
  4. Analiza los resultados del diagnóstico. El volcado de memoria del fallo del núcleo anterior de SysRq genera datos de diagnóstico que puedes analizar. Al enviar comandos pertinentes de SysRq, puedes recopilar datos de diagnóstico valiosos para solucionar problemas y recuperar el control del sistema.

Para ver una lista de las teclas comando de « SysRq », pulsa Intro y, a continuación, « ~Bh » (tilde, B mayúscula, h minúscula). Para obtener más información, consulta Linux Trucos para las teclas de Magic System: ¿qué son las teclas comando?