После шести месяцев разработки опубликован выпуск инструментария CRIU 4.2 (Checkpoint and Restore In Userspace), предназначенного для сохранения и восстановления процессов в пространстве пользователя. Инструментарий позволяет сохранить состояние одного или группы процессов, а затем возобновить работу с сохранённой позиции, в том числе после перезагрузки системы или на другом сервере без разрыва уже установленных сетевых соединений. Код проекта написан на языке Си и распространяется под лицензией GPLv2. CRIU применяется в таких системах управления контейнерами, как OpenVZ, LXC/LXD и Docker. Необходимые для работы CRIU изменения включены в основной состав ядра Linux.
Из областей применения технологии CRIU отмечается обеспечение перезагрузки ОС без нарушения непрерывности выполнения длительно выполняемых процессов, Live-миграция изолированных контейнеров, ускорение запуска медленных процессов (можно начать работу с состояния, сохранённого после инициализации), проведение обновлений ядра без перезапуска сервисов, периодическое сохранение состояния длительно выполняемых вычислительных задач для возобновления работы в случае аварийного завершения, балансировка нагрузки на узлы в кластерах, дублирование процессов на другую машину (fork на удалённую систему), создание снапшотов пользовательских приложений в процессе работы для их анализа на другой системе или на случай если потребуется отменить дальнейшие действия в программе.
- В плагине amdgpu реализована возможность распараллеливания восстановления состояния процессов, использующих GPU.
- Добавлена опция “–allow-uprobes”, позволяющая работать с процессами, которые используют vma (Virtual Memory Area) при трассировке процессов через механизм uprobe.
- В библиотеке libcriu добавлена возможность задания файла конфигурации RPC для runtime контейнеров, использующих данную библиотеку, таких как crun. Например, реализованная возможность может быть полезной для установки опций, таких как “–tcp-established”, через файл /etc/criu/runc.conf для Kubernetes.
- Решены проблемы с компиляцией на ARM64-системах с Си-библиотекой musl.
- Устранено целочисленное переполнение в функции pagemap_len().
- Решены проблемы с использованием getsockopt-опций SO_PASSCRED и SO_PASSSEC на системах с ядром Linux 6.16.