Utvecklarna av Multikernel-projektet, som möjliggör att köra flera oberoende instanser av kärnan på en fysisk dator utan hypervisor och virtualisering, har presenterat verktyget kmorph, som implementerar medel för snabb återställning efter kärnans krascher eller för att byta kärna i live-läge utan att behöva utföra en fullständig omstart. Projektet leds av Cong Wang, som hanterar trafikhanteringssystemet (TC, Traffic Control) i kärnan. Metoden för snabb omstart baseras på att förladdat ett reservkärna i minnet, som ersätter det primära arbetande kärnan vid fel eller vid behov av att byta till en ny version av kärnan.
Den föreslagna metoden gör det möjligt att undvika en fullständig omstart och nästan omedelbart återuppta arbetet, vilket minimerar stilleståndstiden. För närvarande, i händelse av att kärnan kraschar, tar en fullständig omstart av stora system servrar flera minuter på grund av långa initialiseringsprocesser av hårdvaran, inläsningen av systemmiljön och lagringen av kärnans minnesdump genom kdump-mekanismen. I praktiken, vid användning av kdump, utförs två omstarter av kärnan — först laddas en separat instans av kärnan via kexec för att spara minnesdumpen, efter vilket det arbetskärna laddas och systemtjänster startas.
Vid tillämpning av kmorph kopplad till ett specifikt CPU-kärna laddas ett reservkärna av Linux och en minimal systemmiljö i förväg, som övervakar tillståndet hos det primära kärnan. Vid frysning eller om det primära kärnan går in i ett paniktillstånd, tar det reservmiljön kontrollen, sparar minnesdumpen av den kraschade kärnan, omkopplar CPU-kärnor, minne, enheter, nätverkskonfiguration och filsystem.
Bytet mellan miljöer koordineras med hjälp av två program: kmorph — körs i den aktiva miljön, skapar innehållet i den sekundära miljön och synkroniserar nätverksstatusen där; kmorphd — körs i den sekundära miljön och övervakar statusen för den aktiva miljön. Utöver växling vid fel, finns det möjlighet att använda kmorph för att uppdatera kärnan utan traditionell omstart. För att snabba upp återställningen i den sekundära miljön kan, förutom kärnan och en minimiuppsättning systemkomponenter, typiska tjänster som nginx köras i vänteläge. I detta fall kommer tjänsten nginx redan att vara inläst i minnet vid aktivering av den sekundära miljön och kommer omedelbart att börja hantera förfrågningar efter övergången till den nya nätverksmiljön, aktivering av nätverkskonfigurationen och byte av root-filsystem.
I de genomförda testen återupptar servern med nginx via kmorph driften ungefär två sekunder efter en kärkrasch, men man har för avsikt att uppnå omedelbart byte som är osynligt för anslutna kunder i framtiden. För närvarande stöder kmorph arkitekturer x86_64 och ARM64, och arbete pågår för att stödja RISC-V. Integrationen av kmorph i Linux-distributioner sker på samma sätt som stöd för kdump, via de inbyggda verktygen dracut, initramfs-tools, kernel-install och systemd-tjänsten.
Kärnan innehåller redan mekanismerna Kexec HandOver (KHO) och Live Update Orchestrator (LUO), som möjliggör att köra en ny kärna från en gammal utan att förlora systemstatus och utan att stoppa enhetens drift. Men de kan inte användas vid en kärkrasch, eftersom de kräver att den aktiva kärnans status sparas. KHO och LUO ligger också efter kmorph i hastighet för växling, eftersom den nya kärnan redan finns i minnet, medan KHO och LUO kräver omstart av kärnan via kexec.
Källa: opennet.ru
