Доступен релиз проекта CRIU 0.2 (http://criu.org) и развиваемого им инструментария 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 (http://www.kernel.org/doc/man-pages/online/pages/man7/packet...)) и заморозки состояния TTY, что позволяет останавливать не только серверные, но и полноценные консольные приложения.
В процессе обсуждения в списке разработчиков ядра Linux проект CRIU, а также инициативу продвижения в основное ядро Linux наработок компании Parallels, поддержало (http://criu.org/History) несколько ведущих разработчиков, в том числе Линус Торвальд и Эндрю Мортон, которые способствовали принятию в ядро патчей с функциональностью, необходимой для работы 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 всех элементов, необходимых для обеспечения полноценной контейнерной виртуализации.
URL: http://git.criu.org/?p=crtools.git;a=commit;h=v0.2
Новость: http://www.opennet.me/opennews/art.shtml?num=34958
Здорово!
> ... способствовали принятию в ядро патчей с функциональностью, необходимой для работы CRIU ...Однако с ванильным ядром пока оно работает не полностью...
The v3.5 upstream kernel already has most of the required functionality merged. Some is still out-of-tree though, so you might need to clone the linux-cr.git, checkout the crtools-3.6-rc5 branch and compile the kernel. (с)
Хм...Я правильно понимаю, что теперь я могу заморозить nginx с несколькими гигами кэша, перезагрузиться с новым ядром, разморозить его обратно и не получить лежащий от DoS-а сервер?
Если так, то это реально крутая вещь.
да, если nginx запускать в контейнере (cgroups), то на время перезагрузки его лучше на другую машину перетащить (постепенно), а потом обратно. причем все это штатными средствами ядра (правда сам nginx хорошо написан, это редкость).
> да, если nginx запускать в контейнере (cgroups)Да ну? А на сайте сабжа написано, что для sshd - planned (sshd requires TCP listening sockets support).
Либо информация в вики устарела - либо вы наврали здесь.
В принципе ничему не противоречит. Хотя умнее заморозить -> поднять на другой машине -> заапдейтить старую -> передвинуть обратно. Так может получиться непрерывный сервис.
>разморозить его обратно и не получить лежащий от DoS-а сервер?
>Если так, то это реально крутая вещь.В любом случае, если он лежал до, ляжет и после. Причем очень быстро.
> Судя по Павлу первая девушка у него появилась лет этак в 35Павел Емельянов, архитектор в департаменте серверной виртуализации Parallels.
В компании Parallels с 2004 года, начинал как разработчик в команде Linux kernel team, потом стал лидером этой команды. Идеолог проекта "живая миграция приложений в Linux". В середине 90-х и позднее — самый плодовитый генератор идей и кода в mainstream ядро Linux из России в целом и Parallels в частности. Завсегдатай тусовок (в том числе "только по приглашению") Linux community в режиме реального времени. Основной стратег в деле освоения Parallels облачных технологий. Выпускник МФТИ, к.ф.-м.н., отец троих детей.
Кир Колышкин и Павел Емельянов выступят с докладом как раз на тему CRIU на Yet another Conference в Москве (организатор - Yandex) 1-го октября:http://events.yandex.ru/talks/334/
Сегодня (28-го сентября) до 18:00 последний день регистрации на YaC (бесплатно):
Хм, это надо использовать в комнатах KDE (activities), а то LibreOffice офигивает от остановки комнаты.
Может, проще подлечить офигевших?
А что нибудь подобное, но во freebsd есть?
Увы нет
> А что нибудь подобное, но во freebsd есть?Там вообще все с виртуализацией плохо. И контейнеры стали сильно отставать от пингвинов.
Вопрос на интервью для Павла:1) Раньше был подобный по сути, но не реализации проект CryoPID - A Process Freezer for Linux.
Связаны ли как-то CRIU и CryoPID?2) Насколько я понял из беглого взгляда на CRIU -этот проект начал использовать недавне появивщейся АПИ в ядре для "замораживания" статусов, которое вроде как сначала зародилось на будущее использование (на опеннете обсуждалось). Итого вопрос - насколько инфраструктура соответствующая в ядре готова насейчас для полноценного использования CRIU для любого процесса в системе и если не готова, то есть ли договоренности о ее расширении до нужного уровня и если есть - то когда (в каких релизах ванилы) это будет?
Apple задавит патентами, точно помню у них подан иск на кого-то за реализацию возможности продолжить разговор без разрыва сессии перейдя с ноута или стационарного компа на айфон или айпад.
Prior art был еще в 80-лохматые года, даже до победного шествия биллогейтсового масадоса. Таким образом тупоголовые защиты от копирования с программ сдирали.Например на спекки (да святится имя его), году в 84-м или в 85-м был промышленно выпускаем хардварный девайс с именем Multiface, который позволял делать снапшоты аппликух, сохранять их на внешний сторадж, и пущать их потом с замороженого места на другой машине (собсно все страны СЭВ тогда на клонах этой машинки именно в снапшоты такие по большому счету и гамались). Позже появился beta-disc с точно такой-же но более криво работающей фичей.
В РФ и в Швейцарии запрещены патенты на софт. И тут совсем другое.
> Apple задавит патентами,Эпплу ща для начала гугл навешает патентами так что они будут выпускать только прямоугольник. Скругленный. Гламурный. Но без начинки. Потому что все что касается сотовой связи - густо запатентовано моторолой :)
> Эпплу ща для начала гугл навешает патентами так что они будут выпускать
> только прямоугольник. Скругленный. Гламурный. Но без начинки.ничего, фанаты огрызка купят. ещё и будут говорить, что так даже лучше — не надо думать о заряде батареи, о прошивках и прочей занудной ерунде.
виртуалбокс со снапшотоами уже не катит?
Ну-ну, виртуализируйте всё подряд...
> виртуалбокс со снапшотоами уже не катит?Ну вы сравнили, блин, грузовик с велосипедом.
Давно ждал эту вкусняшку :)
А поддержка автоматизации переноса процесса в openvz/lxc контейнер не предвидится ? Чтобы заморозил процесс в системе, а потом разморозил в контейнере и главное, чтобы в этот контейнер перенеслись все нужные этому процессу компоненты.
Как быстро он сохраняет слепок процесса ? Есть ли смысл экспериментировать с заморозкой всех процессов, или suspend/resume всей системы будет слишком много времени занимать ? Интересно поковырять CRIU в сторону создания слепка для всей системы и восстановления на другой машине для обеспечения high availability или для переноса без остановки на более мощный сервер.
О прецедентах: Слепок (slepok) был ещё на EC ЭВМ и сохранял полное состояние работающей системы на ленту.
Вся система и отдельный процесс - всё-таки несколько разные вещи.
> Интересно поковырять CRIU в сторону создания слепка для всей системы и восстановления на другой машине для обеспечения high availability или для переноса без остановки на более мощный сервер.Для таких задач давно придумали виртуализацию.
у-у-у. я думал, можно на любое ведро водрузить. или хотя бы на любое третье ведро. или хотя бы на любое 3.3 ведро.пичалька.
к 3.6 обещали что везде будет
3.6 выйдет завтра-послезавтра. Может, к 3.7?
> к 3.6 обещали что везде будетчто «3.6»? что «везде будет»? O_O
функционал восстановления/заморозки включили в 3,5, в 3,6 это будет реализовано полностью. Если интересуют не только контейнеры, то можно почитать на эту тему http://habrahabr.ru/post/152903/