Udviklerne af projektet Multikernel, der muliggør kørsel af flere uafhængige kernesektioner på en enkelt fysisk computer uden hypervisor og virtualisering, har præsenteret værktøjet kmorph, som implementerer midler til hurtig genopretning efter en kernel-crash eller til udskiftning af kernen i live-tilstand uden en fuldstændig genstart. Projektet ledes af Cong Wang, som vedligeholder trafikstyringssystemet (TC, Traffic Control) i kernen. Metoden til hurtig genstart er baseret på forudindlæsning af et backup-kernel i hukommelsen, som erstatter den primære arbejdskerne i tilfælde af fejl eller behov for at opgradere til en ny version.
Den foreslåede tilgang gør det muligt at undgå en fuldstændig genstart og næsten øjeblikkeligt genoptage driften, hvilket minimerer nedetiden. I øjeblikket kræver en kernel-crash en fuld genstart af større servere systemer, hvilket tager flere minutter på grund af de lange processer til hardwareinitialisering, indlæsning af systemmiljøet og gemning af en kernel-dump via kdump-mekanismen. Faktisk udfører brugen af kdump to genstarter af kernen — først indlæses en separat kernelversion via kexec for at gemme hukommelsesdumpen, hvorefter det arbejdende kernel indlæses, og systemtjenesterne startes.
Ved anvendelse af kmorph i tilknytning til en bestemt CPU-kernel indlæses et backup-Linux-kernel og et minimalt systemmiljø i hukommelsen, som overvåger tilstanden af den primære kernel. I tilfælde af at den primære kernel hænger eller går i panic, overtager backup-miljøet kontrol, gemmer dump af den fejlede kernel, skifter processorkerner, hukommelse, enheder, netværkskonfiguration og filsystem.
Skiftet koordineres ved hjælp af to programmer: kmorph - kører i det aktive miljø, danner indholdet af det reserverede miljø og synkroniserer netværkets tilstand i det; kmorphd - kører i det reserverede miljø og overvåger tilstanden i det aktive miljø. Ud over omstillingen i tilfælde af en fejl, gives der mulighed for at bruge kmorph til opdatering af kernen uden den traditionelle genstart. For at fremskynde genoprettelsen i det reserverede miljø kan der, ud over kernen og et minimalt sæt systemkomponenter, blive startet standardtjenester såsom nginx i standby-tilstand. I dette tilfælde vil tjenesten nginx allerede være indlæst i hukommelsen på tidspunktet for aktivering af det reserverede miljø og straks begynde at behandle anmodninger efter skiftet til det nye netværksmiljø, aktivering af netværkskonfigurationen og ændring af rod-FS.
I de gennemførte tests genoptager serveren med nginx ved hjælp af kmorph arbejdet efter omkring 2 sekunder efter en kernelfejl, men der er planer om i fremtiden at opnå øjeblikkelig omstilling uset af de tilsluttede kunder. I øjeblikket understøtter kmorph x86_64 og ARM64-arkitekturer, og der arbejdes også på understøttelse af RISC-V. Integration af kmorph i Linux-distributioner sker på samme måde som understøttelsen af kdump, gennem standardværktøjer som dracut, initramfs-tools, kernel-install og systemd-tjenesten.
Kernen inkluderer allerede mekanismerne Kexec HandOver (KHO) og Live Update Orchestrator (LUO), som gør det muligt at starte en ny kerne fra den gamle uden at miste systemets tilstand og uden at stoppe enhedernes arbejde. Men de kan ikke anvendes i tilfælde af en fejl i kernen, da de kræver bevarelse af tilstanden i den kørende kerne. KHO og LUO er også langsommere end kmorph i skiftet, fordi i kmorph er den nye kerne allerede i hukommelsen, mens KHO og LUO kræver genstart af kernen via kexec.
Kilde: opennet.ru
