- CRIU
-
CRIU Тип Разработчик Команда OpenVZ
Написана на Операционная система Лицензия GNU GPL v.2
Сайт CRIU (Checkpoint/Restore In Userspace) — разрабатываемое в данный момент программное обеспечение для операционной системы Linux, целью которого является обеспечение возможностей внешнего создания контрольной точки для произвольного приложения, а также возобновления работы приложения с этой точки. Главное особенностью проекта является его преимущественная реализация в пространстве пользовательских процессов, а не в ядре операционной системы (как, к примеру, в проекте OpenVZ), а также возможность работы с произвольными процессами без дополнительной поддержки с их стороны.
Содержание
История
В 2011 компания Parallels анонсировала[1] в российской прессе планы по интеграции своего проекта Parallels Virtuozzo Containers в основное ядро Linux. Одной из основных особенностей проекта является возможность живой миграции процессов. Осмысление предыдущих неудачных попыток интеграции подобных технологий в ядро операционной системы[2] привело разработчиков к осознанию того, что миграцию процессов необходимо реализовывать в адресном пространстве пользовательских приложений.
Начальная версия проекта CRIU была разработана Павлом Емельяновым, лидером команды разработчиков OpenVZ, и представлена сообществу разработчиков операционной системы Linux 15 июля 2011 года[3]. В сентябре того же года проект был представлен на конференции Linux Plumbers[4].
В целом, проект был принят с оптимизмом, что подтверждается включением в ядро некоторых правок, необходимых проекту. Однако следует отметить, что Линус Торвальдс, создатель ядра Linux, отреагировал на проект скептически[5]. В частности, он отметил, что (англ. ):
„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.“что можно примерно перевести как:
«Замечание: это проект, разрабатываемый разными сумасшедшими русскими, по созданию контрольных точек и рестарта с них в основном из пользовательского приложения, с различным странным вспомогательным кодом, добавленным в ядро там, где показана такая необходимость.
… Однако, я не так, как разработчики, уверен в том, что всё это когда-нибудь заработает! Поэтому я прошу их „обернуть“ макросом CONFIG_CHECKPOINT_RESTORE каждый кусок нового кода в ядре.
Так что если со временем всё это закончится слезами и проект в целом развалится, это будет простой задачей пройтись по коду и выкинуть всё без следа.»Первый релиз проекта состоялся 23 июля 2012 года[6].
Возможности
Поскольку проект разрабатывается в рамках проекта OpenVZ, основной целью, преследуемой разработчиками, является поддержка миграции контейнеров. Тем не менее, с помощью CRIU есть возможность сохранять и восстанавливать состояние отдельных процессов или их групп.
На сегодняшний день поддерживается единственная архитектура — X86 64 — и следующие объекты ОС Linux.
- Процессы, их иерархия, PID, идентификаторы пользователя и группы (uid, euid, sid, …), системные права
- Память приложений, включая отображенные файлы и разделяемые участки
- Открытые файлы
- Pipes, включая FIFO
- Сокеты Unix
- Сокеты TCP/IP (в том числе и в состоянии ESTABLISHED, см. ниже)
- System V IPC
- Таймеры
Некоторые из указанных возможностей пока поддерживаются только при использовании дополнительных патчей к ядру Linux, однако разработчиками поставлена цель включить все требуемые изменения в основную ветку ядра Linux. Часть требуемых изменений уже включена (напр. поддержка разделяемой памяти, сокеты Unix и TCP/IP).
Миграция TCP соединений
Одной из поставленных целей проекта является возможность сохранять и восстанавливать состояние TCP соединения. Причем основной интерес представляет случай, когда процедуре сохранения/восстановления подвергается только одна сторона соединения. Такая постановка задачи возникла из основного сценария использования CRIU компанией Parallels, при котором контейнер мигрирует с одной машины на другую, и при этом все внешние соединения «переезжают» вместе с контейнером.
Для достижения поставленной цели был разработан и внедрен в ядро Linux v3.5 механизм, получивший название TCP repair mode[7]. Механизм представляет собой набор операций над TCP сокетом, позволяющих «разобрать» и «собрать» его не запуская никаких описанных в стандарте процедур по сетевому обмену пакетами.
См. также
Существуют аналогичные проекты в разной стадии завершенности.
Примечания
- ↑ Cnews, «Parallels наняла известных разработчиков для проникновения в ядро Linux»
- ↑ LWN.net, Jonathan Corbet, Checkpoint/restart: it’s complicated
- ↑ LWN.net, Pavel Emelyanov, Checkpoint/restore mostly in the userspace
- ↑ Linux Plumbers Conference, September 7-9, 2011, Checkpoint/restart in the userspace
- ↑ Linus Torvalds, Git commit title: «Merge branch 'akpm' (aka „Andrew’s patch-bomb, take two“)»
- ↑ Announce: Checkpoint-restore tool v0.1
- ↑ TCP connection repair
Литература
Ссылки
Категории:- Программное обеспечение по алфавиту
- GNU
- Программное обеспечение для Linux
- Программное обеспечение с лицензией GNU GPL
- Свободное программное обеспечение, написанное на Си
Wikimedia Foundation. 2010.