Osegi
Софт·2 мин чтения

kmorph: открытый инструмент восстанавливает ядро Linux за 2 секунды

Команда Multikernel выпустила открытый проект kmorph: запасное ядро Linux подменяет основное при сбое или обновлении, и сервер возобновляет работу примерно за две секунды.

Server rack with a terminal showing a Linux kernel switching to a standby kernel after a crash.
Фото: Хабр

Команда проекта Multikernel представила открытый инструмент kmorph для быстрого восстановления после аварийной остановки ядра Linux. Он также позволяет заменять ядро на работающей системе без полной перезагрузки. В тестах разработчиков сервер с nginx возобновляет работу примерно через две секунды после сбоя ядра.

Проект развивает Конг Ванг (Cong Wang), сопровождающий подсистему управления трафиком (TC, Traffic Control) в ядре Linux.

Как работает запасное ядро

Сейчас после аварийной остановки ядра полная перезагрузка компьютера или сервера может занимать до нескольких минут: нужно инициализировать оборудование, загрузить системное окружение и сохранить дамп памяти через kdump. По сути kdump означает две загрузки ядра: сначала через kexec запускается отдельный экземпляр для сохранения дампа, затем загружаются рабочее ядро и системные сервисы.

kmorph действует иначе. Запасное ядро и минимальное окружение заранее загружаются в память, привязываются к отдельному ядру процессора и следят за состоянием основного. Если оно зависает или впадает в состояние паники (panic), запасное окружение берёт управление на себя, сохраняет дамп памяти сбойного ядра и переключает на себя процессорные ядра, память, устройства, сетевую конфигурацию и файловую систему.

Переключением заняты два компонента: kmorph запускается в активном окружении, формирует содержимое запасного и синхронизирует с ним состояние сети; kmorphd работает в запасном окружении и отслеживает активное. В режиме ожидания там можно держать типовые сервисы, например nginx: он уже загружен в память и начинает обрабатывать запросы сразу после смены сетевой карты, активации сетевой конфигурации и корневой ФС.

Обновления и поддержка

Тот же подход годится для обновления ядра без привычной перезагрузки. В ядре Linux уже есть механизмы Kexec HandOver (KHO) и Live Update Orchestrator (LUO), но при сбое они неприменимы, так как требуют состояния работающего ядра. Кроме того, они медленнее: им нужна загрузка нового ядра через kexec, тогда как в kmorph оно уже в памяти.

Сейчас поддерживаются x86_64 и ARM64, ведётся работа над RISC-V. Интеграция в дистрибутивы устроена по аналогии с kdump — через dracut, initramfs-tools, kernel-install и systemd. В будущем авторы хотят добиться мгновенного переключения, незаметного для подключённых клиентов.

Приложения, на которые стоит взглянуть

SUMO: числовая головоломка

Выбирайте нужные клетки, складывайте, достигайте цели. Легко понять, сложно освоить. Бесплатно, для любого возраста.

Теги:linuxkmorphmultikernelkernelkdumpopen source

Ещё за этот день

Показать все →

Ещё в рубрике: Софт

Показать все →