Спустя четыре года после выпуска первой версии 7 марта разработчики проекта CRIU (Checkpoint and Restore In Userspace) представили новый релиз инструментария для сохранения и восстановления процессов в пространстве пользователя для Linux - CRIU 2.0. Разработанный в рамках проекта инструментарий позволяет организовать создание контрольных точек с заморозкой состояния запущенных приложений и последующим восстановлением работы с сохранённой позиции, в том числе после перезагрузки системы или на другом сервере без разрыва уже установленных сетевых соединений.
Представленная версия включает в себя множество функциональных исправлений, улучшений безопасности и новую функциональность. Полный список изменений доступен на странице сайте проекта, посвященной новой версии CRIU. Наиболее существенные изменения в новой версии:
- Исходный код проекта подготовлен для выделения библиотеки libsockcr и утилиты compel (позволяет выполнять код в адресном пространстве других процессов), о которых будет объявлено позднее;
- Поддержка сохранения состояния процесса непривилегированным пользователем;
- В инструментарий CRIT (CRiu Image Tool) добавлены средства для просмотра дерева процессов (ps), используемых файлов (fds) и информации об маппинге в память (mems);
- Добавлен скрипт "post-setup-namespaces";
- Реализована возможность задания таймаута для процедуры сохранения дампа (по умолчанию 5 секунд);
- Добавлена возможность переопределения профиля LSM при восстановлении с опциями CLI/RPC;
- Монтирование в режиме "bind" теперь может применяться и для монтирования корня;
- Расширена поддержка внешних файлов, добавлена поддержка внешних TTY;
- Поддержка C/R для новой функциональности в ядре Linux, в том числе пространств имён CGroup, Multi-headed cgroups, заморозки состояния cgroup, Netfilter conntrack, Ghost file и т.п.
Учитывая предыдущий опыт разработки CRIU разработчики приняли решение изменить график выпуска новых версий и процесс разработки в проекте. После выпуска версии 2.0 в репозиторий добавили ветку devel, в которую будут попадать абсолютно все новые изменения. Основная ветка будет считаться стабильной и изменения в нее будут добавлять только при абсолютной уверенности, что эти изменения не вносят никаких деградаций в существующую функциональность. Новые версии будут появляться каждый месяц из стабильной ветки. Дата выхода будет анонсирована чуть позднее.
Доступны два доклада о практическом применении инструментария CRIU:
- Доклад о плюсах и минусах "живой" миграции контейнеров c конференции DevConf.CZ
- Доклад об использовании CRIU для "живой" миграции контейнеров LXC с конференции Linux.au