В кодовую базу ядра 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
