Представен kmorph за бързо възстановяване след срив или актуализация на ядрото на Linux

Разработчиците на проекта 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.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster