Skip to content

Latest commit

 

History

History
50 lines (26 loc) · 3.32 KB

Быстрая перезагрузка Linux на примере CentOS.md

File metadata and controls

50 lines (26 loc) · 3.32 KB

Быстрая перезагрузка Linux на примере CentOS

Предисловие

Бывает так, что останавливать работу сервера даже на несколько минут критично. Раньше на помощь приходил сервис Ksplice, позволяющий без перезагрузки обновлять ядро. В июле этого года компания Oracle купила Ksplice и лишила поддержки часть дистрибутивов, в числе прочих оказался CentOS. Теперь обновить ядро без перезагрузки нельзя, но сократить время простоя можно, и в этом нам поможет kexec.

Описание

Kexec — механизм ядра, позволяющий загрузить новое ядро «поверх» уже запущенного. Kexec пропускает выполнение аппаратной инициализации (BIOS) и передаёт управление новому ядру.

Kexec состоит из двух частей: пользовательская часть и часть, описанная в ядре. В стоковом ядре CentOS уже имеется поддержка kexec, для других ядер нужно активировать CONFIG_KEXEC=y.

Действие

Итак, первым делом устанавливаем kexec-tools.
#yum install kexec-tools

Загружаем новое ядро.
#yum update kernel

Для загрузки нового ядра в ручном режиме нужно:
Загрузить новое ядро в память
#kexec -l kernel.img --initrd=initrd
Например
#kexec -l /boot/vmlinuz-2.6.18-274.3.1.el5 --initrd=/boot/initrd-2.6.18-274.3.1.el5.img
Так же можно указать дополнительные опции ядра через опцию --append.

Выполнить загрузку нового ядра
#kexec -e

После ввода последней команды система сразу же перезагрузится, однако стоит учесть, что kexec не останавливает работающие демоны, и об этом придётся позаботиться самому.

Спустя некоторое время получаем рабочую систему с новым ядром и обнулённым аптаймом.У меня время такой перезагрузки заняло примерно 15 секунд. Все сервисы поднялись и успешно выполняли свои задачи.

Заключение

Таким образом, kexec остается единственным механизмом, позволяющим свести к минимуму время простоя сервера. Однако, это не единственная его возможность.

Подробнее о механизме можно почитать здесь.


kexec