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

Представлен значительный релиз проекта CRIU 1.7, развивающего технологию сохранения и восстановления процессов в пространстве пользователя для Linux. Разработанный в рамках проекта инструментарий позволяет организовать создание контрольных точек, с заморозкой состояния запущенных приложений, и последующего восстановления работы с сохранённой позиции, в том числе после перезагрузки системы или на другом сервере без разрыва уже установленных сетевых соединений.

Список изменений:

  • Гибкое восстановление CGroup при восстановлении процессов;
  • Поддержка строгого режима фильтров seccomp;
  • Поддержка наследуемых Unix-сокетов;
  • Поддержка UID/GID для точек монтирования;
  • Возможность восстановить пространство имён точек монтирования с удаленным bind-mount;
  • Снижено время сохранения состояния процессов за счёт использования freeze cgroup;
  • Возможность указать размер для открытого и удаленного файла;
  • Поддержка OverlayFS;
  • Расширен список вызовов библиотеки libcriu;
  • Исправления для большого количества проблем.

Следует отметить, что проект CRIU всё больше и больше привлекает внимание других открытых проектов и компаний:

  • Разработчик Андрей Арканджели (Andrea Arcangeli) из компании RedHat добавил поддержку userfaultfd в ядре Linux. Это даст возможность выполнять «lazy memory» восстановление процессов (то есть процессы будут восстанавливаться без памяти, а память будет подгружаться по мере необходимости).
  • Пакет CRIU был добавлен в недавно анонсированный выпуск Red Hat Enterprise Linux 7.2, который сейчас находится в статусе беты.
  • Сотрудники RedHat нашли в CRIU две уязвимости.
  • Усилиями разработчика Laurent Dufour из IBM код CRIU был портирован на платформу PowerPC 64 LE и налажен процесс регулярного тестирования этого порта.
  • Поддержка сохранения и восстановления процессов для архитектур ARM и PowerPC была по умолчанию включена в ядре Fedora Linux. В Fedora 23 можно будет использовать CRIU в сборках под архитектуры ARM и PowerPC без перекомпиляции ядра.

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

Разработчики выбрали цели для новой версии CRIU из своего списка задач и в следующем релизе планируют сфокусироваться на следующей функциональности:

  • Поддержка безопасных контейнеров (расширение поддержки seccomp, userns, возможно будет поддержка SELinux, и расширение поддержки AppArmor)
  • Устранение проблем с поддержкой CGroups
  • Поддержка архитектуры i386

© OpenNet