Dezvoltatorii proiectului Multikernel, care permite rularea mai multor instanțe independente ale nucleului pe un singur computer fizic fără hipervizor și virtualizare, au prezentat un instrument numit kmorph, care implementează mijloace pentru recuperarea rapidă în urma unei opriri neașteptate a nucleului Linux sau pentru înlocuirea nucleului în modul Live fără o repornire completă. Proiectul este dezvoltat de Cong Wang, care întreține subsistemul de control al traficului (TC, Traffic Control) din nucleu. Metoda de repornire rapidă se bazează pe încărcarea în memorie a unui nucleu de rezervă, care înlocuiește nucleul principal de lucru în cazul unei defecțiuni sau când este necesară înlocuirea nucleului cu o versiune nouă.
Abordarea propusă permite evitarea unei reporniri complete și reînceperea activității aproape instantaneu, minimizând timpul de nefuncționare. În prezent, în cazul unei opriri neașteptate a nucleului, o repornire completă a sistemelor mari servere durata de câteva minute din cauza proceselor lungi de inițializare a echipamentului, încărcarea mediului sistemic și salvarea dump-ului de memorie a nucleului prin mecanismul kdump. Practic, utilizarea kdump implică două reporniri ale nucleului — mai întâi, prin kexec este încărcat un exemplar separat al nucleului pentru a salva dump-ul de memorie, după care are loc încărcarea nucleului de lucru și pornirea serviciilor de sistem.
În cazul utilizării kmorph legat de un nucleu CPU specific, în memorie este încărcat în avans un nucleu de rezervă Linux și un mediu de sistem minim, care monitorizează starea nucleului principal. În cazul întreruperii sau intrării în panică a nucleului principal, mediu de rezervă preia controlul, salvează dump-ul de memorie al nucleului defect, comută asupra sa nuclee de procesor, memorie, dispozitive, configurație de rețea și FS.
Comutarea se coordonează prin intermediul a două programe: kmorph — rulează în mediu activ, formează conținutul mediului de rezervă și sincronizează starea rețelei în acesta; kmorphd — rulează în mediu de rezervă și monitorizează starea mediu activ. Pe lângă comutarea în caz de defecțiune, se oferă posibilitatea de a utiliza kmorph pentru a actualiza nucleul fără o repornire tradițională. Pentru a accelera recuperarea în mediul de rezervă, pe lângă nucleu și un set minim de componente sistem, pot fi lansate servicii tipice, precum nginx, în modul de așteptare. În acest caz, în momentul activării mediului de rezervă, serviciul nginx va fi deja încărcat în memorie și va începe imediat să proceseze cererile după comutarea în noul mediu al hărții rețelei, activarea configurației de rețea și schimbarea sistemului de fișiere rădăcină.
În testele efectuate, serverul cu nginx prin intermediul kmorph își reia activitatea în aproximativ 2 secunde după o defecțiune a nucleului, dar în viitor se intenționează să se realizeze comutarea instantanee, fără a fi observată de clienții conectați. În prezent, kmorph suportă arhitecturi x86_64 și ARM64, iar lucrările pentru suportul RISC-V sunt în desfășurare. Integrarea kmorph în distribuțiile Linux se realizează analog cu suportul kdump, prin instrumentele standard dracut, initramfs-tools, kernel-install și serviciul systemd.
Nucleul conține deja mecanismele Kexec HandOver (KHO) și Live Update Orchestrator (LUO), care permit lansarea unui nou nucleu din cel vechi fără pierderea stării sistemului și fără oprirea funcționării dispozitivelor. Dar acestea nu pot fi utilizate în caz de defecțiune a nucleului, deoarece necesită salvarea stării nucleului activ. KHO și LUO sunt, de asemenea, inferioare kmorph în ceea ce privește viteza de comutare, deoarece în kmorph noul nucleu se află deja în memorie, în timp ce KHO și LUO necesită o repornire a nucleului prin kexec.
Sursa: opennet.ro
