[TIP] Sobreviviendo a un kernel panic remoto.

No son leyenda urbana. Los kernel panics existen…

Mientras el hardware esté sano, linux no falla, pero ¿Y si el hardware falla? ¿Y si falla en un servidor al cual no tenemos acceso físico? En esos casos es vital que la pc o el servidor remoto reinicien automáticamente después de un kernel panic.

El kernel de linux por defecto no reinicia el sistema en caso de un kernel panic de forma de que sea accesible por pantalla el volcado de memoria y el error específico, y esto no siempre es lo que se necesita (sobre todo si el sistema remoto no tiene un monitor instalado o no hay nadie presente físicamente en el lugar).

Para lograr que el kernel reinicie el sistema en caso de un kernel panic hay que modificar el contenido del archivo /proc/sys/kernel/panic:

~ # echo 5 >> /proc/sys/kernel/panic

Donde 5 es la cantidad de segundos que queremos esperar antes de que se produzca el reinicio del sistema.

Verificando el contenido del archivo:

~ # cat /proc/sys/kernel/panic

5

De esta forma el cambio de aplica de manera inmediata, pero como el contenido del archivo panic es volatil, los cambios se pierden luego del primer reinicio del sistema operativo.

Para que el cambio sea efectivo de forma permanente hay que implementarlo sobre el archivo /etc/sysctl.conf descomentariando la siguiente línea:

# When the kernel panics, automatically reboot in 3 seconds
#kernel.panic = 3

O bien, pasarle el parametro en cuestión al kernel durante el arranque desde el boot loader, por ejemplo, agregando panic=5 a /boot/grub/menu.lst:

kernel /boot/kernel root /dev/sda1 panic=5

Usando la combinación de el parámetro panic con la opción fallback de grub  es posible por ejemplo, testear un nuevo kernel de manera remota, de esta forma, en caso de un kernel panic arrancando un nuevo kernel grub puede arrancar al segundo intento desde un kernel viejo, sistema de archivos viejo, etc, etc, pero eso es tema para otro artículo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *