"Reboot like a racecar with kexec (http://www.linux.com/feature/150202)" - демонстрация использования kexec для быстрой перезагрузки Linux (загружается новая копия ядра из уже работающего, без фазы с участием BIOS).Следует заметить, что в состав Linux ядра 2.6.27 были включены дополнительные патчи к kexec, с реализацией режима мгновенного засыпания Linux машины со сбросом дампа состояния на диск, основанной на использовании системного вызова kexec. Метод отличается от текущих подсистем uswsusp и suspend2 минимальным размером сохраняемого образа памяти и возможностью сброса дампа на любой носитель (например USB Flash или NFS раздел).
URL: http://www.linux.com/feature/150202
Новость: http://www.opennet.me/opennews/art.shtml?num=18458
Интересно
а типа сервисы глушить уже не надо? эдак после такой лихой перезагрузки ченть не взлетить запросто.
>а типа сервисы глушить уже не надо?Надо. "А почему Вы спрашиваете?"
А чего там глушить? На десктопе, ИМО, и так сойдёт: если даже эти сервисы будут перезапускаться, то rm -rf {/,var/}tmp/* && rm -rf /var/run/* при загрузке спасёт... :)
ну как я понимаю автор предлагает это на сервере делать типа шоб быстрее ребутнуть незаметненько допустим после апдейта ядра.
IMHO
Засыпание с остановкой сервисов - это не засыпание, а "быстрая остановка"
Юзеру после просыпания требуется начать с того же самого места, где уснули.
Надо бы не только ядро на энергонезависимый носитель сбрасывать, но и всё ОЗУ.
Лучше всего надо твердотельный диск, Disk-On-Chip. 2 гигабайта ОЗУ на HDD за секунду-две не отзеркалишь.
>IMHO
>Засыпание с остановкой сервисов - это не засыпание, а "быстрая остановка"В "лучших" :-( традициях последнего времени на ОпенНЕТ там навирху-^^^^^ свалено в кучу два независимых сообщения: 1/ смотрите, статья про ускорение перезагрузки с помощью kexec; 2/ а ещё (я слышал звон, что) механизмы kexec использовались для реализации нового подхода к suspend-to-disk, включённой http://lwn.net/Articles/242107/ в распоследнее релизное ядро. В 1/ про перезагрузку, в 2/ совсем не про.
Так что "засыпание" и "остановка сервисов [при перезагрузке]" так и не встретились?
Возможно путаница возникла из-за "2. The same code path is used for both kexec a new kernel and jump back to original kernel.". Девелоперы объединили два коуд-паса, используемые при совершенно разных обстоятельствах.
В общем мало кто понимает, о чём разговор, да и мало кому оно надо. %)
>В общем мало кто понимает, о чём разговор, да и мало кому
>оно надо. %)Разбираться в том что там Andr пишет влом, т.к. он видимо как всегда снялся с тормоза и видимо обнаружил что то о чем он подумал уже сделано в линуксах оказывается :)
А вот suspend\resume через kexec имхо довольно изящное решение и на мое имхо это несколько более полезное применение функции чем турбо-реактивный ребут с пропуском BIOS-а.Современные BIOS часто имеют режим ускоренного теста когда загрузка системы начинается через несколько секунд после включения (насколько хорошая идея врубить этот режим на сервере тот еще вопрос, но с kexec то BIOS будет вообще оставлен не у дел :D).
> Современные BIOS часто имеют режим ускоренного теста
> когда загрузка системы начинается через несколько секунд после включенияАга, особенно на брэндовых серваках...
Даже не читая новости, должно быть понятно, что старый линукс выгружается, завершает сервисы и загружается снова менеджер загрузки ОС.
Просто не переинициализируется оборудование и не проверяется его работоспособность.Это может быть очень полезным на серверах с кучей различных контроллеров, которые оттягивают загрузку ядра на пару минут с момента включения.
Особенно досадно это на тех серверах, которые загружают не конечный сервис, а виртуальные машины, на которых и будут крутиться конечные сервисы.
Сервис становится недоступным не на 10 минут, а на 5. Примерно так. ;-)
"kexec -e" останавливает сервисы?
Расскажите, если не сложно, сейчас посмотреть не могу ):
>"kexec -e" останавливает сервисы?
>Расскажите, если не сложно, сейчас посмотреть не могу ):Подробнее - скрипт автор статьи прописал в .../init-чего-то-там, чтобы он вызывался при "штатной" (предположительно - в конце) перезагрузке. Когда все сервисы остановлены, соответственно.
kexec делает перезагрузку не через сброс машины и запуск БИОС-а "как по C-A-D", а просто грузится в память "новое" ядро со всеми параметрами-инит-дисками (кстати, тема костылей с grub-ом/lilo в статье не раскрыта...) и запускает его, "отдавая" ему машину и "освобождая" старое ядро. (Аналогия с директивой exec шела: запускаемая программа занимает место шела в памяти и выполняется, шел выгружается из памяти _до_ запуска программы.) Экономия на POST БИОС-а и устройств (как здесь и написали), риск - новое ядро получает "не совсем" сброшенные устройства (как и написано в статье) = с _кривыми_ драйверами может не "взлететь".
kexec -e вызывает панику а а она уже идет как обычная перезагрузка, то есть отключаются инит скрипты и вронце вместо хардварной презагрузки просто прыгает на старт нового ядра.
попробовал на десктопе - быстро и сервисы останавливаются (в ответ многим). сделал у себя на домашней файлопомойке :) мало ли...