Релиз CRIU 0.2, системы для заморозки и восстановления состояния процессов в Linux
Доступен релиз проекта CRIU 0.2 и развиваемого им инструментария CRtools, предоставляющих для Linux средства для манипуляции snapshot-ами приложений в пространстве пользователя. Разработанный в рамках проекта инструментарий позволяет организовать создание контрольных точкек или заморозки состояния для запущенных приложений и последующего восстановления работы с сохранённой позиции.При помощи утилит CRtools можно не только замораживать процессы на одной системе, но и сохранить состояние одного или группы процессов, а затем возобновить работу с сохранённой позиции на другой машине без разрыва уже установленных сетевых соединений. Также можно сохранить состояние процесса, перезапустить систему и восстановить работу приложения с момента остановки. Из других областей применения технологии CRIU можно отметить Live-миграцию изолированных контейнеров, ускорение запуска медленных процессов (можно начать работу с состояния, сохранённого после инициализации), проведение обновлений ядра без перезапуска сервисов, периодическое сохранение состояния долговыполняемых вычислительных задач для возобновления работы в случае краха. В будущем не исключается создание на базе CRIU решений для миграции активных десктоп-сеансов с одной машины на другую.
Важными особенностями CRIU являются поддержка любых состояний процессов и возможность работы на немодифицированной ОС, содержащей стандартное ядро Linux и системные библиотеки. Создаваемые ранее аналогичные проекты обладали ограниченной поддержкой состояний процессов, требовали модификации ядра или системных библиотек. CRIU базируется на технологиях, уже присутствующих в современных ядрах Linux, и позволяющих обеспечить заморозку групп процессов и сессий, состояния маппинга памяти, нитей, открытых файлов, именованных и неименованных каналов, сокетов, TCP-соединений (позволяет обеспечить миграцию процесса без разрыва соединения), IPC и т.п. Из популярных приложений, для которых протестирована корректная заморозка, можно выделить MySQL, Apache, GCC, make, tar, bz2, в процессе обеспечение поддержки для sendmail, git, java, ssh/sshd.
Версия 0.2 примечательна добавлением начальной поддержки заморозки изолированных групп процессов (контейнеров), созданных с использованием инструментария LXC, манипулирующего такими возможностями ядра Linux, как cgroups для контроля за ресурсами и пространства имён для выполнения отдельных изолированных групп идентификаторов ФС, IPC, процессов, сетевого стека. Кроме поддержки LXC в новой версии также добавлена поддержка пакетных сокетов (RAW-сокеты семейства PF_PACKET) и заморозки состояния TTY, что позволяет останавливать не только серверные, но и полноценные консольные приложения.
В процессе обсуждения в списке разработчиков ядра Linux проект CRIU, а также инициативу продвижения в основное ядро Linux наработок компании Parallels, поддержало несколько ведущих разработчиков, в том числе Линус Торвальд и Эндрю Мортон, которые способствовали принятию в ядро патчей с функциональностью, необходимой для работы CRIU. Например, недавно в ядро был добавлен созданный в рамках проекта CRIU интерфейс для получения информации о сокетах или экспорта из ядра подробной информации о разделяемой памяти процессов, а также интерфейса для восстановления TCP-соединений c предварительно зафиксированной контрольной точки.
Интересно, что необходимость поддержки заморозки процессов назрела уже давно и даже была предпринята попытка добавить подобную функциональность в ядро, оформив её в виде одной большой подсистемы. Но такой подход вызвал волну критики со стороны известных разработчиков ядра, так как подобная подсистема сильно разрушает внутреннюю целостность ядра. Проект CRIU снял напряжение в сообществе, так как стало понятно, что можно делать эти вещи и без разрушительного воздействия на ядро.
Интерес к использованию CRIU выразили компании IBM и Google, начавшие экспериментировать с инструментарием CRtools. Что касается дистрибутивов Linux, то Debian уже включил CRtools в свой будущий релиз, в Fedora рассматривается запрос на добавление пакета, так же есть надежда, что Red Hat, который анонсировал поддержку LXC в RHEL7, включит инструментарий в свой дистрибутив.
На следующей неделе планируется опубликовать интервью с Павлом Емельяновым, одним из самых активных российских разработчиков ядра Linux. С 2004 года Павел работает в компании Parallels над CRIU, OpenVZ и различными проектами, связанными с изолированными контейнерами и облачными системами. Для формирования вопросов для интервью требуется помощь сообщества - вопросы можно оставлять в виде комментариев к новости. Тематика вопросов не ограничена и может затрагивать как личную жизнь, так и технические аспекты OpenVZ и CRIU или инициативы Parallels по включению в стандартное ядро Linux всех элементов, необходимых для обеспечения полноценной контейнерной виртуализации.
© OpenNet