Архив метки: Виртуализация

libvirt & Co. Облако "на коленке". Часть 1

Buzzword

Облако(cloud) это инфраструктура для управления виртуальными машинами. Агенты облака устанавливаются на железных серверах, превращая их единый мегасервер, которые используется для виртуализации. Облако должно уметь:

  • запускать группы виртуальных машин на базе загруженных в него образов
  • изменять образы виртуальных машин
  • управлять сетевой инфраструктурой — объединять виртуальные машины в ( возможно виртуальные ) локальные сети, настраивать правила доступа к этим сетям извне и доступ наружу из сетей
  • поддерживать остановку, приостановку и миграцию виртуалок
  • балансировать нагрузку на железные сервера
  • управлять местом на дисках
  • …………..

Предисловие

На сегодняшний день есть четыре основных облачных системы — перспективный и активно развиваемый openstack, рабочий но мало интересный из-за лицензии eucalyptus, совсем-совсем проприетарный VMware vCloud и очень-очень microsoft azure. Но это все «серьезные» облака, а как это часто бывает большие системы не удобно использовать на малых задачах. Я расскажу как управлять небольшими группами виртуальных машин «малой кровью». Впрочем openstack использует эти же утилиты, а все остальные узнают на чем основываются linux клауды.

Для описанных методик вам необходим Linux 2.6.26+ и процессор с поддержкой виртуализации. Проверить это можно следующими командами:

Hightlited/Raw

$ cat /proc/cpuinfo | egrep 'vmx|svm'
$ cat /proc/cpuinfo | egrep 'rvi|ept'

$ cat /proc/cpuinfo | egrep 'vmx|svm'
$ cat /proc/cpuinfo | egrep 'rvi|ept'

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

Вложенная аппаратная виртуализация не поддерживается, т.е. если linux установлен в виртуальной машине, то описанные примеры работать не будут. Впрочем и те, кто запускает линукс в виртуалке и те, у кого нет поддержки виртуализации могут адаптировать эти примеры для использования xen c паравиртуализацией или lxc — эти техники не требуют аппаратной поддержки. В принципе ипользуемая libvirt имеет зачаточную поддержку windows, желающие могут попробовать и так.

Из других аппаратных требований желательно по-больше оперативной памяти (3Gb+) и быстрый диск (SSD). На магнитном жестком диске все будет работать, но некоторые наиболее интересные варианты организации виртульных образов заметно тормозят на дисковых операциях из-за большого количества разрозненных обращений.

Все примеры для Ubuntu 11.10, для других дистрибутивов нужно подправить обращения к пакетному менеджеру и пути к конфигам.

libvirt

Хотя формально libvirt называется библиотекой, но это целая инфраструктура для управления виртуальными машинами. Она включает:

  • libvirt-bin демон с внешним API, управляющий виртуальными машинами
  • libvirt — библиотека для доступа к демону
  • masqdns — dns/dhcp сервер, используемый совместно с iptables, vlan и бриджами для управлением виртуальными сетями
  • virsh — клиент командной строки

libvirt предоставляет почти унифицированный интерфейс для работы с различными гипервизорами — поддерживаются kvm, lxc, xen, vmware, hyper-v, openvz, и другие — в общем почти все, что еще шевелится. При этом libvirt не пытается подобрать общий знаменатель ко всем системам виртуализации, а предоставляет полный набор возможностей каждого гипервизора — просто не все конфигурации будут работать на всех системах виртуализаций.

KVM и/или Xen? Выбор платформы виртуализации

Читая новости, я обнаружил статью с кратким обзором имеющихся решений виртуализации от небезызвестного Joe Brockmeier. Статья показалась мне интересной, привожу свой перевод. Ссылка на оригинал традиционно приводится в конце статьи.

Понедельник, 12 Июля 2010 00:00 Joe 'Zonker' Brockmeier

