1. Что такое Virtuozzo

Parallels Virtuozzo Containers, или просто Virtuozzo, — уникальное решение, объединяющее гипервизор KVM и виртуализацию на базе контейнеров, продукт компании Virtuozzo, Inc. В отличие от других подобных решений, Virtuozzo устанавливается на голое железо и представляет собой отдельный дистрибутив Linux (Virtuozzo Linux), который уже оптимизирован для задач виртуализации и хостинга. Все, что нужно, — взять и установить его на машину, которая будет сервером виртуализации. При этом не требуется устанавливать или компилировать ядро, бороться со всевозможными глюками, и никто не ограничивает тебя возможностями ядра 2.6 — Virtuozzo использует ядро 3.10 с долгосрочной технической поддержкой.

 

2. Как это работает

Virtuozzo Linux устанавливает будущий сервер виртуализации, далее администратор создает, настраивает и запускает контейнеры или виртуальные машины — каждая из которых превратится в виртуальный сервер (Virtual Private Server).

Дальше все зависит от поставленных задач — например, можно превратить виртуальные серверы в веб-серверы и продавать их (типичное решение для VPS-провайдера). Виртуальные серверы могут работать под управлением различных дистрибутивов Linux (а внутри виртуальной машины можно запустить вообще любую ОС, даже Windows Server 2012 R2) — ты можешь выбрать из предустановленных шаблонов тот, который больше нравится. После того как виртуальный сервер запущен, уже никто не ограничивает администратора в установке и настройке программного обеспечения. В виртуальные серверы дистрибутивы Linux устанавливаются как полноценные, а не как урезанные копии.

Схема виртуализации изображена на рис. 1. Сам рисунок позаимствован из документации по Virtuozzo. Так, у нас есть железо сервера, есть уровень виртуализации и есть контейнеры.

Рис. 0. Немного истории
Рис. 0. Немного истории

Рис. 1. Схема виртуализации
Рис. 1. Схема виртуализации

Контейнеры выглядят как независимые серверы под управлением Linux. Контейнеры не применяют для виртуализации эмуляцию аппаратуры, а эффективно разделяют общее ядро и его ресурсы между всеми контейнерами и самим физическим сервером.

Каждый контейнер может распоряжаться ресурсами всего физического сервера, также можно эффективно ограничивать использование им памяти, процессорного времени, операций ввода-вывода и сетевого трафика.

Технология контейнерной виртуализации предоставляет наивысшую плотность среди других решений виртуализации. Можно создать и запустить сотни контейнеров на стандартном физическом production-решении. В каждом контейнере может быть только одна операционная система, что упрощает обслуживание и обновление контейнеров.

 

3. Системные требования и ограничения

Системные требования для автономных установок выглядят так:

  • платформа x86-64 с аппаратной поддержкой виртуализации Intel VT-x (с «неограниченным гостем»);
  • минимум четырехъядерный 64-битный процессор;
  • минимум 4 Гбайт оперативной памяти;
  • минимум 64 Гбайт на жестком диске, желательно SSD;
  • сетевой адаптер Ethernet с подключением к сети и корректным IP-адресом.

Проверить, поддерживает ли твой Intel-процессор «неограниченного гостя», можно с помощью этого сценария. Запусти его так:

python vmxcap.py | grep -i unrest

Результат должен быть yes.

Системные требования для размещения серверов в Virtuozzo Storage Cluster:

  • Virtuozzo 7;
  • 1 Гбайт оперативной памяти на каждые 100 Тбайт хранилища;
  • 10 Гбайт или более дискового пространства;
  • 1 Ethernet-адаптер 1 Гбит/с, статический IP-адрес для каждого адаптера.

Ограничения:

  • максимальный объем оперативки (сертифицированный) — 256 Гбайт, теоретический максимум — 64 Тбайт;
  • максимальный размер HDD — 16 Тбайт.
 

4. Установка Virtuozzo

Установка Virtuozzo аналогична установке дистрибутива Fedora — инсталлятор Anaconda абсолютно такой же (рис. 2). Для установки Virtuozzo нужно выполнить следующие действия:

  1. Загрузиться с инсталляционного диска.
  2. Нажать кнопку «Installation destination».
  3. Если устанавливаешь на новый сервер, где нет операционной системы, выбери «Automatically configure a partitioning» и нажми кнопку «Done» (рис. 3).
  4. Если операционная система уже установлена и есть желание ее сохранить, тогда нужно выбрать «I will configure partitioning» и настроить разделы вручную.
  5. Нажать кнопку «Begin installation» (рис. 4).
  6. Во время установки системы нужно установить пароль root и создать одного обычного пользователя (рекомендуется из соображений безопасности), см. рис. 5.

