A Multikernel projekt fejlesztői, amely lehetővé teszi, hogy egy fizikai számítógépen több független kernel példány fusson hypervisor és virtualizáció nélkül, bemutatták a kmorph eszközkészletet, amely gyors helyreállítási eszközöket valósít meg a Linux kernel leállása után, vagy a kernel élő módú cseréjére teljes újraindítás nélkül. A projekt mögött Kong Wang áll, aki a forgalomkezelő alrendszert (TC, Traffic Control) támogatja a kernelben. A gyors újraindítás módszere a tartalék kernel előzetes memóriába töltésén alapul, amely felváltja az aktív munkakernelt hiba esetén vagy ha szükség van a kernel új verzióra történő cseréjére.
A javasolt megközelítés lehetővé teszi a teljes újraindítás elkerülését és majdnem azonnali munkakezdést, ezzel minimalizálva a leállás idejét. Jelenleg a kernel leállása esetén a teljes újraindítás nagy rendszerek esetén szerverek több percet vesz igénybe a hosszú berendezés-inicializáló folyamatok, a rendszer környezetének betöltése és a kernel memória dumpjának mentése a kdump mechanizmuson keresztül. Alapvetően kdump alkalmazásakor a kernel két újraindításon megy keresztül — először a kexec révén egy külön kernel példányt töltünk be a memória dump mentésére, majd az aktív kernel betölti magát és elindítja a rendszerszolgáltatásokat.
A kmorph alkalmazása esetén a CPU egy külön kerneljéhez előre betöltésre kerül egy tartalék Linux kernel és egy minimális rendszerkörnyezet, amely figyeli az aktív kernel állapotát. Amennyiben az aktív kernel lefagy vagy pánikba esik, a tartalék környezet átveszi az irányítást, elmenti a hibás kernel memória dumpját, átállítja a processzormagokat, a memóriát, az eszközöket, a hálózati konfigurációt és a fájlkezelő rendszert.
A váltás két program segítségével történik: a kmorph – aktív környezetben fut, létrehozza a tartalmat a tartalék környezetben, és szinkronizálja a hálózat állapotát; a kmorphd – a tartalék környezetben fut, és figyeli az aktív környezet állapotát. Az avariák esetén történő váltáson kívül a kmorph lehetőséget ad a kernel frissítésére a hagyományos újraindítás nélkül. A tartalék környezet helyreállításának felgyorsítása érdekében a kernel és a minimális rendszerkomponensek mellett a tipikus szolgáltatások, mint például az nginx, inaktív állapotban elindulhatnak. Ebben az esetben, amikor a tartalék környezet aktiválódik, az nginx szolgáltatás már a memóriában lesz betöltve, és azonnal kezdheti a kérések feldolgozását az új hálózati kártya környezetbe való váltás, a hálózati konfiguráció aktiválása és a gyökér fájlrendszer váltása után.
A végzett tesztek szerint az nginx-sel rendelkező szerver a kmorph segítségével körülbelül 2 másodpercen belül visszaáll a működésbe a kernel leállása után, azonban a jövőben az a cél, hogy az átkapcsolás az ügyfelek számára észrevétlen legyen. Jelenleg a kmorph támogatja az x86_64 és ARM64 architektúrákat, és folyamatban van a RISC-V támogatásának kidolgozása. A kmorph integrációja a Linux disztribúciókba a kdump támogatásához hasonlóan történik, a beépített dracut, initramfs-tools, kernel-install eszközökön és a systemd szolgáltatáson keresztül.
A kernelbe már beépítették a Kexec HandOver (KHO) és a Live Update Orchestrator (LUO) mechanizmusokat, amelyek lehetővé teszik, hogy új kernelt indítsanak el a régiből anélkül, hogy elveszítenék a rendszer állapotát és leállítanák az eszközök működését. De ezeket nem lehet alkalmazni kernel leállás esetén, mivel az aktív kernel állapotának megőrzéséhez van szükségük. A KHO és LUO sebessége is elmarad a kmorph-tól, mivel a kmorph új magja már a memóriában van, míg a KHO és LUO kernel újraindítást igényel a kexec-en keresztül.
Forrás: opennet.ru
