The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Использование kexec для быстрой перезагрузки Linux

17.10.2008 09:39

"Reboot like a racecar with kexec" - демонстрация использования kexec для быстрой перезагрузки Linux (загружается новая копия ядра из уже работающего, без фазы с участием BIOS).

Следует заметить, что в состав Linux ядра 2.6.27 были включены дополнительные патчи к kexec, с реализацией режима мгновенного засыпания Linux машины со сбросом дампа состояния на диск, основанной на использовании системного вызова kexec. Метод отличается от текущих подсистем uswsusp и suspend2 минимальным размером сохраняемого образа памяти и возможностью сброса дампа на любой носитель (например USB Flash или NFS раздел).

  1. Главная ссылка к новости (http://www.linux.com/feature/1...)
  2. OpenNews: Новый подход для мгновенного засыпания Linux
  3. OpenNews: Выпущен релиз Linux ядра 2.6.27. Обзор новшеств
Лицензия: CC-BY
Тип: английский / Практикум
Короткая ссылка: https://opennet.ru/18458-kexec
Ключевые слова: kexec, linux
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, bartman (??), 10:47, 17/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно
     
  • 1.2, Painbringer (?), 11:37, 17/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а типа сервисы глушить уже не надо? эдак после такой лихой перезагрузки ченть не взлетить запросто.
     
     
  • 2.3, Andrey Mitrofanov (?), 11:49, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >а типа сервисы глушить уже не надо?

    Надо. "А почему Вы спрашиваете?"

     
  • 2.4, wyldrodney (ok), 11:50, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    А чего там глушить? На десктопе, ИМО, и так сойдёт: если даже эти сервисы будут перезапускаться, то rm -rf {/,var/}tmp/* && rm -rf /var/run/* при загрузке спасёт... :)
     
     
  • 3.6, Painbringer (?), 12:43, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    ну как я понимаю автор предлагает это на сервере делать типа шоб быстрее ребутнуть незаметненько допустим после апдейта ядра.
     

  • 1.5, andr.mobi (??), 12:10, 17/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    IMHO
    Засыпание с остановкой сервисов - это не засыпание, а "быстрая остановка"
    Юзеру после просыпания требуется начать с того же самого места, где уснули.
    Надо бы не только ядро на энергонезависимый носитель сбрасывать, но и всё ОЗУ.
    Лучше всего надо твердотельный диск, Disk-On-Chip. 2 гигабайта ОЗУ на HDD за секунду-две не отзеркалишь.
     
     
  • 2.10, Andrey Mitrofanov (?), 14:38, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >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.". Девелоперы объединили два коуд-паса, используемые при совершенно разных обстоятельствах.

    В общем мало кто понимает, о чём разговор, да и мало кому оно надо. %)

     
     
  • 3.13, User294 (ok), 23:40, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >В общем мало кто понимает, о чём разговор, да и мало кому
    >оно надо. %)

    Разбираться в том что там Andr пишет влом, т.к. он видимо как всегда снялся с тормоза и видимо обнаружил что то о чем он подумал уже сделано в линуксах оказывается :)

    А вот suspend\resume через kexec имхо довольно изящное решение и на мое имхо это несколько более полезное применение функции чем турбо-реактивный ребут с пропуском BIOS-а.Современные BIOS часто имеют режим ускоренного теста когда загрузка системы начинается через несколько секунд после включения (насколько хорошая идея врубить этот режим на сервере тот еще вопрос, но с kexec то BIOS будет вообще оставлен не у дел :D).

     
     
  • 4.14, oxyum (ok), 11:42, 19/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Современные BIOS часто имеют режим ускоренного теста
    > когда загрузка системы начинается через несколько секунд после включения

    Ага, особенно на брэндовых серваках...

     

  • 1.7, Аноним (7), 13:11, 17/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даже не читая новости, должно быть понятно, что старый линукс выгружается, завершает сервисы и загружается снова менеджер загрузки ОС.
    Просто не переинициализируется оборудование и не проверяется его работоспособность.

    Это может быть очень полезным на серверах с кучей различных контроллеров, которые оттягивают загрузку ядра на пару минут с момента включения.
    Особенно досадно это на тех серверах, которые загружают не конечный сервис, а виртуальные машины, на которых и будут крутиться конечные сервисы.
    Сервис становится недоступным не на 10 минут, а на 5. Примерно так. ;-)

     
     
  • 2.8, wyldrodney (ok), 14:02, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    "kexec -e" останавливает сервисы?
    Расскажите, если не сложно, сейчас посмотреть не могу ):
     
     
  • 3.11, Andrey Mitrofanov (?), 14:54, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >"kexec -e" останавливает сервисы?
    >Расскажите, если не сложно, сейчас посмотреть не могу ):

    Подробнее - скрипт автор статьи прописал в .../init-чего-то-там, чтобы он вызывался при "штатной" (предположительно - в конце) перезагрузке. Когда все сервисы остановлены, соответственно.

    kexec делает перезагрузку не через сброс машины и запуск БИОС-а "как по C-A-D", а просто грузится в память "новое" ядро со всеми параметрами-инит-дисками (кстати, тема костылей с grub-ом/lilo в статье не раскрыта...) и запускает его, "отдавая" ему машину и "освобождая" старое ядро. (Аналогия с директивой exec шела: запускаемая программа занимает место шела в памяти и выполняется, шел выгружается из памяти _до_ запуска программы.) Экономия на POST БИОС-а и устройств (как здесь и написали), риск - новое ядро получает "не совсем" сброшенные устройства (как и написано в статье) = с _кривыми_ драйверами может не "взлететь".

     

  • 1.9, Аноним (7), 14:25, 17/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    kexec -e вызывает панику а а она уже идет как обычная перезагрузка, то есть отключаются инит скрипты и вронце вместо хардварной презагрузки просто прыгает на старт нового ядра.
     
  • 1.12, Аноним (12), 23:16, 17/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    попробовал на десктопе - быстро и сервисы останавливаются (в ответ многим). сделал у себя на домашней файлопомойке :) мало ли...
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру