Cargar un nuevo kernel sin reiniciar físicamente el servidor ( soft reboot ) con kexec

¿ Por que un soft reboot en lugar de un reboot completo ?

Los hardware de servidores profesionales no arrancan tan rápido como una laptop o una desktop, donde básicamente el después de un par de segundos del BIOS el kernel es cargado, en los servidores profesionales esta operación puede llegar a tardar de 5 a 10 minutos lo que en producción es una locura. Tarda mucho por que las maquinas servidores no dejan nada al azar, al momento de prender inmediatamente empieza a revisar la RAM, luego revisa los controladores de red, los controladores de RAID, cada disco duro y hasta que cada pieza de su hardware no es inspeccionada para un correcto funcionamiento no le pasa el control al sistema operativo

¿ que es un soft reboot ?

Cuando se actualiza un sistema operativo si lo actualizado es un kernel lo normal es que se tenga que reiniciar físicamente la maquina para que al momento del boot de hardware el nuevo kernel sea cargado, pero como se dijo en el párrafo anterior, reiniciar un hardware de servidor puede tardar minutos, para eso se hace un soft reboot, el cual básicamente regresa la maquina al punto de cargar el kernel y recarga el nuevo descargando el anterior


¿ Debo hacer soft reboot en máquinas virtuales ?

No es necesario, las maquinas virtuales inician o se reinician prácticamente de inmediato, tardaría mas escribiendo el comando de kexec con todos sus parametros, que simplemente ejecutar shutdown -r now , esto del soft reboot prácticamente está reservado para reiniciar maquinas físicas de servidores que no pueden parar ni un momento o no mas que un par de segundos

¿ puedo hacer soft reboot en cualquier servidor físico ?

De poder… puede, pero depende la misión del servidor, no hay que dejar de lado que aunque es soft reboot es un reboot muy rápido no deja de ser un reboot y eso significa que dejaran de funcionar bases de dato, servidores web y cualquier servicio que este servidor físico este dando. Para servidores que no se pueden detener ni siquiera por unos breves segundos hay soluciones como el kpatch, los cuales en vivo y caliente parchan vulnerabilidades que no requieren siquiera reiniciar el kernel y lo hacen en vivo y en producción.

Hacer un soft reboot con kexec

Para hacer un soft reboot se requiere tener 3 cosas a la mano, 2 archivos y la línea de arranque del kernel anterior pues en esta línea esta la partición que fue tomada como root, los 2 archivos son el nuevo kernel y su ramdisk. Estos archivos se encuentran en la partición de /boot en la mayoría de las distribuciones y la línea de arranque o comand line se puede recuperar de las configuraciones de grub o de archivo /proc/cmdline

Cargar en memoria RAM el nuevo kernel

kexec -l /boot/vmlinuz –initrd=/boot/initrd.img –command-line=”$( cat /proc/cmdline )”

Ejecutar el kernel cargado

kexec -e

Video manual del artículo.

Add a Comment

Comment spam protected by SpamBam