Новая версия OpenVZ
Весной прошлого года мы рассказали почему Virtuozzo переходит на открытую модель разработки и какой смысл открывать исходный код коммерческого продукта. Вчера мы анонсировали выпуск финальной версии OpenVZ 7.0, образованного в результате слияния кодовых баз открытой системы контейнерной виртуализации OpenVZ и коммерческого продукта Virtuozzo (Parallels Cloud Server). Новый выпуск OpenVZ содержит множество изменений и мы по порядку расскажем о каждом из них.
Не технология, а продукт!
Когда появился проект OpenVZ, то в рамках этого проекта были доступны ядра Linux с нашими патчами для контейнерной виртуализации и утилиты для управления контейнерами. Мы предоставляли компоненты, из которых пользователь мог собрать систему контейнерной виртуализации. В OpenVZ 7.0 мы предоставляем не технологию, а законченное решение в виде Linux дистрибутива. Всё, что требуется для начала использования новой версии это загрузить установочный образ и пройти через все шаги установщика. Получится сервер с возможностью и контейнерной и гипервизорной виртуализации на базе KVM/QEMU. Для платных пользователей доступна дополнительная функциональность, которую можно установить, купив лицензию, при этом переустановка не потребуется.
Больше возможностей интеграции
Рынок насыщен продуктами и решениями для виртуализации и ни один продукт не идеален и не предоставляет всю возможную функциональность. Понимая это мы расширили возможности интеграции OpenVZ. Так как OpenVZ 7 унаследовал архитектуру коммерческой Virtuozzo, то появилась возможность использования Parallels API. Дополнительно появилась возможность интеграции с LibVirt с помощью отдельного драйвера virtuozzo. Драйвер позволяет управлять контейнерами и виртуальными машинами OpenVZ с помощью стандартных утилит virsh, virt-install, GUI оболочку virt-manager и других приложений, интегрированных с LibVirt.
Новая функциональность, ранее доступная только в коммерческой Virtuozzo
Механизм управления памятью был основательно переработан и в новой версии представлено четвертое поколение этого механизма. Новая реализация использует подсистему memory cgroups, предоставляемой ядром Linux, и сервиса vcmmd.
В предыдущих версиях OpenVZ шаблоны контейнеров было довольно неудобным: нам требовалось обновлять шаблоны для актуальных версий дистрибутивов на сайте OpenVZ, а пользователям OpenVZ не забывать эти шаблоны обновлять на своих серверах. В OpenVZ 7 была добавлена возможность использования EZ-шаблонов для контейнеров, что позволит облегчить управление шаблонами на серверах с OpenVZ. Для управления предлагается использовать утилиту vzpkg.
Функциональность предыдущих версий OpenVZ документирована на вики проекта, статьи для которой писали люди из сообщества. У этого подхода был недостаток — плохая структурированность информации и временами статьи утрачивали актуальность и не обновлялись. В новой версии доступна полноценная документация на сайте docs.openvz.org, которую пишет наш отдел документирования. Причем возможность внесения изменений в документацию OpenVZ всё еще существует — исходные тексты доступны в репозитории openvz-docs.
Из других технических изменений:
Linux ядро тепреь базируется на последней версии ядра от Red Hat — RHEL 7 (версия соответствует ядру 3.10+). Размер патча по сравнению с ядрами RHEL5, RHEL6 был существенно уменьшен, что удалось достичь за счет активного использования штатных технологий, уже включённых в состав основной ветки ядра Linux: memory cgroups, CRIU, виртуализация NFS. «Живая» миграция для контейнеров теперь реализована с помощью инструментария CRIU и P.Haul вместо использования кода «заморозки»/«разморозки» процессов, реализованного в предыдущих версиях vzkernel.
Есть и неприятная новость. До сих пор в предыдущих версиях OpenVZ и коммерческом продукте Virtuozzo утилита vzctl разрабатывалась независимо. В OpenVZ/Virtuozzo 7.0 было решено оставить версию из коммерческого продукта, поэтому совместимость vzctl была нарушена. Для управления контейнерами и виртуальными машинами рекомендуется использовать утилиту prlctl. Для начала работы с новой утилитой можно воспользоваться «шпаргалку» с синтаксисом популярных команд. В последующих версиях планируется отказаться от утилиты vzctl и использовать prlctl как основную утилиту.
Для установки OpenVZ 7.0 доступен установочный образ, который можно загрузить c сервера OpenVZ или с одного из зеркал проекта.