Gli ingegneri di Google hanno pubblicato per la discussione da parte degli sviluppatori del kernel Linux un insieme di patch con l'implementazione del sottosistema Live Update Orchestrator (LUO), progettato per aggiornare il kernel in modalità Live. A differenza di meccanismi come livepatch, Ksplice, kpatch e kGraft, il nuovo sistema non si limita a consentire l'applicazione di singole correzioni al kernel Linux in esecuzione, ma permette un riavvio completo e un aggiornamento del kernel senza fermare il funzionamento dei singoli dispositivi. Il progetto si basa su un insieme di patch KHO (Kexec HandOver) per il meccanismo kexec, utilizzato per avviare un nuovo kernel da un kernel Linux già in esecuzione senza un riavvio fisico.
La principale area di applicazione del LUO è rappresentata dagli ambienti cloud, dove sarà possibile aggiornare l'iper-visor KVM senza interrompere le operazioni in corso. macchine virtualiIn particolare, sarà possibile mettere in pausa macchine virtuali per il tempo necessario al riavvio del kernel con l'iper-visor, mantenendo attivi tutti i dispositivi collegati alle macchine virtuali.
Per realizzare questa possibilità, il LUO offre funzioni per salvare lo stato dei dispositivi prima di passare al nuovo kernel e ripristinare lo stato immediatamente dopo l'attivazione del nuovo kernel, in modo tale che le operazioni continue del sistema e delle applicazioni nello spazio utente con i dispositivi non siano interrotte. Durante il riavvio del kernel è garantita anche la continuità delle operazioni in corso con il DMA e l'attività legata alla gestione delle interruzioni.
Per coordinare il salvataggio dello stato e il passaggio al nuovo kernel, il LUO offre un'API che consente ad altri sottosistemi del kernel di collegare gestori per monitorare e partecipare al processo di riavvio Live. Tra i sottosistemi che possono integrarsi con LUO si segnalano l'iper-visor KVM, iommu, il sistema delle interruzioni e i driver. Per trasferire lo stato della memoria dal vecchio kernel al nuovo viene utilizzato il KHO (Kexec HandOver). La gestione avviene tramite file sysfs «/sys/kernel/liveupdate/{state, prepare, finish}».
Fonte: opennet.ru
