Inżynierowie z firmy Google opublikowali do dyskusji wśród programistów jądra Linux zestaw poprawek implementujących podsystem Live Update Orchestrator (LUO), przeznaczony do aktualizacji jądra w trybie Live. W przeciwieństwie do takich mechanizmów jak livepatch, Ksplice, kpatch i kGraft, nowy system nie ogranicza się do możliwości stosowania pojedynczych poprawek do działającego jądra Linux, ale umożliwia pełne ponowne uruchomienie i aktualizację jądra bez przerywania pracy poszczególnych urządzeń. Projekt bazuje na zestawie poprawek KHO (Kexec HandOver) do mechanizmu kexec, używanego do ładowania nowego jądra z już uruchomionego jądra Linux bez fizycznego ponownego uruchamiania.
Jako główny obszar zastosowania LUO wskazano środowiska chmurowe, w których pojawi się możliwość aktualizacji hipernadzorcy KVM bez zakłócania działania uruchomionych. maszyn wirtualnychW szczególności będzie można wstrzymać maszyn wirtualnych na czas ponownego uruchamiania jądra z hipernadzorcą, zachowując w działaniu wszystkie urządzenia podłączone do maszyn wirtualnych.
Aby zrealizować tę możliwość, LUO zapewnia funkcje do zapisywania stanu urządzeń przed przełączeniem na nowe jądro i przywracania stanu bezpośrednio po uruchomieniu nowego jądra, w taki sposób, aby ciągłe operacje systemu i aplikacji w przestrzeni użytkownika z urządzeniami nie były zakłócone. W trakcie ponownego uruchamiania jądra zapewniona jest również nieprzerwane wykonywanie operacji związanych z DMA oraz aktywność związaną z przetwarzaniem przerwań.
W celu koordynacji zachowywania stanu i przełączania na nowe jądro LUO udostępnia API, które pozwala innym podsystemom jądra podłączać przetwarzacze do śledzenia i uczestniczenia w procesie Live-rebootu. Do podsystemów, które mogą integrować się z LUO, zaliczają się hipernadzorca KVM, iommu, system przerywań oraz sterowniki. Do transferu stanu pamięci ze starego jądra do nowego angażowany jest KHO (Kexec HandOver). Zarządzanie odbywa się przez pliki sysfs „/sys/kernel/liveupdate/{state, prepare, finish}.”
Źródło: opennet.ru
