Вышел CRIU 4.3: инструмент для сохранения и миграции процессов Linux
После одиннадцати месяцев разработки команда CRIU представила версию 4.3 своего инструментария. Это система, работающая в пространстве пользователя и позволяющая сохранять состояние процессов Linux, а затем возобновлять их работу с той же точки. Главная возможность CRIU — создание контрольных точек для одного или группы процессов.
Сохранённое состояние можно использовать для восстановления после перезагрузки операционной системы или для переноса на другой физический сервер. При этом все установленные сетевые соединения остаются активными, что критически важно для сервисов, не терпящих разрыва связи. Сетевая прозрачность достигается за счёт того, что CRIU сохраняет состояние TCP-соединений, включая номера последовательности и размеры окон, а затем восстанавливает их на новом месте.
Это позволяет, например, перенести работающий веб-сервер без потери ни одного клиентского запроса. Исходный код проекта написан на языке Си и распространяется под свободной лицензией GPLv2. Как и многие другие проекты с открытым кодом, например NotQuiteRSS: наследник QuiteRSS переходит на Qt 6 и отказывается от встроенного браузера, CRIU развивается силами сообщества и доступен для аудита и доработки любым желающим.
Инструментарий глубоко интегрирован в экосистему управления контейнерами. Его применяют такие платформы, как OpenVZ, LXC/LXD и Docker. Благодаря CRIU становится возможной живая миграция контейнеров: запущенный сервис «замораживается» на одном узле, переносится и «размораживается» на другом без видимого простоя.
В Docker механизм контрольных точек доступен через экспериментальную команду docker checkpoint, которая напрямую обращается к CRIU. Это даёт возможность приостановить контейнер, сохранить его состояние на диск и позже запустить с того же места. Для полноценной работы CRIU необходима поддержка со стороны ядра Linux.
Все требуемые изменения уже включены в основную ветку ядра, поэтому пользователям не требуется накладывать дополнительные патчи — достаточно иметь современный дистрибутив. Патчи были приняты несколько лет назад, и сегодня CRIU работает на большинстве архитектур, включая x86_64 и ARM. Новый релиз 4.3 стал итогом почти годового цикла разработки.
Хотя подробный список изменений не раскрывается, такой длительный срок обычно говорит о накоплении значительных улучшений, исправлении ошибок и повышении стабильности. Разработка ведётся публично, и каждый релиз сопровождается обсуждениями в списках рассылки и на GitHub. Возможность сохранения и восстановления процессов востребована в сценариях высокой доступности и балансировки нагрузки.
Администраторы могут безболезненно перемещать рабочие нагрузки между серверами, проводить обслуживание оборудования или масштабировать инфраструктуру. Использование CRIU в Docker, пожалуй, самый заметный пример его практической ценности. Разработчики и DevOps-инженеры получают инструмент для отладки и управления состоянием контейнеризированных приложений, что упрощает тестирование и развёртывание.
Проект продолжает оставаться важной частью Linux-экосистемы, подтверждая, что механизмы живого переноса процессов могут быть реализованы в пользовательском пространстве без громоздких модификаций ядра. Таким образом, выход CRIU 4.3 укрепляет позиции открытых технологий в области виртуализации и контейнеризации, делая управление состоянием процессов ещё надёжнее и удобнее.