27.10.2021

Выпуск CRIU 3.16, системы для сохранения и восстановления состояния процессов в Linux

Опубликован выпуск инструментария CRIU 3.16 (Checkpoint and Restore In Userspace), предназначенного для сохранения и восстановления процессов в пространстве пользователя. Инструментарий позволяет сохранить состояние одного или группы процессов, а затем возобновить работу с сохранённой позиции, в том числе после перезагрузки системы или на другом сервере без разрыва уже установленных сетевых соединений. Код проекта распространяется под лицензией GPLv2.

Из областей применения технологии CRIU отмечается обеспечение перезагрузки ОС без нарушения непрерывности выполнения длительно выполняемых процессов, Live-миграция изолированных контейнеров, ускорение запуска медленных процессов (можно начать работу с состояния, сохранённого после инициализации), проведение обновлений ядра без перезапуска сервисов, периодическое сохранение состояния долговыполняемых вычислительных задач для возобновления работы в случае краха, балансировка нагрузки на узлы в кластерах, дублирование процессов на другую машину (fork на удалённую систему), создание снапшотов пользовательских приложений в процессе работы для их анализа на другой системе или на случай если потребуется отменить дальнейшие действия в программе. CRIU применяется в таких системах управления контейнерами, как OpenVZ, LXC/LXD и Docker. Необходимые для работы CRIU изменения включены в основной состав ядра Linux.

В новом выпуске:

  • Добавлена команда criu-ns, позволяющая восстановить сохранённый слепок процесса с новым идентификатором PID и в отдельном пространстве имён точек монтирования (mount namespace). Запуск с другим PID может потребоваться, например, в случае, если старый PID уже используется в системе.
  • Реализована возможность сохранения и восстановления слепков состояния вложенных профилей apparmor.
  • Реализована блокировка и разблокировка сетевых ресурсов на базе nftables.
  • Добавлена поддержка восстановления предварительно созданных устройств veth.
  • Улучшена поддержка восстановления контейнеров в существующие pod-ы.
  • Для RPC-клиентов добавлена возможность определения повторного использования PID, реализованная при помощи механизма pidfd.
  • Лицензия на все proto-файлы в каталоге images/ изменена на MIT.

Источник.