Я ПЛАКАЛ
Разработчик(и) | OpenVZ Команда в Virtuozzo |
---|---|
Первоначальный выпуск | 23 июля 2012 г [1] |
Стабильная версия | 3.18 (22 апреля 2023 г [2] ) [±] |
Репозиторий | |
Написано в | Си и ассемблер |
Операционная система | Линукс |
Платформа | x86-64 , ARM , Power ISA , IBM System/390 |
Тип | Контрольная точка приложения |
Лицензия | GNU GPL версия 2 |
Веб-сайт | Я плакал |
Контрольная точка/Восстановление в пользовательском пространстве ( CRIU ) (произносится как kree-oo , /kriu/ ) — это программный инструмент для операционной системы Linux . Используя этот инструмент, можно заморозить работающее приложение (или его часть) и сохранить его в постоянном хранилище в виде набора файлов. Затем можно использовать файлы для восстановления и запуска приложения с того места, где оно было зависло. Отличительной особенностью проекта CRIU является то, что он преимущественно реализован в пользовательском пространстве , а не в ядре.
История
[ редактировать ]Первоначальную версию программного обеспечения CRIU представил сообществу разработчиков Linux Павел Емельянов, руководитель группы ядра OpenVZ , 15 июля 2011 года. [3]
В сентябре 2011 года проект был представлен на Linux Plumbers Conference. [4] В целом большинство присутствующих положительно оценили проект, о чем свидетельствует тот факт, что в основное ядро был включен ряд патчей ядра, необходимых для реализации проекта. Эндрю Мортон , однако, был настроен немного скептически:
Примечание по этому поводу: это проект различных сумасшедших русских по выполнению c/r в основном из пользовательского пространства, с добавлением в ядро различного странного вспомогательного кода там, где это необходимо... Однако я менее уверен, чем разработчики, что это так. со временем все заработает! Поэтому я прошу их обернуть каждый фрагмент нового кода внутри CONFIG_CHECKPOINT_RESTORE. Так что, если все это в конечном итоге пойдет прахом и проект в целом потерпит неудачу, то будет несложно пройти через это и удалить все следы.
— Эндрю Мортон, [5]
Использовать
[ редактировать ]Инструмент CRIU разрабатывается в рамках проекта OpenVZ с целью замены встроенной контрольной точки/восстановления. Хотя его основная задача — поддержка миграции контейнеров, позволяющая пользователям проверять и восстанавливать текущее состояние запущенных процессов и групп процессов. В настоящее время этот инструмент можно использовать в системах x86-64 и ARM и поддерживает следующие функции:
- Процессы : их иерархия , PID , аутентификаторы пользователей и групп ( UID , GID , SID и т. д.), возможности системы , потоки, а также состояния работы и остановки.
- Память приложения: файлы, отображенные в памяти , и общая память.
- Открыть файлы
- Трубы и ФИФО
- Доменные сокеты Unix
- Сетевые сокеты , включая сокеты TCP в состоянии ESTABLISHED (см. ниже).
- Система V МПК
- Таймеры
- Сигналы
- Терминалы
- Системные вызовы, специфичные для ядра Linux:
inotify
,signalfd
,eventfd
иepoll
По состоянию на сентябрь 2013 г. [update], исправление ядра не требуется, поскольку все необходимые функции уже объединены в основную ветку ядра Linux , начиная с версии ядра 3.11, выпущенной 2 сентября 2013 г. [6] [7]
Миграция TCP-соединения
[ редактировать ]Одной из первоначальных целей проекта была поддержка миграции TCP-соединений, при этом самой большой проблемой было приостановить, а затем восстановить только одну сторону соединения. Это было необходимо для выполнения живой миграции контейнеров (вместе со всеми их активными сетевыми подключениями) между физическими серверами — основного сценария использования функции проверки/восстановления в OpenVZ. Чтобы справиться с этой проблемой, была реализована новая функция «Режим восстановления TCP». Эта функция была включена в версию 3.5 основной ветки ядра Linux. [8] и предоставляет пользователям дополнительные средства для разборки и восстановления TCP-сокетов без необходимости обмена сетевыми пакетами с противоположной стороной соединения.
Ссылки
[ редактировать ]- ^ Павел Емельянов (23 июля 2012 г.). «Инструмент восстановления контрольных точек v0.1» .
- ^ «График выпуска» .
- ^ Павел Емельянов (15 июля 2011 г.). «Проверка/восстановление в основном в пользовательском пространстве» .
- ^ «Проверка/перезапуск в пользовательском пространстве» . Конференция сантехников Linux 2011 .
- ^ "Объединить ветку 'akpm' (она же "Патч-бомба Эндрю, возьми две")" . Дерево исходного кода ядра Linux . 13 января 2012 г.
- ^ «Установка: ядро Linux» .
Требуется ядро Linux версии 3.11 или новее с некоторыми конкретными параметрами.
- ^ "Ядро Linux 3.11, раздел 1.5. Подробное отслеживание того, какие страницы пишет задача" . kernelnewbies.org . 02.09.2013 . Проверено 3 мая 2016 г.
- ^ Павел Емельянов (29 февраля 2012 г.). «Восстановление TCP-соединения» . Список рассылки Linux Netdev .
Дальнейшее чтение
[ редактировать ]- Санидхья Кашьяп. «Обновление и проверка ядра без перезагрузки» .
- Рами Розен. «Контейнеры Linux и облако будущего» (PDF) .
- Команда КРИУ. «Сравнение с другими проектами CR» .