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

30 августа 2011 г.

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

Centos логотип
Описание

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 остается единственным механизмом, позволяющим свести к минимуму время простоя сервера. Однако, это не единственная его возможность.

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

Теги: рубрика Linux
  • Похожие статьи
  • Предыдущие из рубрики