Рис. 2. Инсталлятор Virtuozzo
Рис. 2. Инсталлятор Virtuozzo

Рис. 3. Разметка диска
Рис. 3. Разметка диска

Рис. 4. Нажми кнопку Begin installation
Рис. 4. Нажми кнопку Begin installation

Рис. 5. Установка Virtuozzo
Рис. 5. Установка Virtuozzo

После перезагрузки появится возможность войти в систему (рис. 6).

Рис. 6. Вход в систему
Рис. 6. Вход в систему
 

5. Выбор шаблона

Перед созданием контейнера необходимо выбрать шаблон операционной системы (OS EZ Template), проще говоря — операционную систему, которая будет в контейнере.

Для просмотра всех шаблонов введи команду

vzpkg list --with-summary | less
Рис. 7. Список шаблонов
Рис. 7. Список шаблонов

Дистрибутивы доступны на любой вкус, как RH-совместимые, так и богатый выбор дистрибутивов Debian/Ubuntu. Посмотреть, есть ли какой-то определенный дистрибутив, удобнее при помощи команды grep:

vzpkg list --with-summary | grep centos
Рис. 8. Отфильтровываем шаблоны
Рис. 8. Отфильтровываем шаблоны
 

6. Создание и настройка контейнера

Создать контейнер на базе определенного шаблона можно так:

prlctl create MyCT --vmtype ct --ostemplate centos-6-x86_64

Создать контейнер на базе шаблона по умолчанию позволяет команда

prlctl create MyCT --vmtype ct

Шаблон по умолчанию указывается в /etc/vz/vz.conf. Кстати, по умолчанию используется шаблон centos-7.

Рис. 9. Создание контейнера
Рис. 9. Создание контейнера

Все содержимое контейнеров хранится в приватной области контейнера. Чтобы выяснить, где она находится, используется команда prlctl list:

prlctl list MyCT -i | grep "Home"
Home: /vz/private/26bc47f6-353f-444b-bc35-b634a88dbbcc

При желании эту область можно перенести на другой жесткий диск — более быстрый или там, где есть больше свободного пространства.

 

7. Управление ресурсами контейнера

После создания контейнера его конфигурация хранится в файле /etc/vz/conf/<ID контейнера>.conf. По умолчанию создается контейнер с 64 Мбайт оперативной памяти, 10 Гбайт дискового пространства, 1000 единиц CPU. Пример конфигурационного файла приведен на рис. 10.

Рис. 10. Конфигурационный файл контейнера
Рис. 10. Конфигурационный файл контейнера

Очень важен параметр ONBOOT — если он включен (значение yes), то контейнер будет загружаться при запуске сервера виртуализации.
Единственное, к чему придется привыкнуть, — это неудобные идентификаторы контейнеров. Вывести список доступных контейнеров можно командой

prlctl list -a
Рис. 11. Команда prlctl list -a
Рис. 11. Команда prlctl list -a

Поле STATUS показывает состояние контейнера или виртуальной машины, IP-ADDR — IP-адрес контейнера, T — это тип объекта, может быть или CT (контейнер), или VM (виртуальная машина), NAME — это имя контейнера/машины, заданное при создании (в нашем случае MyCT). Конечно же, UUID содержит уникальный идентификатор контейнера/машины.

Рассмотрим несколько примеров управления ресурсами контейнера (подробная информация есть в мануале). Начнем с изменения производительности процессора. По умолчанию задается 1000 процессорных единиц (CPU Units). При желании можно повысить производительность процессора и отдать больше процессорных единиц:

prlctl set MyCT --cpuunits 2000

Процессорные единицы — немного абстрактное понятие, но Virtuozzo позволяет задавать конкретные значения. Так, в следующем примере контейнер не может расходовать более 25% от физического процессорного времени:

prlctl set MyCT --cpulimit 25

Можно задать частоту процессора контейнера (750 МГц):

prlctl set MyCT --cpulimit 750m

Или ограничить количество ядер:

