После установки Linux 4.0 исчезнет последняя причина перезагружать твой сервер или ПК. Среди функций, которые внедрили в новое ядро, — процедура «горячей» установки патчей на работающую ОС. Так что сервер может годами поддерживать аптайм.

На самом деле такая технология разработана для Linux ещё в 2009 году компанией Ksplice, которую в 2011 году приобрела Oracle. Функция была в Oracle Linux, а также входила в пакет платной подписки Red Hat Enterprise Linux (RHEL). Разработчикам всех остальных дистрибутивов оставалось только смотреть и завидовать. До настоящего момента.

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

003

Разработчики из Red Hat и SUSE независимо друг от друга работали над созданием свободной реализации такого процесса. В прошлом году они закончили работу, так что у нас появилось две альтернативных технологии. Вариант от Red Hat называется kpatch, а от SUSE — kGraft, причём и работают они по-разному.

Kpatch задействует команду stop_machine(), изучает список процессов с помощью ftrace и, в случае возможности безопасной установки патча, переводит процесс на новый код, затем удаляя старый.

В kGraft тоже используется ftrace, но на уровне тредов, переводя вызов к старой функции на новый код.

Процедура обновления с помощью Kpatch занимает от 1 до 40 миллисекунд, а kGraft может потребоваться несколько минут, но зато она не допускает ни миллисекунды даунтайма.

С октября 2014 года Red Hat и SUSE вместе трудились над интегрированной системой, которая бы сочетала преимущества kpatch и kGraft. Они управились аккурат к первому релиз-кандидату Linux 4.0 несколько дней назад. Исходный код здесь.

Подписаться
Уведомить о
17 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии