пятница, 8 марта 2013 г.

Обновление ядра без аппаратной перезагрузки сервера

Работает как на Debian-based, так и на RedHat-based дистрибутивах.

устанавливаем новое ядро и kexec-tools

apt-get install linux-image-<new_version> kexec-tools

загружаем  новое ядро

kexec -l /boot/vmlinuz-<new_version> --initrd=/boot/initrd.img-<new_version> --append="`cat /proc/cmdline`"

и запускаем

kexec -e

на какое то время машинка потеряет сеть (ориентировочно не больше минуты), но потом вновь станет доступной. Заходим и проверяем загрузилось ли новое ядро

uname -a

В результате подобной загрузки нового ядра все запущенные на сервере процессы перезапустятся.
Так же, если новое ядро после инсталляции не прописалось в /boot/grub/menu.lst или /boot/grub/grub.cfg, то exec-utils во время своей установки пропишет его туда самостоятельно наряду со всеми остальными найденными им ядрами (в любом случае стоит проверить корректность grub конфига, перед выполнением kexec -e).