Skip to main content

Redémarrer une machine virtuelle rapidement avec Kexec

Pour démarrer une machine virtuelle elle a besoin de booter sur un Bios virtuelle puis sur le Grub (pour Linux) qui démarre ensuite le système. 

Dans le cadre de nos cluster de machine virtuelle avec des services qui tourne en prod, il nous faut le moins de temps possible pour redémarrer ces machines pour que l'utilisateur est le moins de dommage. 
Le cas assez spécifique d'un redémarrage d'une machine virtuelle est quand on y fait des mises a jours. Quand il y'a une mise a jour de kernel Linux nous n'avons pas le choix que de redémarrer pour qu'il soit pris en compte.

C'est ici qu'intervient Kexec. Il permet de redémarrer la machine sans passer par le Bios et Grub. Il fait un simple reload du système avec l'intégration de notre nouveau kernel. 

Dans la pratique quand on tape dnf update dans un Rocky Linux ou un apt update dans un Debian nous voyons un nouveau Kernel. 

Capture d’écran 2022-08-08 à 11.31.09.png

Kernel actuelle

Capture d’écran 2022-08-08 à 11.35.03.png

Kernel qui va être installer avec la mise a jour

Mais avant de faire la mise a jour on va installer Kexec et on lance la mise a jour du système après.

dnf install kexec-tools

et on lance cette commande pour que Kexec redémarre la machine avec le même kernel

#Pour Rocky
kexec -l /boot/vmlinuz-$(uname -r) --initrd=/boot/initramfs-$(uname -r).img --reuse-cmdline

et on tape la commande reboot

Si on veux downgrader ou upgrade une version de kernel on lance la commande

#Pour Rocky
kexec -l /boot/vmlinuz-4.18.0-372.9.1.el8.x86_64 --initrd=/boot/initramfs-4.18.0-372.9.1.el8.x86_64.img --reuse-cmdline

puis on tape la commande reboot pour appliquer le nouveau kernel.