Содержание


Виртуализация в GNU/Linux

Часть 1. Знакомство с libvirt и oVirt

Comments

Серия контента:

Этот контент является частью # из серии # статей: Виртуализация в GNU/Linux

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Виртуализация в GNU/Linux

Следите за выходом новых статей этой серии.

Немного истории

Виртуальные машины (CP/CMS) впервые были использованы IBM в январе 1967 года. Основной идеей было эффективное использование мощного (по тем временам) и дорогого компьютера несколькими пользователями одновременно. При этом каждый пользователь получал свой персональный виртуальный компьютер. Дисковое пространство разбивалось на минидиски, которые закреплялись за соответствующими виртуальными компьютерами.

Технологии виртуализации можно, например, использовать для тестирования новых и нестабильных программ, которые могут нарушить работу операционной системы, или для изучения работы различных служб операционной системы и так далее. Существует большое количество средств витуализации, как коммерческих, так и с открытым исходным кодом. Возьмём, например, две конкурирующие технологии – гипервизоры Xen и KVM.

Гипервизор Xen

Xen – очень популярная технология, которая поддерживает аппаратную виртуализацию процессоров Intel-VT и AMD-V, но необходима специальная адаптация ядра операционной системы (паравиртуализация). Хотя такая адаптация не требует больших затрат, но всё-таки затрудняет параллельное развитие ядра для нормальной системы и с поддержкой Xen. Например, полная поддержка Xen существует в Fedora 8 и, возможно, планируется в Fedora 12. А Fedora 9/10/11 только частично поддерживают эту технологию, и компьютеры под управлением этих операционных систем не могут быть использованы как хост. Тем не менее, такие коммерческие решения, как XenServer или Virtual Iron, которые включают в себя операционные системы с поддержкой технологии Xen, очень широко распространены.

Технология KVM

В последнее время всё большее распространение приобретает технология KVM (Kernel-based Virtual Machine), которая также поддерживает аппаратную виртуализацию процессоров Intel-VT и AMD-V. KVM —основана на загружаемом модуле ядра. Новый импульс развитию этой технологии придало приобретение компанией RedHat разработчика KVM – компании Qumranet. В ближайших планах RedHat – постепенная миграция с Xen на KVM. Показательно, что KVM была включена в последнюю версию RedHad Enterprise Linux 5.4.

Долгое время KVM развивалась вместе с эмулятором QEMU. Именно QEMU "умеет" создавать среду виртуальной машины, так что операционная система, запущенная в эмуляторе, "думает", что она работает с реальными устройствами, видеокартой, процессором, дисками и т.д. В принципе, QEMU может работать и без KVM, но при этом наблюдаются значительные потери его производительности, поэтому использование QEMU всегда подразумевает использование KVM. Только в начале 2007 года поддержка KVM была добавлена в инструментарий (toolkit) libvirt.

Инструментарий libvirt

Сейчас libvirt – это очень мощный набор утилит и библиотек для работы с различными технологиями виртуализации: Xen, KVM, OpenVZ и другими. С помощью утилит командной строки можно создавать виртуальные машины, редактировать, управлять ими, т.е. запускать, останавливать, сохранять состояние и т.д. Пользователь виртуальной машины может подключаться к ней с помощью VNC-клиента по защищённому протоколу. Благодаря сервису libvirtd работа с виртуальными машинами может быть как локальной, так и удалённой. Но и это ещё не всё! Набор библиотек libvirt включает большой набор различных функций, которые вызываются не только из программ, написанных на языке C, поддерживаются и другие языки программирования: Python, Perl, OCaml, Ruby, Java и даже C#. Таким образом, несмотря на то что в libvirt нет графических утилит, на его базе могут быть построены любые графические приложения для работы с виртуальными машинами.

Примером такой оболочки является "Virtual Machine Manager" или virt-manager, для краткости. "Менеджер управления виртуальными машинами" написан на языке Python, графический интерфейс этой программы реализован при помощи Glade и GTK+. В главном окне управления можно видеть список виртуальных машин, загрузку процессора и использование памяти как каждой виртуальной машиной в отдельности, так и общую сумму этих параметров. Имеются встроенный VNC-клиент, который автоматически подключается в качестве графической консоли к соответствующей виртуальной машине.

Проект oVirt

В настоящее время популярность технологий виртуализации растет быстрыми темпами. Число виртуальных машин, работающих на одном компьютере или группе компьютеров (pool), может достигать сотен и даже тысяч. Поэтому возникла острая потребность в средствах управления и администрирования такими сложными системами. Для решения этой непростой задачи был создан проект oVirt.

