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

Устарел ли OpenVZ?

Какое провокационное название (на самом деле нет).

Оказалось, что многие люди считают OpenVZ устаревшим, и когда я спрашиваю их, почему они так думают, в ответ обычно говорят что-то из этого:

1. Ядро OpenVZ древнее и устаревшее, потому что базируется на 2.6.32, а в 2013 году уже все используют 3.x.
2. Будущее за LXC, OpenVZ в прошлом.
3. OpenVZ больше не разрабатывается -- его даже выкинули из Debian Wheezy.

Прокомментирую все три заблуждения, по очереди.

1. "У OpenVZ древнее ядро". Свежие ядра OpenVZ базируются на ядрах из дистрибутива Red Hat Enterprise Linux 6 (для краткости RHEL6). Это последняя и самая лучшая версия дистрибутива для предприятий от Red Hat, компании, чьё имя почти всегда стоит на самом верху списка тех компании, которые внесли самый большой вклад в разработку ядра Linux (случайные примеры: 1, 2, 3, 4). Конечно, никакое ядро не может быть идеальным и безошибочным, но ядро из RHEL6 -- довольно хорошая аппроксимация такого ядра.

Разработка ядра для RHEL делается вот как -- инженеры из Red Hat берут ванильное ядро и форкают его, убирая баги и принося из апстрима фиксы (в том числе исправления дыр в безопасности), обновлённые драйвера, и иногда новые фичи. Так они делают примерно полгода до релиза (иногда и больше), так что к моменту релиза это ядро уже "древнее и устаревшее" -- во всяком случае, так кажется, если смотреть на его версию. Так вот, не следует оценивать книгу по обложке, фильм по трейлеру, а ядро по номеру версии. Конечно же, никакое оно не древнее и не устаревшее, а просто более стабильное и безопасное. Далее, после релиза, это ядро очень хорошо поддерживается -- добавляется поддержка современного железа, регулярно выходят новые версии, вовремя исправляются дырки в безопасности. И всё это на протяжении нескольких лет.

Всё вышеописанное делает это ядро идеальной базой для OpenVZ ядра. В каком-то смысле, мы стоим на плечах гиганта в красной шляпе (а поскольку это опенсорс, то и они тоже немножечко стоят на наших плечах).

Сейчас в Red Hat идёт работа над очередной версией -- RHEL7, ядро в которой будет базироваться на одном из ядер серии 3.x (возможно, это будет 3.10). Как только это ядро будет доступно, мы будем портировать на него OpenVZ. Пока же, ядро OpenVZ на базе RHEL6 -- это самое последнее и самое лучшее ядро, и пусть вас не обманывают цифры 2.6.32.

2. OpenVZ против LXC. Ядро в OpenVZ, так уж сложилось, раньше разрабатывалось отдельно от основного ядра Linux. Эту ошибку мы осознали в 2005 году, и с тех пор активно работаем над включением разных компонентов нашего ядра в апстримное. Времени это заняло больше, чем мы ожидали -- мы всё ещё где-то в середине процесса (хотя уже перевалили за экватор). Некоторый отличный функционал -- типа network namespaces или CRIU -- уже в ядре, а что-то всё ещё пока в нашем списке TODO. В будущем (через ещё восемь лет? кто бы знал...) вся функциональность ядра OpenVZ, возможно, уже будет в апстриме, так что проект выродится просто в набор утилит. Очень приятно видеть, что Parallels -- не единственная компания, заинтересованная в контейнерах для Linux, так что это может случится немного раньше. Пока что, впрочем, мы всё ещё полагаемся на наше родное тёплое ламповое ядро (хотя, напомню, оно уже сейчас не является обязательным).

Теперь, что такое LXC? Это всего лишь ещё одна утилита (навроде vzctl), которая работает поверх свежего апстримного ядра (опять же, навроде vzctl). В то время как мы вливаем нашу функциональность в апстрим, утилита LXC начинает эту функциональность использовать, таким образом получая выигрыш от нашей работы. Сейчас примерно половина всей ядерной функциональности, которую использует LXC, была разработана нашими инженерами. И хотя мы не работаем над утилитой LXC, не будет преувеличением сказать, что Parallels внёс самый большой вклад в LXC.

Таким образом, и OpenVZ и LXC активно развиваются и у них есть будущее. Возможно даже, когда-то мы сольём обе утилиты в одну (это уже кратенько обсуждалось на прошедшей мини-конференции по контейнерам на Linux Plumbers в Новом Орлеане). Однако, LXC не является преемником OpenVZ -- это два разных проекта, хотя и не совсем отдельных друг от друга (так как команда OpenVZ очень много добавляет в ядро, и обе утилиты используют одну и ту же ядерную функциональность). Сейчас OpenVZ -- это по сути LXC++, так как она добавляет некоторые вещи, которых нет (пока) в апстримном ядре -- например, более сильную изоляцию, лучшее управление ресурсами, и некоторые фичи типа ploop.

3. OpenVZ больше не разрабатывается, её даже из Дебиана выкинули. Команда ядерных мейнтейнеров Debian решила убрать OpenVZ (и некоторые другие) варианты ядра из Debian 7, он же Wheezy. Это вполне понятно и объяснимо: на поддержку ядер уходит время и другие ресурсы, которых в их команде, видимо, не хватает. Из этого, однако, вовсе не следует, что OpenVZ больше не разрабатывается. Даже странно с этим спорить, но посмотрите хотя бы нашу страничку News/updates (или архивы списка рассылки announce@). В этом году мы выпустили примерно 80 обновлений софта. Это примерно по 2 обновления каждую неделю. Большая часть -- это обновления ядер. Не похоже ведь на что-то заброшенное?

Что же касается Debian Wheezy, у нас есть свой репозиторий с ядрами и утилитами, как мы совсем недавно сообщили.
  • 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 

  • 9 comments