Inginerii de la Google au publicat pentru discuție un set de patch-uri destinat dezvoltatorilor nucleului Linux, care implementează subsistemul Live Update Orchestrator (LUO), destinat actualizării nucleului în modul Live. Spre deosebire de mecanisme precum livepatch, Ksplice, kpatch și kGraft, noul sistem nu se limitează la aplicarea de corecții individuale la nucleul Linux funcțional, ci permite repornirea și actualizarea completă a nucleului fără a opri funcționarea dispozitivelor individuale. Proiectul se bazează pe un set de patch-uri KHO (Kexec HandOver) pentru mecanismul kexec, folosit pentru a lansa un nou nucleu dintr-un nucleu Linux deja pornit fără a efectua o repornire fizică.
Principala utilizare a LUO este în medii cloud, unde va fi posibilă actualizarea hipervizorului KVM fără a afecta funcționarea instanțelor pornite. mașini virtuale. În special, va fi posibilă suspendarea mașini virtuale pentru timpul necesar repornirii nucleului cu hipervizorul, menținând în continuare toate dispozitivele atașate mașinilor virtuale în stare de funcționare.
Pentru a face posibilă această opțiune, LUO oferă capacități pentru menținerea stării dispozitivelor înainte de a comuta la noul nucleu și pentru restabilirea stării imediat după activarea noului nucleu, astfel încât operațiunile continue ale sistemului și aplicațiilor din spațiul utilizatorului cu dispozitivele să nu fie perturbate. În timpul repornirii nucleului, de asemenea, se asigură continuitatea operațiunilor efectuate cu DMA și activitatea legată de gestionarea întreruperilor.
Pentru a coordona menținerea stării și comutarea la noul nucleu, LUO oferă un API, care permite altor subsisteme ale nucleului să conecteze handleri pentru a urmări și a participa în procesul de repornire Live. Printre subsistemele care pot fi integrate cu LUO se numără hipervizorul KVM, iommu, sistemul de întreruperi și driverele. Pentru a transfera starea memoriei de la vechiul nucleu la nou, se folosește KHO (Kexec HandOver). Gestionarea se face prin fișiere sysfs „/sys/kernel/liveupdate/{state, prepare, finish}”.
Sursa: opennet.ro
