Немного историиnnИстория нынешнего проекта Virtuozzo началась более 15 лет назад, когда компания занялась разработкой инструментария контейнерной виртуализации для Linux. В 2001 году был представлен промышленный продукт Virtuozzo, быстро завоевавший популярность у хостинг-провайдеров благо-даря высокой плотности виртуальных окружений и низким накладным расходам, сочетавшимся с хорошей изоляцией окружений друг от друга.nnVirtuozzo изначально был проприетарным продуктом, однако с 2005 года многие наработки компании стали доступны всем желающим в рамках Open Source проекта OpenVZ. Проект предоставлял сборки Linux-ядра с наложенны-ми патчами для контейнерной виртуализации и утилиту для управления контейнерами. На ранних этапах развития эти патчи в основную ветку Linux-ядра интегрировалиcь. Как следствие, размер патчей со временем только увели-чивался, а затраты на портирование на новые версии ядер возрастали.nnСпособ борьбы с этой проблемой был достаточно очевиден – необходимо переносить нужные патчи в основную ветку разработки ядра. Поэтому в 2007 году компания приняла стратегическое решение по интеграции наработок в «ванильное» ядро, и первые успехи не заставили себя ждать: совместно с разработчиками из IBM в основную ветку была добавлена реализация пространства имен PID, и в том же году разработчик OpenVZ добавил поддержку пространства имен для сети .nnИнтеграция крупных изменений в ядро Linux не всегда проходит гладко, ведь необходимо выработать решение, устраивающее всех участников разработки. А многие из этих участников не всегда соглашаются с востребован-ностью той или иной функциональности либо имеют свое видение, как решать определенную проблему. Поэтому этот процесс сопровождается длительными обсуждениями и переработкой патчей .nnНо и реальные плоды этого взаимодействия сообщество пожинает уже несколько лет – во многом благодаря усилиям разработчиков OpenVZ стало возможным появление в ядре механизмов виртуализации, используемых ныне в LXC (Linux Containers) и других инструментах. При этом весомый вклад в развитие LXC внесли и другие разработчики и компании (в частности, Google), так что в итоге получилась взаимовыгодная кооперация.nnМежду тем сообщество – сообществом, а бизнес – бизнесом. С течением времени проект OpenVZ несколько от-далился от коммерческого Virtuozzo (например, для одних и тех же действий в этих продуктах использовались ко-манды с разными именами и опциями – мелочь, а неудоб-но). В 2007 году SWsoft сначала слилась со своей дочер-ней компанией Parallels, а затем взяла ее имя, и, наконец, спектр предлагаемых компанией продуктов сильно рас-ширился. В частности, в сфере серверной виртуализации в 2013-м был представлен продукт Paralles Cloud Server (PCS), объединивший в себе контейнерную и гипервизорную виртуализацию, который дополнялся распределенной системой хранения данных для облаков – Parallels Cloud Storage.nnСледующим шагом стало решение объединить в 2015 году кодовые базы открытого OpenVZ и коммерческого Parallels Cloud Server в рамках проекта с хорошо знакомым именем – Virtuozzo. Именно в рамках этого проекта и ведется сейчас разработка следующей версии продукта, в основе которой лежит ядро из Red Hat Enterprise Linux 7. Летом 2015-го был выпущен Technical Preview для Virtuozzo 7, выложенный в пу-бличный доступ на сайте OpenVZ [4].nnИменно обзору этого продукта мы посвятим оставшуюся часть этой статьи и, надеемся, еще ряд статей в будущем. Помните, что дистрибутив Virtuozzo 7 на данный момент на-ходится в стадии разработки, и использовать его рекомен-дуется только для знакомства и экспериментов. Если вам необходим продукт для промышленного использования, стоит обратиться к предыдущей версии.nnРазработчики придерживаются принципов обратной со-вместимости, и практически все описанные в данной статье команды будут работать как в новой, так и в старой версии Virtuozzo.nnПервое знакомство с Virtuozzo 7nnВ данной статье мы ограничимся обзором контейнеров, реализация которых не опирается на возможности аппаратуры, поэтому для использования контейнеров Virtuozzo можно развернуть как на реальной, так и в виртуальной машине. Минимальная конфигурация, достаточная для знакомства с продуктом, – 1 ядро процессора, 1 Гб оперативной памяти и 10 Гб свободного места на диске.nnДля развертывания Virtuozzo 7 предоставляются ISO-об-разы с установщиком, основанным на программе установки Red Hat Enterprise Linux. Процесс установки не отличается от Red Hat за тем исключением, что единственным вариантом набора ПО (Software Selection) является Virtuozzo, а источником пакетов – локальный носитель. Во время установки пакетов необходимо задать пароль root и при необходимости создать локального пользователя.nnУстановка займет совсем немного времени, и по ее за-вершении можете перезагрузить машину и оказаться внутри дистрибутива, основанного на RHEL 7, но использующего специализированное ядро и сопутствующий инструментарий для управления контейнерами. Экспериментировать с кон-тейнерами можно сразу после входа в систему, никаких дополнительных действий не требуется. Однако помните, что для работы с контейнерами необходимы права супер-пользователя.nnУправление контейнерами осуществляется из командной строки с помощью утилиты prlctl. Для начала создадим контейнер CentOS 7, используя соответствующий шаблон:n
# prlctl create СentOS --vmtype ct --ostemplate centos-7-x86_64
Опция —vmtype указывает, какого типа виртуальное окружение следует создать. В этой статье мы ограничимся контейнерами (ct) – легковесными окружениями, использу-ющими виртуализацию на уровне ОС. Контейнеры Virtuozzo могут использоваться только для запуска дистрибутивов Linux, поскольку в каждой гостевой системе используется то же ядро, что и в основной. Инструментарий позволяет создавать и полноценные виртуальные машины, в которых можно запускать произвольные ОС; для этого необходимо выставить опцию —vmtype в значение vm. Многое из того, что мы расскажем ниже об управлении контейнерами, спра-ведливо и для виртуальных машин.nnСразу отметим, что для prlctl хорошо настроено автодополнение оболочки bash, затрагивающее как сами команды и опции, так и их аргументы – имена шаблонов, контейнеров и прочих сущностей. Так что, если возникают сомнения в том, как называется та или иная опция, либо просто хочется побыстрее набрать команду, смело жмите клавишу <Tab>.nnСкачивание и развертывание шаблона – дело не бы-строе, и для ускорения процесса нужные шаблоны можно предварительно закэшировать. Например, вот так можно скачать шаблон Ubuntu 14.04, закэшировать его и затем развернуть из него контейнер:n
# yum install -y ubuntu-14.04-x86_64-ezn# vzpkg create cache ubuntu-14.04-x86_64n# prlctl create Ubuntu --vmtype ct --ostemplate ubuntu-14.04-x86_64
На данный момент в репозиториях Virtuozzo доступны шаблоны для 64-битных CentOS 6 и 7, Ubuntu 14.04, 14.10 и 15.04, Debian 8.0, Fedora 22, а также 32-битный CentOS 5. Загружен-ные шаблоны помещаются в директорию /vz/template/cache.nnПосле создания контейнер не активен; запустить его можно с помощью команды start:n
# prlctl start Ubuntu
Обращаться к контейнеру можно как по имени, так и по его уникальному идентификатору (UUID). Идентификатор не так удобен, но иногда без него не обойтись – на-пример, служебные данные контейнера с идентификатором ID размещаются в директории /vz/private/ID, основные нас-тройки – в файле /etc/vz/conf/ID.conf, а файловая система контейнера монтируется в директорию /vz/root/ID.nnСегодня Virtuozzo –это уже не только легковесная виртуализация на уровне ОС, но и полноценные виртуальные машиныnnКонтейнеры запускаются в неинтерактивном режиме, не предоставляя вам управляющий терминал. Запустить се-анс оболочки внутри контейнера с помощью команды:n
# prlctl enter
Другие базовые команды prlctl: > list – получить перечень всех активных контейнеров и сведений об их состоянии (а с опцией «-a» будут пока-заны как активные, так и неактивные контейнеры);nn> status – получить информацию о конкретном контейнере; nn > stop – остановить контейнер;nn > restart – перезапустить контейнер; если контейнер не был активен, то он будет запущен;nn> delete – удалить контейнер (обратите внимание, что удалить можно только неактивный контейнер, то есть перед удалением его необходимо остановить);nn > exec – выполнить произвольную команду внутри контейнера; вывод команды будет перенаправлен в ваш терминал;nn> mount/umount – смонтировать/отмонтировать файловую систему неактивного контейнера в соответствующую поддиректорию /vz/root; nn > clone – создать клон контейнера, отличающийся от оригинала только MAC-адресом; эта же команда может быть использована для создания шаблона на основе существующего контейнера.nnОтдельного внимания заслуживает команда set, с помощью которой можно управлять всевозможными аспектами конфигурации ваших виртуальных окружений. Посредством этой команды задаются аппаратные параметры и ограничения (количество ядер процессора и оперативной памяти, лимиты на их использование и тому подобное), пароли пользователей внутри контейнера (в том числе root), сетевые настройки (IP-адрес, DNS, имя машины), параметры VNC для доступа к контейнеру и многое другое.nnНапример, можно ограничить контейнер CentOS размером памяти в 1 Гб и одним ядром процессора:n
# prlctl set CentOS --memsize 1G --cpus 1
А вот так – ограничить размер его жесткого диска:n
# prlctl set UbuntuVz7 --device-set hdd0 --size 100G
Полезна возможность добавлять контейнерам произвольные описания – ведь по короткому названию не всегда можно вспомнить, для чего контейнер предназначен. Описа-ние задается с помощью все той же команды set:n
# prlctl set CentOS --description «My first CentOS container»
А получить описание можно с помощью команды list, явно затребовав нужное нам свойство:n
# prlctl list CentOS -o description
Приведенные примеры – это лишь небольшая часть возможностей инструментов управления контейнерами. Пол-ный перечень доступных команд и их подробное описание доступны в man-страничке утилиты prlctl. За некоторыми из них скрываются возможности, заслуживающие отдельно-го внимания, однако мы надеемся, что и изложенного выше материала хватит, чтобы приступить к изучению одного из лидеров на рынке серверной виртуализации.nnИсточник журнал «Системный администратор» № 157, 2015n
Услуги по установке, настройке сопровождению виртуализации. Подробнее [email protected]