Когда Xen появился в 2002 году, он, выпущенный под лицензией GPL, выглядел основным претендентом на «корону» основной платформы виртуализации для Linux. Если же мы быстро перенесемся в настоящее время, то увидим что новичок в этой области полностью вытеснил Xen, как основу виртуализации по умолчанию в дистрибутивах Red Hat и, более того, вполне себе комфортно обосновался в основном ядре Linux. Что же выбрать из них? Xen или KVM?
Область виртуализации развивается довольно быстро. Поэтому если у вас нет времени следить за разработкой KVM или Xen, то у вас неизбежно появятся затруднения в выборе лучшего для вас варианта. Ниже приведен беглый обзор состояния текущего рынка решений виртуализации на основе Xen и KVM.
KVM и Xen
Xen это гипервизор, поддерживающий следующие архитектуры: x86, x86_64, Itanium, и ARM. Он может запускать Linux, Windows, Solaris, и некоторые из BSD-систем в качестве гостевых ОС (на поддерживаемых гостевой системой процессорных архитектурах). Он поддерживается рядом компаний, в первую очередь Citrix , также используется Oracle для Oracle VM, и других. Xen может реализовать режим полной виртуализации на тех системах, которые имеют поддержку технологии аппаратной виртуализации (такие как Intel-VT и AMD-V), а может работать как обычный гипервизор на машинах, которые не имеют таких расширений.
KVM это гипервизор, который находится в основном ядре Linux. Вашей родительской системой в случае его использования, естественно, обязана быть Linux, но в качестве гостевых систем поддерживаются Linux, Windows, Solaris и BSD-системы. Он работает на архитектурах x86 и x86-64 с аппаратной поддержкой виртуализации. Это означает, что KVM не может использоваться на старых процессорах не имеющих такой поддержки, а также на некоторых новых CPU (например, процессоры Intel Atom). По большей части, это не проблема для дата-центров, которые, так или иначе, все равно меняют оборудование раз в
несколько лет. Но это также означает, что KVM не вариант для ряда узкоспециализированных систем, таких например, как SM10000, которые пытаются использовать процессоры Atom в центрах обработки данных.
Если вы хотите использовать виртуализацию на основе Xen, то вам нужно ядро, собранное с его поддержкой. Хоть Linux и может запускаться в качестве гостевой системы под Xen с ядра версии 2.6.23, использовать ее «из коробки» в качестве родительской системы не получится. Это означает, что не каждый дистрибутив Linux можно использовать для запуска виртуальных машин под Xen. Поэтому вам нужно выбрать дистрибутив Linux, который поставляется с поддержкой Xen или собрать собственное ядро (Последний совет не самый легкий путь, поскольку патчей для поддержки Xen очень много, накладываются они не на каждое ядро и даже если они все наложатся успешно, не факт, что ядро корректно соберется. Проще найти дистрибутив, ядро которого уже пропатчено для поддержки Xen. Поскольку Novell поддерживает решения на Xen, то, например, все ядра openSUSE собираются с его поддержкой. Найти их можно здесь. Прим. перев.). Еще один путь — использовать одно < span style="font-family: Times New Roman,serif;">из коммерческих решений на базе Xen, такое как Citrix XenServer. Единственная проблема в том, что эти решения зачастую не являются решениями с полностью открытым исходным кодом.
Поэтому многие собирают собственные ядра или ищут того, кто может это сделать. Xen используется на довольно большом количестве серверов: от недорогих провайдеров Virtual Private Server (VPS) (как Linode ) до таких «больших мальчиков», как Amazon EC2.Статья на TechTarget показывает, что провайдеры, которые вложили значительные средства в решения на Xen совсем не собираются переключаться на что-либо еще. Даже если KVM и превосходит Xen технически, они вряд ли будут ломать и перестраивать существующие решения только для того, чтобы получить незначительный выигрыш.
Но у KVM в любом случае пока еще нет таких технических преимуществ. Поскольку Xen используется < span style="font-family: Times New Roman,serif;">немногим дольше, у него было больше времени для достижения зрелости, чем у KVM. Вы можете найти некоторые возможности в Xen, которые еще не появились в KVM, хотя этот проект имеет длинный список TODO (то, что приведено в этом списке — просто набор идей над которыми планируют работать разработчики KVM, а не идеи по достижению паритета с Xen). У KVM на самом деле есть пока только одно небольшое преимущество, которое может позволить ему стать основным гипервизором в Linux. Если вы используете последние ядра Linux, у вас уже есть KVM. В Red Hat Enterprise Linux с версии 5.4 включена поддержка KVM и эта компания предполагает отказаться от Xen в пользу решений на KVM в RHEL 6.
Это, в частности, может служить указанием того, чего достиг KVM в техническом плане. Мало того, что Red Hat имеет преимущество в наличии значительного количества талантливых программистов для разработки KVM, у них есть еще одно преимущество, выражающееся в появлении дополнительных препятствий для компаний, которые клонировали Red Hat Enterprise Linux и инвестируют значительные средства в Xen. Исключая Xen из планов своего развития, они заставляют эти компаний также отказаться от Xen или брать поддержку Xen-решений на себя и отказаться от клонирования RHEL. Это означает дополнительные расходы на инженеров, больше усилий для ISV-сертификаций и т.д.
KVM в настоящее время не может тягаться с Xen, хоть и быстро его догоняет. Он достиг достаточной степени зрелости для того, чтобы многие организации комфортно использовали его в своей работе. Значит ли это, что Xen'у пора на выход? Не так быстро.

Останется только один?

Выбор «KVM или Xen» скорее всего будет диктоваться вашим вендором. Если вы используете RHEL в течение длительного времени, ставьте на KVM. Если вы используете Amazon EC2, вы уже используете Xen, и т. д. Основные Linux-вендоры, по-видимому, будут предлагать решения на основе KVM, но есть и достаточное количество коммерческой поддержки для Xen. Весьма вероятно, что Citrix не собирается в ближайшее время уходить с этого рынка.
Бывает очень соблазнительно рассматривать технологию в ИТ-индустрии как игру с нулевой суммой (игра, в которой выигрыш одного означает аналогичный проигрыш другого — прим. перев.), где одно решение выигрывает, а другое — проигрывает. Н
о истина заключается в том, что Xen и KVM в ближайшее время будут сосуществовать. Рынок виртуализации достаточно велик, чтобы на нем хватило места нескольким решениям, у каждого из них имеется серьезный тыл, что также гарантирует их совместное сосуществование.

Автор: stranger