Если вкратце, oVirt – это масштабируемая система управления виртуализацией. Система всё ещё находится на стадии активной разработки, но уже сейчас можно испытать ее в действии. Рассмотрим структуру oVirt. Одна или несколько виртуальных машин запускаются на реальном компьютере (хосте) с установленной Fedora 11. Для управления виртуальными машинами используется libvirt. Такой хост с виртуальными машинами + libvirt в системе oVirt называется «управляемый узел» (managed node). Если говорить более формальным языком, то узел состоит из libvirtd, гипервизора и гостевых операционных систем (managed domains), которые запущены в этом гипервизоре. Таких узлов может быть несколько.

Управление осуществляется через административный узел (admin node). Он может быть развёрнут непосредственно на базе Fedora 11. Но гораздо проще и быстрее использовать готовый образ (image) виртуальной машины, который можно запустить под KVM на компьютере с Fedora 11. В этом случае никаких настроек не требуется.

Административный узел oVirt

Административный узел состоит из следующих компонентов.

  1. Web Management UI – интерфейс пользователя, построенный на базе Apache сервера и Ruby On Rails. Благодаря такому решению управление может осуществляться практически с любого компьютера с графическим браузером. Вычислительная часть построена на Ruby, который взаимодействует с libvirt и другими компонентами. Например, для хранения текущей информации используется PostgreSQL.
  2. Администрирование, аутентификация и авторизация выполняются с помощью FreeIPA, что защищает систему от несанкционированного доступа. FreeIPA – это комплексное решение для обеспечения информационной безопасности, построенное на базе MIT Kerberos, Fedora Directory Server, NTP, DNS.
  3. Кроме того, административный узел включает DNS-, DHCP- и TFTP-серверы. Одной из основных его возможностей является горячий перенос виртуальной машины с одного физического компьютера на другой без перебоев в работе и практически незаметно для пользователя. Для начальной загрузки виртуальной машины используется специальный инсталляционный сервер – cobbler, который осуществляет загрузку по сети (PXE). Разумеется, cobbler использует DNS, DHCP и TFTP серверы.
  4. Административный узел может включать и хранилище iSCSI (storage), которое также может быть развёрнуто на отдельном компьютере (хосте). Хранилище организует виртуальные диски для виртуальных машин.

Вот как это выглядит на официальном сайте oVirt:

Рисунок 1. oVirt
Рисунок 1. oVirt
Рисунок 1. oVirt

oVirt – это масштабируемая система управления виртуализацией.

Стоит обратить внимание, что компьютеры (nodes) имеют по два сетевых интерфейса. Один для пользователей виртуальных машин, а второй – для управления.

Возможности администрирования

Основные возможности администрирования включают:

  1. Создание и удаление аппаратных пулов (hardware pools), т.е. администратор при необходимости может объединять компьютеры в группы (пулы), а также изменять число компьютеров в пуле. Сначала создаётся пустой пул, и только затем администратор может добавить в него один или несколько компьютеров.
  2. Создание хранилищ и управление ими. Диски виртуальных машин находятся в хранилищах (Storage), которые тоже должны быть объединены в пулы. Хранилища могут быть построены на базе iSCSI серверов или NFS.
  3. Создание виртуальных машин и управление ими. Виртуальные машины тоже объединяются в пулы.
  4. И, наконец, гибкая система управления пользователями. Администратор может назначать роли пользователям, а также изменять их права доступа.

Другими словами система oVirt позволяет следить за загрузкой управляемых узлов, оперативно перераспределять ресурсы, обеспечивать оптимальную и стабильную работу всей системы, а также хранение и защиту данных от несанкционированного доступа.

Ввод в эксплуатацию

Проект oVirt имеет довольно подробную документацию, в которой описан процесс инсталляции и быстрое введение в систему. Теоретически, требуется не более часа, чтобы ввести oVirt в действие и начать тестирование. Для этого необходимо по крайней мере два компьютера с процессорами, поддерживающими аппаратную виртуализацию Intel-VT или AMD-V, и двумя сетевыми картами.

Пример тестирования oVirt: Скринкаст о oVirt

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


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Linux
ArticleID=439437
ArticleTitle=Виртуализация в GNU/Linux: Часть 1. Знакомство с libvirt и oVirt
publish-date=10272009