Google развивает систему перезагрузки ядра без остановки работы устройств

Инженеры из компании 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}”.

Release. Ссылка here.