В кодовата на ядрото Linux, на база на която в началото на февруари ще бъде формиран релиз 6.19, е приет кодът на подсистемата LUO (Live Update Orchestrator), разработена от компанията Google за обновяване на ядрото в Live-режим без физическо рестартиране. Подсистемата се основава на механизма KHO (Kexec HandOver), който беше добавен в ядрото 6.16 и реализира възможността за стартиране на ново ядро от старо без загуба на състоянието на системата.
Live Update Orchestrator позволява пълноценно рестартиране и обновяване на ядрото без спиране на работата и без загуба на състоянието на системата, устройствата и процесите. В допълнение към функционалността на KHO, подсистемата LUO запазва състоянието на устройствата и оперативната памет, както и осигурява непрекъснатост на операциите, свързани с DMA и обработката на прекъсвания. Състоянието се запазва до превключването на новото ядро и се възстановява след активирането на новото ядро без нарушаване на непрекъснатите операции с устройствата, реализирани от системата и приложенията в потребителското пространство.
Особеност на новата серия пачове е възможността за запазване на файлови дескриптори memfd за поддържане на състоянието на важни данни в паметта между рестартирания, като съдържанието на оперативната памет. на виртуални машини. Като основна област на използване на подсистемата се споменава бързо обновление сървъри системите за виртуализация на базата на хипервизор KVM, за отстраняване на проблеми със сигурността и стабилността при минимално време на престой на виртуалните машини. Компанията Google вече използва тази технология в своите работни среди.
В отличие от livepatch, Ksplice, kpatch, kGraft и други механизми за горещо наложение на пачове, новата подсистема не е ограничена само до прилагане на отделни корекции към работещото ядро и позволява пълна подмяна на ядрото. В отличие от извикването на kexec, подсистемата LUO запазва състоянието на устройствата и подсистемите на ядрото между рестартирания, докато извикването на kexec работи само като загрузчик, стартиращ ново ядро с пълна преинициализация на системата (еквивалентно на рестартиране, но без предаване на управление на фърмуера).
Източник: opennet.ru
