Kir Kolyshkin (k001) wrote in ru_openvz,
Kir Kolyshkin
k001
ru_openvz

Вышел первый релиз CRtools, версия 0.1

Original: [CRIU] CRtools 0.1 released!

Вероятно, все в этом сообществе знают про функциональность чекпоинт-рестора (далее CPT) в OpenVZ, благодаря которой можно делать живую миграцию контейнеров и другие интересные штуки. Но не все, наверное, знают о проекте CRIU, который мы замутили примерно с год назад.

CPT -- важная фича в OpenVZ, и мы её, как и все другие фичи, конечно же, хотим видеть в базовом (mainstream) линукс ядре, такой у нас план-максимум, всё из OpenVZ задвинуть в базовое ядро, в том или ином виде. Но как мы ни пытались задвинуть СPT в ядро (а мы несколько раз пытались), результат нулевой. Осознание того, что не мы одни такие, кто безуспешно пробовал сделать то же самое и ничего не достиг*, конечно, делает наши переживания по поводу провала менее горькими и безутешными, но практически никак не помогает. Причина же неудачи тривиальна: это большой кусок сложного ядерного кода, затрагивающего многие ядерные подсистемы.

И вот, мы** пришли к идее реализовать большую часть функциональности CPT в пользовательском пространстве, то есть в виде отдельной программы, а не внутри ядра. На практике это невозможно, поскольку местами всё-таки необходима некоторая помощь со стороны ядра, но основная идея состоит в том, чтобы свести необходимость в ядерных патчах к минимуму.

Идея эта сработала, и даже лучше, чем мы ожидали. На сегодняшний день, после примерно года разработки, около 90% ядерного кода, который нам необходим, уже в ядре. Остальные 10% уже тоже готовы и, по-видимому, влить их в ядро будет довольно-таки просто. На вики проекта есть табличка, где расписано, что мы влили и что ещё осталось: http://criu.org/Commits.

Что же касается не-ядерной части, мы рады представить вашему вниманию релиз CRtools версии 0.1. В этом месте я, пожалуй, заткну фонтан своего красноречия и предоставлю слово Павлу, процитировав его анонс (переводить не стану, вроде и так всё понятно):

The tool can already be used for checkpointing and restoring various individual applications. And the greatest thing about this so far is that most of the below
functionality has the required kernel support in the recently released v3.5!

So, we support now

* x86_64 architecture
* process' linkage
* process groups and sessions (without ttys though :\ )
* memory mappings of any kind (shared, file, etc.)
* threads
* open files (shared between tasks and partially opened-and-unlinked)
* pipes and fifos with data
* unix sockets with packet queues contents
* TCP and UDP sockets (TCP connections support exists, but needs polishing)
* inotifies, eventpoll and eventfd
* tasks' sigactions setup, credentials and itimers
* IPC, mount and PID namespaces

Though namespaces support is in there, we do not yet support an LXC container c/r,
but we're close to it :)

I'd like to thank everyone who took part in new kernel APIs discussions, the
feedback was great! Special thanks goes to Linus for letting the kernel parts
in early, instead of making them sit out of tree till becoming stable enough.

Tarball with the tool sources is at
http://download.openvz.org/criu/crtools-0.1.tar.bz2

The git repo is at
http://git.criu.org/

And some sort of docs growing at
http://criu.org/

There are still things for which we don't have the kernel support merged (SysVIPC
and various anon file descriptors, i.e. inotify, eventpoll, eventfd) yet. We have
the kernel branch with the stuff applied available at

https://github.com/cyrillos/linux-2.6.git


Что дальше? Будем портировать OpenVZ на ядро 3.5 (скорее всего) и попробуем там использовать CRIU, выкинув большой кусок ядерного кода, который мы несём в OpenVZ патче.

* Например, Орен Лаадан потратил на это несколько лет своей жизни. И не он один.
** На самом деле это был Павел Емельянов, наш самый главный ядерный архитектор, но сказать "мы" так приятно, что мы никак не можем отказать себе в этом удовольствии.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments