Des ingénieurs de Google ont publié à l'intention des développeurs du noyau Linux un ensemble de correctifs proposant une mise en œuvre du sous-système Live Update Orchestrator (LUO), destiné à mettre à jour le noyau en mode Live. Contrairement à des mécanismes tels que livepatch, Ksplice, kpatch et kGraft, ce nouveau système ne limite pas la possibilité d'appliquer des correctifs individuels au noyau Linux en cours d'exécution, mais permet de redémarrer et de mettre à jour intégralement le noyau sans interrompre le fonctionnement de certains dispositifs. Le projet est basé sur un ensemble de correctifs KHO (Kexec HandOver) pour le mécanisme kexec, utilisé pour charger un nouveau noyau à partir d'un noyau Linux déjà en cours d'exécution sans redémarrage physique.
La principale application du LUO est mentionnée dans les environnements cloud, où il sera possible de mettre à jour l'hyperviseur KVM sans perturber le fonctionnement des éléments en cours. machines virtuellesEn particulier, il sera possible de suspendre machines virtuelles le temps du redémarrage du noyau avec l'hyperviseur, en maintenant tous les dispositifs attachés aux machines virtuelles en état de fonctionnement.
Pour réaliser cette possibilité, le LUO offre des fonctionnalités de préservation de l'état des dispositifs avant de passer à un nouveau noyau et de restauration de cet état immédiatement après la mise en service du nouveau noyau, de manière à ce que les opérations continues du système et des applications en espace utilisateur avec les dispositifs ne soient pas perturbées. Pendant le processus de redémarrage du noyau, la continuité des opérations effectuées avec le DMA et l'activité liée au traitement des interruptions est également assurée.
Pour coordonner la préservation de l'état et le passage à un nouveau noyau, le LUO fournit une API permettant à d'autres sous-systèmes du noyau de brancher des gestionnaires pour suivre et participer au processus de redémarrage Live. Parmi les sous-systèmes pouvant s'intégrer au LUO, on note l'hyperviseur KVM, l'iommu, le système d'interruptions et les pilotes. Pour transmettre l'état de la mémoire de l'ancien noyau au nouveau, le KHO (Kexec HandOver) est utilisé. La gestion se fait via des fichiers sysfs «/sys/kernel/liveupdate/{state, prepare, finish}».
Source : opennet.ru
