Вышел открытый проект kmorph для быстрого восстановления после сбоя или обновления ядра Linux без перезагрузки

Команда разработчиков проекта Multikernel представили открытый проект под названием kmorph. Это решение для быстрого восстановления после аварийной остановки ядра Linux. Также этот инструмент предназначен для замены ядра Linux в Live‑режиме без полноценной перезагрузки.
Проект kmorph развивает сопровождающий подсистему управления трафиком (TC, Traffic Control) в ядре Linux Конг Ванг (Cong Wang).
Метод быстрого перезапуска в решении основан на предварительной загрузке в память запасного ядра Linux, которым подменяется основное рабочее ядро в случае сбоя или при необходимости замены ядра на новую версию.
По информации OpenNET, предложенный в kmorph подход позволяет обойтись без полноценной перезагрузки ядра и почти мгновенно возобновить работу ПК, сведя к минимуму время простоя. В настоящее время в случае аварийной остановки работы ядра Linux полная перезагрузка ПК или серверов занимает до нескольких минут из‑за длительных процессов инициализации оборудования, загрузки системного окружения и сохранения дампа памяти ядра через механизм kdump. По сути при использовании kdump выполняется две перезагрузки ядра — вначале через kexec загружается отдельный экземпляр ядра для сохранения дампа памяти, после чего выполняется загрузка рабочего ядра и запуск системных сервисов.
При использовании kmorph в привязке к отдельному ядру процессора в память заранее загружается запасное ядро Linux и минимальное системное окружение, которое отслеживает состояние основного ядра. В случае зависания или впадение в состояние паники (panic) основного ядра, запасное окружение берёт управление на себя, сохраняет дамп памяти сбойного ядра, переключает на себя процессорные ядра, память, устройства, сетевую конфигурацию и файловую систему.
Переключение координируется при помощи двух программных инструментов:
kmorph — запускается в активном окружении, формирует начинку запасного окружения и синхронизирует в нём состояние сети;
kmorphd — запускается в запасном окружении и отслеживает состояние активного окружения.
Помимо переключения в случае аварии, в kmorph предоставляется возможность использования решения для обновления ядра без традиционной перезагрузки. Для ускорения восстановления в запасном окружении помимо ядра и минимального набора системных компонентов в режиме ожидания в kmorph могут запускаться типовые сервисы, такие как nginx. В этом случае в момент активации запасного окружения сервис nginx уже будет загружен в память и сразу начнёт обрабатывать запросы после переключения в новое окружения сетевой карты, активации сетевой конфигурации и смены корневой ФС.
В проведённых разработчиками тестах kmorph сервер с nginx возобновляет работу примерно через две секунды после сбоя ядра. В будущем в команде проекта намерены добиться мгновенного переключения незаметно для подключённых клиентов.
В настоящее время в kmorph поддерживаются архитектуры x86_64 и ARM64, а также ведётся работа над поддержкой RISC‑V. Интеграция kmorph в дистрибутивы Linux осуществляется по аналогии с поддержкой kdump, через штатные инструменты dracut, initramfs‑tools, kernel‑install и сервис systemd.
В состав ядра Linux уже входят механизмы Kexec HandOver (KHO) и Live Update Orchestrator (LUO), позволяющие запускать новое ядро из старого без потери состояния системы и без остановки работы устройств. Но они не могут применяться в случае сбоя в ядре, так как требуют для сохранения состояния работающего ядра. KHO и LUO также отстают от kmorph по скорости переключения из‑за того, что в kmorph новое ядро уже находится в памяти, а KHO и LUO требуют перезагрузки ядра через kexec.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.