Разработчики проекта Multikernel, позволяющего на одном физическом компьютере выполнять несколько независимых экземпляров ядра без гипервизора и виртуализации, представили инструментарий kmorph, реализующий средства для быстрого восстановления после аварийной остановки ядра Linux или для замены ядра в Live-режиме без полноценной перезагрузки. Проект развивает Конг Ванг (Cong Wang), сопровождающий подсистему управления трафиком (TC, Traffic Control) в ядре. Метод быстрого перезапуска основан на предварительной загрузке в память запасного ядра, которым подменяется основное рабочее ядро в случае сбоя или при необходимости замены ядра на новую версию.
Предложенный подход позволяет обойтись без полноценной перезагрузки и почти мгновенно возобновить работу, сведя к минимуму время простоя. В настоящее время в случае аварийной остановки работы ядра полная перезагрузка крупных серверов занимает несколько минут из-за длительных процессов инициализации оборудования, загрузки системного окружения и сохранения дампа памяти ядра через механизм kdump. По сути при использовании kdump выполняется две перезагрузки ядра - вначале через kexec загружается отдельный экземпляр ядра для сохранения дампа памяти, после чего выполняется загрузка рабочего ядра и запуск системных сервисов.
В случае применения kmorph в привязке к отдельному ядру CPU в память заранее загружается запасное ядро Linux и минимальное системное окружение, которое отслеживает состояние основного ядра. В случае зависания или впадение в состояние panic основного ядра, запасное окружение берёт управление на себя, сохраняет дамп памяти сбойного ядра, переключает на себя процессорные ядра, память, устройства, сетевую конфигурацию и ФС.
Переключение координируется при помощи двух программ: kmorph - запускается в активном окружении, формирует начинку запасного окружения и синхронизирует в нём состояние сети; kmorphd - запускается в запасном окружении и отслеживает состояние активного окружения. Помимо переключения в случае аварии, предоставляется возможность использования kmorph для обновления ядра без традиционной перезагрузки. Для ускорения восстановления в запасном окружении помимо ядра и минимального набора системных компонентов в режиме ожидания могут запускаться типовые сервисы, такие как nginx. В этом случае в момент активации запасного окружения сервис nginx уже будет загружен в память и сразу начнёт обрабатывать запросы после переключения в новое окружения сетевой карты, активации сетевой конфигурации и смены корневой ФС.
В проведённых тестах сервер с nginx при помощи kmorph возобновляет работу примерно через 2 секунды после сбоя ядра, но в будущем намерены добиться мгновенного переключения незаметно для подключённых клиентов. В настоящее время в kmorph поддерживаются архитектуры x86_64 и ARM64, а также ведётся работа над поддержкой RISC-V. Интеграция kmorph в дистрибутивы Linux осуществляется по аналогии с поддержкой kdump, через штатные инструменты dracut, initramfs-tools, kernel-install и сервис systemd.
В состав ядра уже входят механизмы Kexec HandOver (KHO) и Live Update Orchestrator (LUO), позволяющие запускать новое ядро из старого без потери состояния системы и без остановки работы устройств. Но они не могут применяться в случае сбоя в ядре, так как требуют для сохранения состояния работающего ядра. KHO и LUO также отстают от kmorph по скорости переключения из-за того, что в kmorph новое ядро уже находится в памяти, а KHO и LUO требуют перезагрузки ядра через kexec.
Источник: https://www.opennet.ru/opennews/art.shtml?num=66643
(opennet.ru, основная лента)
[ON] Представлен kmorph для быстрого восстановления после сбоя или обновления ядра Linux
Модератор: Модераторы разделов
-
rssbot
- Бот
- Сообщения: 6000
- ОС: gnu/linux