Инженерите от компания Google публикуваха за обсъждане от разработчиците на ядрото на Linux набор от пачове с реализацията на подсистемата Live Update Orchestrator (LUO), предназначена за обновяване на ядрото в режим Live. В отличие от механизми като livepatch, Ksplice, kpatch и kGraft, новата система не е ограничена до възможността за прилагане на отделни корекции към работещото ядро на Linux, а позволява пълна повторна зареждане и обновяване на ядрото без спиране на работата на отделните устройства. Проектът е базиран на набор от пачове KHO (Kexec HandOver) към механизма kexec, който се използва за зареждане на ново ядро от вече стартирано ядро на Linux без физическо рестартиране.
Основната област на приложение на LUO са облачните среди, където ще бъде възможно обновяване на хипервизора KVM без прекъсване на работата на стартираните на виртуални машини. По-специално, ще бъде възможно да се спре виртуални машини по време на повторното зареждане на ядрото с хипервизора, като се запазят в работно състояние всички устройства, свързани с виртуалните машини.
За реализиране на тази възможност LUO предоставя функционалности за запазване на състоянието на устройствата преди превключването към новото ядро и възстановяване на състоянието веднага след активирането на новото ядро, така че непрекъснатите операции на системата и приложенията в потребителското пространство с устройствата да не бъдат нарушени. По време на повторното зареждане на ядрото също е осигурена непрекъснатост на извършените операции с DMA и активността, свързана с обработката на прекъсвания.
За координация на запазването на състоянието и превключването към ново ядро LUO предоставя API, позволяващ на други подсистеми на ядрото да свързват обработвачи, за да следят и участват в процеса на Live повторно зареждане. Сред подсистемите, които могат да се интегрират с LUO, се споменават хипервизорът KVM, iommu, системата на прекъсванията и драйверите. За прехвърляне на състоянието на паметта от старото ядро към новото се използва KHO (Kexec HandOver). Управлението се извършва чрез файлове sysfs “/sys/kernel/liveupdate/{state, prepare, finish}.”
Източник: opennet.ru
