viernes, 11 de febrero de 2011

SysRq: Cuando el sistema se cuelga

Todos los que utilizamos alguna distribución GNU/Linux sabemos de lo que disfrutamos. Un sistema operativo estable y seguro. A pesar de lo ciertas que son estas características, no menos cierto es que los problemas existen y están ahí a la espera de salir a flote. Desde un proble de incompatibilidad con hardware, un kernel panic o hasta un proceso que consuma memoria excesiva y lleve el sistema a un swapping prolongado, no sabemos qué podría suceder que lo lleve a colgarse. Esto nos lleva a pensar que la única salida es cortar la energía de golpe, ya sea desconectando el cable o haciendo un reset.

No obstante, para los casos en que se puede hacer algo menos catastrófico para nuestros datos, contamos con la "tecla mágica" SysRq (Pet Sis en los teclados en español), la cual nos permite sincronizar la data a nuestro disco y manejar el reinicio del sistema caído, entre otras cosas.

¿Qué es realmente la tecla SysRq? Es un conjunto mágico de teclas que podemos utilizar para que el Kernel responda sin tener en cuenta cualquier cosa que estuviera haciendo previamente, a menos que esté realmente bloqueado.
Habilitar SysRq en nuestro sistema

Los que compilan su propio Kernel deben asegurarse de que ‘Magic SysRq key (CONFIG_MAGIC_SYSRQ)’ tenga un 'yes' cuando lo estén configurando. Cuando tenemos un Kernel compilado con SysRq, el fichero /proc/sys/kernel/sysrq controla las funciones permitidas cuando las invocamos vía la tecla SysRq.

En Ubuntu/Debian y distros basadas en Red Hat, SysRq es compilado pero no habilitado, por lo que debemos habilitarlo de forma permanente:

En Ubuntu – Debian:
$ sudo nano /etc/sysctl.conf

En Red Hat – Fedora – CentOS:
$ su -c 'vi /etc/sysctl.config'

En ambos casos debemos dar por valor 1 a la variable kernel.sysrq:

kernel.sysrq = 1

Utilizando SysRq

Algunos fabricantes de teclados no poveen sus teclados con la tecla SysRq. En estos casos, una tecla llamada “Print” debería de estar presente. En entornos gráficos como Gnome o KDE, ‘Alt’+'PrintScrn(ImprPant)/SysRq(PetSis)’+combinación de teclas, generalmente conduce a una captura de pantalla (screenshot). Para evitar esto la combinación debe hacerse adicionando la tecla Ctrl, siendo entonces: ‘Ctrl’+'Alt’+'SysRq’+combinación de teclas. En otros casos y en teclados más modernos, existe la tecla AltGr en estos, y es mi caso, se hace así: AltGr+SysRq+combinación de teclas.

Combinaciones de teclas

Esta documentación se encuentra en las fuentes del Kernel, específicamente en Documentation/sysrq.txt. Estas son algunas de las teclas más utilizadas:

‘b’ – Reinicia el sistema sin sincronizar o desmontar los discos.

‘o’ – Apaga el sistema (si está configurado y soportado).

‘s’ – Intenta sincronizar todos los sistemas de archivos montados.

‘u’ – Intenta remontar todos los sistemas de archivos en sólo lectura.

‘p’ – Volcará los registros y flags actuales a la consola.

‘t’ – Volcará una lista de las tareas actuales y su información a consola.

‘m’ – Volcará la información de la memoria a consola.

‘e’ – Envía la señal SIGTERM a todos los procesos, excepto a init.

‘i’ – Envía la señal SIGKILL a todos los procesos, excepto a init.

‘l’ – Muestra un stack backtrace para todos los CPUs activos.

Uso común

En inglés una forma común de realizar un reinicio seguro y recordar la combinación efectivamente es con estas frases, “Raising Elephants Is So Utterly Boring”, “Reboot Even If System Utterly Broken” o simplemente memorizando la palabra  “BUSIER” al revés, lo que resulta útil. Esto significa: 

unRaw (retomar el control del teclado desde X)
 tErminate (enviar un SIGTERM a todos los procesos)
 kIll (enviar un SIGKILL a todos los procesos)
  Sync (sincronizar los datos al disco)
  Unmount (remontar todos los sistemas de archivos como solo lectura)
reBoot

Esto previene que un fsck sea requerido al reiniciar y le da a algunos programas el chance de hacer backups de emergencia de trabajos no guardados.

En la práctica, cada comando requiere unos cuantos segundos para ser completado, específicamente si la retroalimentación no está disponible desde la pantalla debido al cuelgue o problemas de pantalla. Por ejemplo, enviar un SIGKILL a los procesos que aun no han terminado puede causar pérdida de datos.


Fuente: Linuxaria | Referencias: Linux Documentation, Wikipedia


Artículos relacionados



Widget by Hoctro | Jack Book

0 comments:

Publicar un comentario