CRIU | |
---|---|
| |
Checkpoint and Restore in Userspace | |
Тип | Инструментальное программное обеспечение |
Разработчик | Команда OpenVZ |
Написана на | Си и Ассемблер |
Операционная система | Linux |
Последняя версия | 3.10 (10 июля 2018) |
Лицензия | GNU GPL v.2 |
Сайт | criu.org |
CRIU (от англ. Checkpoint/Restore In Userspace) — программное обеспечение для операционной системы Linux, позволяющее создать извне во время выполнения произвольной программы контрольную точку с возможностью возобновления работы программы с этой точки, в том числе в другом экземпляре операционной системы (функция живой миграции)[1].
Главной особенностью проекта является его преимущественная реализация в пространстве пользовательских процессов, а не в ядре операционной системы (как, к примеру, в проекте OpenVZ), а также возможность работы с произвольными процессами без дополнительной поддержки с их стороны[2].
В 2011 компания Parallels анонсировала[3] в российской прессе планы по интеграции своего проекта Parallels Virtuozzo Containers в основное ядро Linux. Одной из основных особенностей проекта является возможность живой миграции процессов. Осмысление предыдущих неудачных попыток интеграции подобных технологий в ядро операционной системы[4] привело разработчиков к осознанию того, что миграцию процессов необходимо реализовывать в адресном пространстве пользовательских приложений.
Начальная версия проекта CRIU была разработана Павлом Емельяновым, лидером команды разработчиков OpenVZ, и представлена сообществу разработчиков операционной системы Linux 15 июля 2011 года[5]. В сентябре того же года проект был представлен на конференции Linux Plumbers[6].
В целом проект был принят с оптимизмом, что подтверждается включением в ядро некоторых правок, необходимых проекту. Однако маинтейнер Эндрю Мортон, через чье git-дерево правки попали в основное ядро, был в своих комментариях несколько скептичен[7].
Первый релиз проекта состоялся 23 июля 2012 года[8]. 25 ноября 2013 года разработчики анонсировали первый крупный релиз своего проекта — 1.0[9]. CRIU этой версии может работать на архитектурах ARM и x86-64, и не требует дополнительных модификаций ядра — достаточно поставить основное ядро версии не ниже 3.11.
Поскольку проект разрабатывается в рамках проекта OpenVZ, основной целью, преследуемой разработчиками, является поддержка миграции контейнеров. Тем не менее, с помощью CRIU есть возможность сохранять и восстанавливать состояние отдельных процессов или их групп.
По состоянию на середину 2010-х годов поддерживается две архитектуры — x86-64 и ARM — и следующие объекты Linux:
Вся требуемая поддержка ядра включена в ядро Linux версии 3.11.
Одной из поставленных целей проекта является возможность сохранять и восстанавливать состояние TCP-соединения, причём основной интерес представляет случай, когда процедуре сохранения с последующим восстановлением подвергается только одна сторона соединения. Такая постановка задачи возникла из основного сценария использования CRIU компанией Parallels, при котором контейнер мигрирует с одной машины на другую, и при этом все внешние соединения «переезжают» вместе с контейнером.
Для достижения поставленной цели был разработан и внедрен в ядро Linux версии 3.5 механизм, получивший название TCP repair mode[10], в рамках которого реализован набор операций над TCP-сокетом, позволяющих «разобрать» и «собрать» его, не запуская никаких, описанных в стандарте, процедур по сетевому обмену пакетами.
«Замечание: это проект, разрабатываемый разными сумасшедшими россиянами, по созданию контрольных точек и рестарта с них в основном из пользовательского приложения, с различным странным вспомогательным кодом, добавленным в ядро там, где показана такая необходимость.
… Однако, я не так, как разработчики, уверен в том, что всё это когда-нибудь заработает! Поэтому я прошу их „обернуть“ макросом CONFIG_CHECKPOINT_RESTORE каждый кусок нового кода в ядре.
Так что если со временем всё это закончится слезами и проект в целом развалится, это будет простой задачей пройтись по коду и выкинуть всё без следа.»Оригинальный текст (англ.)„A note on this: this is a project by various mad Russians to perform c/r mainly from userspace, with various oddball helper code added into the kernel where the need is demonstrated.
… However I'm less confident than the developers that it will all eventually work! So what I'm asking them to do is to wrap each piece of new code inside CONFIG_CHECKPOINT_RESTORE.
So if it all eventually comes to tears and the project as a whole fails, it should be a simple matter to go through and delete all trace of it.“
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .