Обновление Linux теперь без перезагрузки

archive view archive save

tux-logo С выходом ядра Linux 4.0 пропадает последний повод выполнять перезагрузку рабочих станций или серверов. Среди иных, внедрённых в новое ядро, функций, — фича «горячей» установки заплаток (patch-ей) без необходимости перезагрузки, т.е. накатывание обновлений на работающую ОС, что даёт возможность годами поддерживать непрерывную работу.

Подобная методика для обновления Linux была изобретена компанией Ksplice (Oracle Ksplice - https://www.ksplice.com/) ещё в 2009 году, которая в 2011 году была куплена компанией Oracle. Эта функция входила в состав платного пакета подписки Red Hat Enterprise Linux (RHEL), а также была и в Oracle Linux. Разработчикам же всех прочих дистрибутивов Linux оставалось лишь смотреть и сгорать от зависти.

Процесс Ksplice сверяет новую и старую и версии ядра, а затем, дабы имплементировать новый код прямо в работающем ядре, применяет специфический модуль. Дабы операция прошла гладко, обновления для каждой обновляемой функции помечаются специфическими флагами. Ksplice дожидается мгновения, когда помеченная для обновления функция не используется, и только тогда выполняет обновление.

Над созданием свободной версии подобного процесса, независимо друг от друга трудились программисты из компании SUSE и Red Hat, в результате чего возникло две альтернативы, - одна из которых носит название kpatch (от Red Hat - http://www.zdnet.com/article/no-reboot-patching-comes-to-linux-4-0/ - https://github.com/dynup/kpatch), а вторая — kGraft (от SUSE - http://www.zdnet.com/article/suse-gets-live-patching/ - https://www.suse.com/promo/kgraft.html), при этом методы реализации у них разные.

kpatch использует команду stop_machine(), потом исследует перечень процессов при помощи ftrace (http://elinux.org/Ftrace) и, в если есть шансы безопасно установить заплатки (patch), применяет патч и переводит процесс на уже новый код, после чего удаляет старый.

Процесс обновления при помощи kpatch занимает в пределах от 1 до 40 миллисекунд, а kGraft может понадобиться пару минут, но при этом kGraft не допускает ни миллисекунды отключки (даунтайм, downtime).

Начиная с октября 2014 года SUSE и Red Hat совместно работали над интегрированной системой, которая бы совмещала в себе все положительные качества kGraft и kpatch. Управились они как раз к выходу первого релиз-кандидата Linux 4.0, который вышел пару дней назад. Исходный код можно получить по этой ссылке: https://kernel.googlesource.com/pub/scm/linux/kernel/git/jikos/livepatching/+/9ec0de0ee0c9f0ffe4f72da9158194121cc22807


Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Комментарии в блоге
Новое на форуме