Razvijalci projekta Multikernel, ki omogoča delovanje več neodvisnih primerkov jedra na enem fizičnem računalniku brez hipervizorjev in virtualizacije, so predstavili orodje kmorph, ki realizira sredstva za hitro obnovitev po nenadni zaustavitvi jedra Linux ali za zamenjavo jedra v Live-režimu brez popolne ponovne zagonske. Projekt vodi Cong Wang, ki vzdržuje podsystem za upravljanje prometa (TC, Traffic Control) v jedru. Metoda hitrega ponovnega zagon je temelji na predhodnem nalaganju rezervnega jedra v pomnilnik, ki nadomesti glavno delovno jedro ob napaki ali po potrebi zamenja jedro z novo različico.
Predlagani pristop omogoča, da se izognemo popolni ponovni zagon in skoraj takojšnjo obnovitev dela, kar zmanjša čas nedelovanja na minimum. V trenutno obstoječem sistemu, ob nenadni zaustavitvi dela jedra, popolna ponovna zagon velikih strežnikov zavrže nekaj minut zaradi dolgotrajnih procesov inicializacije opreme, nalaganja sistemskega okolja in shranjevanja hrošča pomnilnika jedra prek mehanizma kdump. V bistvu se pri uporabi kdump izvede dva ponovna zagon jedra — najprej se prek kexec naloži ločen primer jedra za shranjevanje hrošča pomnilnika, nato pa se izvede nalaganje delovnega jedra in zagon sistemskih storitev.
V primeru uporabe kmorph v povezavi z ločenim jedrom CPU se v pomnilnik vnaprej naloži rezervno jedro Linux in minimalno sistemsko okolje, ki spremlja stanje glavnega jedra. V primeru zmrzovanja ali vstopa v stanje napake glavnega jedra, rezervno okolje prevzame nadzor, shrani hrošča pomnilnika neuspešnega jedra, preklopi procesorska jedra, pomnilnik, naprave, omrežno konfiguracijo in datotečni sistem.
Preklop se uskladi z dvema programoma: kmorph — ki se zažene v aktivnem okolju, pripravi vsebino rezervnega okolja in sinhronizira stanje omrežja znotraj njega; kmorphd — ki se zažene v rezervnem okolju in spremlja stanje aktivnega okolja. Poleg preklopa v primeru okvare omogoča kmorph tudi posodobitev jedra brez tradicionalnega ponovnega zagona. Za pospešitev obnove v rezervnem okolju, poleg jedra in osnovnega sklopa sistemskih komponent, lahko v načinu čakajočih začnejo delovati standardne storitve, kot je nginx. V tem primeru bo storitev nginx ob aktivaciji rezervnega okolja že naložena v pomnilnik in takoj začela obdelovati poizvedbe po preklopu v novo okolje omrežne kartice, aktivaciji omrežne konfiguracije in spremembi korenskega FS.
V izvedenih testih strežnik z nginxom s pomočjo kmorph ponovno zažene delovanje približno 2 sekundi po okvari jedra, vendar si v prihodnosti prizadevajo doseči takojšnje preklop brez opaznosti za povezane stranke. Trenutno kmorph podpira arhitekture x86_64 in ARM64, v teku pa je razvoj podpore za RISC-V. Integracija kmorph v distribucije Linux se izvaja po analogiji s podporo kdump, preko standardnih orodij dracut, initramfs-tools, kernel-install in storitve systemd.
Jedro že vključuje mehanizme Kexec HandOver (KHO) in Live Update Orchestrator (LUO), ki omogočajo zagon novega jedra iz starega brez izgube stanja sistema in brez ustavitve delovanja naprav. Vendar pa jih ni mogoče uporabiti v primeru napake v jedru, saj zahtevajo zagotavljanje stanja delujočega jedra. KHO in LUO prav tako zaostajata za kmorph po hitrosti preklopa, saj je v kmorph novo jedro že v pomnilniku, KHO in LUO pa zahtevata ponovno nalaganje jedra preko kexec.
Izvor: opennet.ru