prlctl set MyCT --cpus 1

Теперь о памяти. Задать размер оперативки и свопа можно так:

prlctl set MyCT --memsize 1G --swappages 512M

Можно также отредактировать файл конфигурации контейнера (разумеется, при остановленном контейнере):

PHYSPAGES="65536:65536"
SWAPPAGES="65536"

Изменить размер виртуального диска позволяет команда prl_disk_tool:

prl_disk_tool resize --hdd /vz/private/b0ba4e74-44d9-49c9-9587-49de1b2377cd/root.hdd/root.hds --size 80G

Перед изменением размера нужно остановить контейнер / виртуальную машину, а также удалить любые снапшоты, если они были созданы.
Параметры сети задаются так:

prlctl set MyCT --hostname myct.example.com
prlctl set MyCT --ipadd 192.168.52.101

Первая команда определяет имя узла, вторая — его IP-адрес. Процесс настройки контейнера изображен на рис. 12.

Рис. 12. Конфигурирование контейнера
Рис. 12. Конфигурирование контейнера
 

8. Управление контейнерами

Что ж, после настройки контейнера самое время его запустить. Для этого используется команда

# prlctl start MyCT

После этого сразу вводим команду просмотра состояния prlctl list -a и видим, что наш контейнер запущен (статус running) и ему присвоен IP-адрес 192.168.52.101. Попробуем его пропинговать. Результат всех этих действий приведен на рис. 13. Как видишь, контейнер полностью функционирует — он запущен, и к нему идет ping.

Рис. 13. Контейнер запущен
Рис. 13. Контейнер запущен

Для остановки и перезапуска контейнера используются команды stop и restart соответственно:

prlctl stop MyCT
prlctl restart MyCT

Для удаления контейнера его нужно сначала остановить, а потом удалить:

prlctl stop MyCT

prlctl delete MyCT

 

9. Запуск команд и вход в гостевую операционную систему

Для выполнения произвольных команд используется команда exec. Первым делом изменим пароль root:

prlctl exec MyCT passwd
Рис. 14. Изменение пароля root для гостевой ОС
Рис. 14. Изменение пароля root для гостевой ОС

Теперь попробуем подключиться по SSH к гостевой ОС:

ssh 192.168.52.101

Служба sshd на гостевой ОС уже запущена, что упрощает управление гостевой операционкой. Вообще, можно вводить команды и через exec, но по SSH, думаю, будет удобнее. На рис. 15 показано подключение к гостевой операционке, показана разметка диска контейнера, а также использование памяти.

Рис. 15. Подключение к контейнеру по SSH
Рис. 15. Подключение к контейнеру по SSH

После установки SSH-подключения можно вводить команды без префикса prlctl exec, что гораздо удобнее.

Вот, собственно, и все! Виртуальный сервер создан и работает, далее, используя SSH, можно приступить к установке программного обеспечения и к его настройке. Дополнительная информация по настройке и управлению контейнерами Virtuozzo будет в официальном мануале. Список мануалов доступен по адресу http://docs.virtuozzo.com/master/index.html.

 

10. Делаем работу с Virtuozzo удобнее

Virtuozzo Linux — это обычный дистрибутив, а не какая-то урезанная его версия. Дистрибутив RH-совместим, что позволяет устанавливать RPM-пакеты. К счастью, вручную устанавливать ничего не придется, так как Virtuozzo Linux содержит довольно богатые репозитории, из которых ты можешь установить свой любимый софт. Я, например, установил mc:

yum install mc

Рис. 16. Установка софта в Virtuozzo Linux
Рис. 16. Установка софта в Virtuozzo Linux

Рис. 17. Файловый менеджер mc в Virtuozzo Linux
Рис. 17. Файловый менеджер mc в Virtuozzo Linux

На этом все. Дополнительную информацию, в том числе и о совместимости с родственной OpenVZ, можно найти в блоге разработчика.

2 комментария

  1. Al1en

    27.09.2016 at 12:18

    Респект автору, что познакомил с таким продуктом!

  2. olegbukatchuk

    26.11.2016 at 20:31

    Это коммерческий продукт или Open Source?

Оставить мнение

Check Also

Android: Flytube — плеер YouTube с плавающим окном

Признайся, сколько раз, пользуясь планшетом или смартфоном, ты хотел запустить видеопроигр…