Xen

Материал из Xgu.ru

(Перенаправлено с Xen (virtual machine monitor))
Перейти к: навигация, поиск


Автор: Игорь Чубин
Xenlogo.gif

Xen — это монитор виртуальных машин (VMM, Virtual Machine Monitor) или гипервизор (hypervisor) с поддержкой паравиртуализации (para-virtualization) для процессоров x86 архитектуры, распространяющийся с открытым исходным кодом (opensource). Xen может организовать совместное безопасное исполнение нескольких виртуальных машин на одной физической системе с производительностью близкой к непосредственной (native).

Xen обладает функциональностью ПО корпоративного уровня; в нём, в частности, обеспечивается:

  • Производительность виртуальных машин близкая к производительности при непосредственном исполнении на железе;
  • Возможность живой миграции работающих виртуальных машин между хостами;
  • Поддержка до 32 виртуальных процессоров на одну гостевую машину с возможностью горячего добавления (hotplug) процессоров;
  • Поддержка платформ x86/32, x86/32 с PAE, x86/64, IA64, а также частичная поддержка платформ ARM и PPC;
  • Поддержка аппаратной виртуализации для запуска немодифицированных операционных систем (включая Microsoft Windows);
  • Отличная поддержка оборудования (поддерживаются практически все драйверы устройств Linux).

Содержание

[править] Что это

[править] Что может виртуализация

  1. Запуск множества операционных систем одновременно
  2. Гарантированная изоляция ОС друг от друга
  3. Возможность гибкого разделения ресурсов между машинами

[править] Зачем это надо

Основная статья: Преимущества виртуализации

[править] Примеры использования

Список примеров не полный.

Консолидация серверов хостинг-провайдеров:

  • Одна виртуальная машина на пользователя;
  • Динамическое создание виртуальных машин;
  • Миграция VM в пределах кластера;
  • Плавный апгрейд критических серверов.

Разработка

  • Отладка кода ядра операционной системы, кода загрузчика и кода BIOS (см., например, gdbserver-xen);

Образование

Эксперименты

Ограниченное исполнение

[править] Сравнение с другими виртуальными машинами

Сравнение виртуальных машин, сред ограниченного исполнения и эмуляторов производится на странице Сравнение виртуальных машин.


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

Принципы действия виртуальных машин/эмуляторов/сред ограниченного исполнения:

  • интерпретация и динамическая рекомпиляцияBochsPearPCQEMU — MS VirtualPC for MAC;
  • паравиртуализация и портирование — Xen — UMLlguest — Hyper-V — KVM(*);
  • виртуализация на уровне ОС — Jail — Linux-VServerOpenVZ — Virtuozzo — Zones;
  • виртуализация — VMware — MS VirtualPC — MS Virtual Server — Hyper-V — QEMU с модулем kqemu — KVM;
  • слой совместимостиCygwinWine.

(*) — KVM может исполнять паравиртуальные домены Xen при помощи Xenner.

[править] Виртуализация и паравиртуализация

Идеальная виртуальная среда абсолютно прозрачна для гостевых систем. Ключевые особенности виртуализации:

  • Общие принципы построения мейнфреймов
  • Практически невозможно для процессоров семейства i386
  • Запуск немодифицированных ОС выполняется сложно
    • Перехват привилегированных вызовов
    • Динамическое изменение кода
  • В результате в некоторых случаях производительность страдает.

Xen не скрывает себя от гостевых ОС. Наоборот, они должны быть подготовлены к работе с этой системой. Для этого выполняется:

  • Портирование операционной системы для работы с Xen
  • Гостевым операционным системам даётся возможность использования драйверов хост-системы, но только под её присмотром.

В настоящий момент модифицированный код гостевых ОС доступен для Linux и NetBSD. Ведётся работа по портированию FreeBSD, OpenSolaris и Plan9.

Xen полностью интегрирован с Linux:

  • Существует отдельная архитектура ядра (ARCH=xen)
  • Xen работает как гипервизор
  • Ядро обращается к гипервизору для получения ресурсов
  • Гипервизор использует драйверы Linux.

[править] Производительность

Основная страница: Производительность Xen

Портирование ОС на Xen позволяет добиться большей эффективности в сравнении с виртуализацией, основанной на перехвате несработавших инструкций, или тем более использовании интерпретатора или JIT-компилятора кода гостевой ОС. Минусом этого подхода является необходимость в портировании ОС, но опыт показал, что это можно сделать довольно быстро.

Операционные системы, работающие в Xen, исполняются с уровнем привилегий 1 вместо 0, который зарезервирован для Xen. В результате гостевые ОС не могут использовать привилегированные инструкции для запрета/разрешения прерываний, изменения таблиц адресов и т.д. Вместо этого они должны выполнять соответствующее обращение (hypercall) к гипервизору Xen с просьбой выполнить необходимую операцию. При правильной разработке интерфейса между виртуальными машинами и гипервизором, накладные расходы на выполнение операций малы.

Вместо того чтобы пытаться эмулировать существующее аппаратное обеспечение, Xen предоставляет специально подготовленные блочные устройства и сетевые интерфейсы гостевым операционным системам, и требует соответствующий драйвер. Преимущество такого подхода заключается в том, что производительность гостевой ОС практически не страдает: например, скорость передачи данных по Gigabit Ethernet каналу из машины, работающей под Xen, такая же как и у родной операционной системы.

Группа разработчиков Xen провела исследование производительности этой системы. Для этого система с ядром Linux 2.4.22 была запущена в различных режимах и в ней выполнялся ряд тестов. Проводилось сравнение системы работающей на реальной машине, с работой в виртуальных машинах с такими системами виртуализации:

  • VMware workstation 3.2;
  • User Mode Linux (UML).
Сравнение производительности Xen и других систем

Тесты, на которых проводилось сравнение:

  • Набор тестов SPEC CPU2000 Integer;
  • Полная сборка Linux 2.4.22 в конфигурации по умолчанию на локальном диске;
  • PostgreSQL выполняющая тест OSDB Information Retrieval (IR);
  • PostgreSQL выполняющая тест OSDB On-Line Transaction Processing (OLTP);
  • Однопользовательский тест файловой системы dbench 2.0;
  • Тест SPWCWeb99 для Web-сервера Apache 1.3.27 с модулем `mod_specweb99' для динамического создания контента.

На рисунке изображены уровни производительности для Linux (L), Xen/Linux (X), VMware Workstation 3.2 (V) и User Mode Linux (U).

Тест SPEC INT2000 наиболее требователен к процессору CPU, но практически не выполняет ввода/вывода и требует минимум работы от самой операционной системы, и вследствие этого все три техники виртуализации показали практически одинаковые хорошие результаты.

В других тестах, наоборот, требуется большее участие ОС, больше переключений контекста и больше операций по созданию процессов. Производительность Linux внутри Xen практически не отличается от производительности Linux, работающего непосредственно на железе. В наихудшем случае, при выполнении теста OSDB-IR, отставание составило 8%. При использовании других техник виртуализации, результаты не были настолько хорошими. В некоторых случаях замедление составило до 88%. В работе [4] приведены дополнительные результаты, в частности касающиеся одновременного запуска большого количества виртуальных машин.

Представленные выше результаты были проверены и подтверждены независимой группой Кларксоновского Университета (Clarkson University). С результатами исследования, проведённого этой группой, можно ознакомиться в работе "Xen and the Art of Repeated Research", которая также включает результаты сравнения производительности Xen и машины IBM zServer.

[править] Дополнительная информация

  • Xen Performance - статья группы разработчиков Xen, сравнивающая производительность Linux, Xen, UML, VMWare
  • Xen and the Art of Virtualization - статья группы разработчиков Xen, в которой описывается архитектура Xen
  • Xen and the Art of Repeated Research - результаты исследования производительности, выполненного независимой группой Кларксоновского Университета

[править] История Xen

В 1998 Ян Пратт (Ian Pratt), будущий вдохновитель и руководитель проекта Xenoserver и идеолог гипервизора Xen, пришёл на факультет компьютерных наук (Computer Science Department) Кембриджского Университета. Спустя некоторое время он выступил с идеей создания распределённой вычислительной платформы для глобальных вычислительных сетей, Xenoserver.

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

Другими компонентами были платформа Xenoserver Open Platform, которая позволила единым унифицированным способом соединить виртуальные машины и распределённые системы хранения данных и сети, а также Xenoboot, которая отвечала за удалённую загрузку и управление серверами и виртуальными машинами, исполняющимися на них, через Интернет.

Историческое сообщение о выходе Xen 1.0 на sf.net

Работа над Xen началась в 1999, когда Ян Пратт с коллегами по лаборатории и студентами начал экспериментировать над созданием средства изоляции операционных систем и их одновременного совместного исполнения на 32-битных серверах x86-архитектуры. Код гипервизора писался на Си, а управляющие механизмы — на Python.

В сентябре 2003 вышла первая версия Xen, Xen 1.0. По словам Яна Пратта были зарегистрированы десятки тысяч скачиваний. Большое количество opensource-разработчиков и энтузиастов начали экспериментировать с кодом, и обеспечили хорошую обратную связь для проекта.

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

Следующее серьёзное обновление Xen было доступно к концу 2005 года в виде версии Xen 3.0. Одним из важнейших нововведений, которое сразу сильно повысило популярность Xen и привлекло к нему большое внимание, была возможность исполнения немодифицированных систем при условии поддержки виртуализации со стороны аппаратной платформы. В частности, это дало возможность исполнять обычные (немодифицированные) операционные системы семейства Windows и прочие системы не портированные на Xen. Другими важными возможностями новой версии стали: поддержка режима адресации PAE, что дало возможность выйти за пределы 4G оперативной памяти в 32-битных системах; поддержка 64-битных систем; улучшенная поддержка ACPI и появление новых более совершенных инструментов управления.

Появление этих возможностей сделало Xen очень привлекательным для использования в коммерческих проектах. Можно сказать, что начиная с версии 3, Xen перестал быть академическим проектом и начал широко распространяться в рабочих системах.

Основная страница: Новости Xen

В мае 2007 выходит Xen 3.1.0, в котором есть множество усовершенствований, особенно интересных в производственных системах. Живая миграция теперь стала возможной и для доменов, работающих в режиме аппаратной виртуализации (Windows и проч.), до этого она была возможно только для паравиртуальных доменов. Появляется поддержка XenAPI — программного интерфейса для управления виртуальными машинами Xen.

Очередное серьёзное обновление Xen, версия 3.2.0, было сделано в январе 2008 года. В нём появилась возможность выполнять suspend-to-RAM хост-системы, поддержка модулей безопасности XSM (Xen Security Modules) и предварительная поддержка аппаратной виртуализации ввода/вывода Intel VT-d, что особенно важно для настольных систем.

Выход Xen 3.3.0 состоялся в августе 2008 года. В этом релизе введены, так называемые эмуляционные домены, которые предназначены для изоляции эмуляционных процессов для HVM-доменов; Включена поддержка доступа к SCSI-устройствам через паравиртуальный интерфейс; добавилась поддержка IOMMU; поддерживается TXT/TPM и сделан ряд других усовершенствований с точки зрения масштабируемости, производительности и безопасности. Очередной bugfix-релиз 3.3.1 был сделан 5 января 2009 года.


[править] Главные даты

  • 1998 — Ян Пратт приходит в Кембриджский Университет
  • 1999 — Начата работа над проектом Xen
  • 22.09.2003 — Вышел Xen 1.0
  • 05.11.2004 — Вышел Xen 2.0. Живая миграция
  • 05.12.2005 — Вышел Xen 3.0. HVM-домены, PAE, 64-битные системы
  • 18.05.2007 — Вышел Xen 3.1.0 Живая миграция HVM-доменов
  • 16.01.2008 — Вышел Xen 3.2.0 Intel VT-d, host suspend-to-RAM, XSM
  • 22.08.2008 — Вышел Xen 3.3.0 эмуляционные домены, pvSCSI, IOMMU, TPM/TXT
  • 18.05.2009 — Вышел Xen 3.4.0 XCI, RAS, управление питанием
  • 07.04.2010 — Вышел Xen 4.0. Поддержка ядра pv_ops в домене 0 (почти готова); проброс видеокарты в HVM; поддержка совместного использования памяти между виртуальными машинами

[править] Дополнительная информация

[править] Возможности Xen

Основная страница: Новости Xen

Текущая версия: Xen 4.0, релиз сделан в апреле 2010 года.

[править] Возможности Xen 4

Одно из самых важных новвоведений: поддержка интерфейса pv_ops для ядра, работающего в домене 0.

  1. Масштабируемость: 128 vcpus на гостевую систему, 1 TB ОЗУ на хост-систему, 128 физических CPUs на хост-систему (это значения по умолчанию, а при компиляции их можно существенно увеличить).
  2. blktap2 для образов VHD, возможность создания высокопроизводительных снимков и клонирования (blktap2);
  3. Усовершенствованная поддержка проброски устройств внутрь гостевых доменов с помощью технологий виртуализации Intel VT-d и AMD IOMMU (XenPCIpassthrough и VTdHowTo);
  4. Проброска графической карты внутрь HVM-домена; гостевая система может напрямую использовать графический процессор карты (XenVGAPassthrough);
  5. TMEM позволяет задействовать неиспользуемую память гостевых систем PV. (http://oss.oracle.com/projects/tmem/)
  6. Совместное использование страниц памяти (memory page sharing) для HVM-доменов: начальная поддержка совместноего использования идентичных страниц памяти (Copy-on-Write sharing).
  7. Новое ядро Linux в домене 0, работающее через pvops (ядро 2.6.31.x по умолчанию, при желании 2.6.32.x). Старое ядро 2.6.18 по-прежнему поддерживается (XenDom0Kernels).
  8. Netchannel2 для лучшей поддержки сети, умные сетевые карты (smart NICs), поддержка очередей (multi-queue support) и функциональности SR-IOV;
  9. Изменение размера дисков для гостевых систем без перезагрузки/выключения;
  10. http://xgu.ru/wiki/Remus - Remus Fault Tolerance - синхронизация состояния виртуальных машин между серверами; позволяет синхронно исполнять несколько гостевых систем на нескольких хостах, и избежать простоев в случае выхода из строя одной из хост-систем;
  11. RAS: горячее добавление физических процессоров и памяти;
  12. Libxenlight (libxl): новая библиотека языка Си, предоставляющая высокоуровневые механизмы для управления Xen; она может использоваться в разнообразных наборах инструментов управления;
  13. PV-USB: Высокопроизводительный доступ к USB-устройствам как для PV-доменов, так и для HVM, поддержка устрйоств USB 2.0 (XenUSBPassthrough);
  14. gdbsx: отладчик для гостевых систем ELF;
  15. Поддержка паравиртуальных драйверов для Windows от Citrix (Citrix WHQL-certified Windows PV drivers), входящих в состав XCP (Xen Cloud Platform). Xen Cloud Platform: http://www.xen.org/products/cloudxen.html
  16. Улучшения Pygrub: поддержка PV-доменов с помощью GRUB2, возможность размещения каталога /boot в гостевых системах на ext4, поддержка сжатия bzip2- и lzma- для ядер Linux.

Дополнительная информация:

[править] Возможности Xen 3

Xen 3 значительно отличается от своего предшественника Xen 2. Повышены устойчивость к сбоям, безопасность, производительность. Появился ряд принципиально новых возможностей.

Наиболее значимые изменения:

  • Intel (Physical Addressing Extensions) PAE для поддержки 32битных серверов с >4G ОЗУ
  • Поддержка x86/64 (Intel EM64T, AMD Opteron)
  • Поддержка Intel VT-x для запуска немодифицированных гостевых ОС (Windows XP/2003, немодифицированный Linux)
  • Усовершенствованные инструменты управления
  • Улучшенная поддержка ACPI
  • AGP/DRM графика

Начиная с версии 3.1 появились следующие возможности:

  • Поддержка XenAPI 1.0
    • Конфигурационные файлы виртуальных машин в XML;
    • Управление жизненным циклом виртуальных машин;
    • Безопасная привязка XML-RPC для многих языков
  • Предварительная поддержка save/restore/migrate для HVM-доменов (в частности, Windows);
  • Динамическое управление памятью для HVM-доменов;
  • Поддержка 32-на-64 паравиртуальных гостевых систем (запуск паравиртуальных систем PAE на 64-битном Xen);
  • Поддержка copy-on-write для дисковых устройств blktap.

[править] Оборудование

Процессоры:

По умолчанию поддерживается до 64 логических процессоров (ядер) в одной системе. При перекомпиляции Xen 3.3 может поддерживать до 126 процессоров.

Память:

  • до 4GB без PAE в 32-битной системе;
  • до 16GB с PAE в 32-битной системе;
  • > 16GB в 64-битной системе (гипервизор должен быть 64-битным, а всё остальное не обязательно).

Компания IBM успешно провела тестирование инсталляции Xen с 1TB ОЗУ. Однако, отдельным доменам пока что не может выделять больше 512 GB ОЗУ без применения специальных патчей.

[править] Ограничения Xen 2

В предыдущей версии Xen (Xen 2.0) наиболее сильно были заметны следующие недостатки:

  • Не поддерживалась многопроцессорность в гостевых ОС
  • Поддерживалась только архитектура i386; x86_64 поддерживает только в режиме i386

[править] Аппаратные требования

Основная страница: Аппаратные требования Xen

В настоящий момент Xen работает на платформах Intel x86 и Intel x86_64 и IA64, частично поддерживаются архитектуры ARM и PPC (подробнее).

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

------------------------
       \     Dom 0
Dom U   \  32  |   64 
------------------------
 32      |  +      *
 64      |  -      +
------------------------

32-битная система может работать поверх 64-битной, но в более старых версиях Xen с некоторыми ограничениями: может не работать сохранение/восстановление домена и миграция[1].

Icon-caution.gif

Чистая 32-битная система (с PAE) не может поддерживать более 16GB ОЗУ. Для выхода за эти пределы необходимо обязательно использовать 64-битный гипервизор.

Использование операционных систем в неизменном виде возможно при использовании процессоров с поддержкой аппаратных расширений виртуализации (Intel VT-x, Intel VT-i и AMD SVM).

В версии 3.2 в Xen появилась начальная поддержка аппаратной виртуализации ввода/вывода (Intel VT-d). В версии Xen 3.4 поддержка существенно расширилась.

[править] Поддержка Xen различными операционными системами

Основная страница: Поддержка Xen операционными системами

Для того чтобы запускаться совместно с монитором виртуальных машин Xen, операционная система должна быть особым образом модифицирована (портирована на Xen). Это касается как хост-систем, так и гостевых систем (за исключением HVM-доменов): и те, и другие должны быть портированы. Подготовка системы для работы в домене 0 требует от разработчиков больших усилий, поэтому систем, работающих в домене 0, намного меньше.

Операционная система       dom0       domU без PAE domU с PAE domU HVM
Linux
да
да
да
да
FreeBSD
нет
да
да
  да*
NetBSD
да
да
да
да
OpenBSD
нет
да
нет
да
OpenSolaris
да
да
да
да
Plan 9
нет
да
нет
да
GNU Hurd
нет
да
да
да
Minix
нет
да
нет
да
ReactOS
нет
да
нет
да
Windows
  нет**
нет
нет
да
OS/2 Wrap
нет
нет
нет
да
SCO OpenServer
нет
нет
нет
???, скорее нет
SCO Unixware
нет
нет
нет
???, скорее нет
Novell Netware (OES2)
нет
да
да
да
  • * — на процессорах Intel только начиная с 3.2.1
  • ** — Hyper-V может исполнять паравиртуальные домены Xen

В домене 0 сейчас может использоваться ОС:

  • Linux,
  • NetBSD,
  • OpenSolaris (с некоторыми ограничениями).

В паравиртуальном режиме в домене domU работают:

  • Linux;
  • NetBSD;
  • OpenSolaris;
  • FreeBSD (начиная с 7, без поддержки PAE и с большим количеством ограничений);
  • OpenBSD (без PAE);
  • Plan9 (без PAE);

и ряд других.

В настоящий момент Xen чаще всего используют совместно с Linux. Начиная с ядра 2.6.24 поддержка Xen в домене U включена в основное ядро. Что касается поддержки в домене 0, то соответствующий патч не включен в основное ядро Linux (vanilla), и он доступен только в репозитории Xen. Версия ядра Linux, которое может использоваться в Xen в домене 0 — 2.6.18.

В некоторых дистрибутивах Linux есть ядро более новой версии, которое можно использовать в домене 0 Xen, подготовленное силами создателей самого дистрибутива (к таким дистрибутивам относится, в частности, Fedora).

Maximilian Wilhelm wrote:                                                                                                        
> Hi!                                                                                                                            
>                                                                                                                                
> I'm wondering about the status of Xen support in the vanilla kernel.                                                           
> I know that DomU support is inside the kernel an evolving, but I did                                                           
> not find an up-to-date hint about the status of Dom0 support.                                                                  
>                                                                                                                                
> A while ago I read that it should be included in 2.6.28, but I do not                                                          
> find any current pointer about the status of this.                                                                             
>                                                                                                                                
                                                                                                                                 
.28 was a bit optimistic; .29 seems reasonable.  The current dom0 kernel                                                         
patches can boot up to a fully functional dom0 usersmode, and you can                                                            
start xend to see that domain 0 is running.  I *think* in theory you can                                                         
create a deviceless domain, but I haven't tried it.  I'm currently working                                                       
on blktap support.                                                                                                               
                                                                                                                                 
I really need to put together a proper status update.  Now that dom0                                                             
usermode is working, its a much better base for other people start                                                               
contributing.

И ещё: http://wiki.xensource.com/xenwiki/XenParavirtOps

С каждым новым ядром Linux разница между ядром в репозитории Xen и последним ядром, работающим на голом железе (bare metal), увеличивается и увеличивается, и шансов, что поддержка Xen будет интегрирована в основное ядро, становится всё меньше и меньше. Можно сказать, что их уже практически нет [5]. В дистрибутиве Fedora, в частности, в связи с этим было принято решение перейти к новому способу поддержки Xen, через так называемый механизм pv_ops. С одной стороны это сократит доступную сейчас функциональность (не будет поддерживаться PCI passthrough, не будет поддерживаться CPU hotplugging и некоторые другие вещи [6]), но с другой — даст возможность синхронизировать версию чистых ядер и ядер, портированных на Xen (подробнее [7],[8], [9], [10]).

В июне 2009 создатели Xen решили таки навести порядок с многочисленными PV-ядрами Linux и прийти к какому-то более-менее понятному положению вещей [11]. Что из этого получится пока неизвестно.

Существует проект Xenner, который позволяет запускать паравиртуальные ядра Xen без использования гипервизора Xen, при помощи KVM. В этом случае в хост-системе может использоваться наиболее новое ядро.

Кроме паравиртуального режима работы, о котором шла речь, существует так называемый режим аппаратной виртуализации (hardware virtualization mode, HVM), в котором (по крайней мере теоретически) должны работать все операционные системы, которые вообще могут работать на этой аппаратной платформе.

В HVM домене Xen успешно запускаются и работают:

  • Старые Linux и новые, не портированные на Xen;
  • BSD-системы (за исключением FreeBSD до Xen 3.2.0 включительно);
  • MS Windows 9x, NT 4.x, 2000, XP, Server 2003, Vista, Server 2008.

Сделанная выше поправка "по крайней мере теоретически" важна: на практике не все системы запускаются и работают в HVM-домене Xen без проблем. Так, например, до версии гипервизора 3.2.0 включительно, FreeBSD не запускалась в HVM домене Xen на процессорах Intel (проблема была связана с так называемым big real mode и относилась даже не к ядру операционной системы, а его загрузчику). Сейчас эта проблема устранена, FreeBSD запускается и работает в HVM-домене. Некоторые сложности есть и с запуском ряда других систем (особенно, старых), но в большинстве, операционные системы запускаются и работают в HVM-домене Xen без проблем.

Считается, что режим аппаратной виртуализации не так хорош как режим паравиртуального исполнения:

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

Режим паравиртуального исполнения является основным для Xen.

Отдельно нужно сказать несколько слов об операционных системах семейства Windows. Системы этого семейства не портированы на Xen. Они могут работать только в HVM-доменах Xen. В домене 0 Windows работать не может. Однако, в Windows Server 2008 появилась система виртуализации Hyper-V (правильнее сказать, появится; релиз Windows Server 2008 уже был, а Hyper-V — ещё нет), которая позволяет исполнять в качестве гостевых доменов в том числе гостевые домены Xen. Таким образом, Windows может быть хост-системой для доменов Xen, но при этом гипервизор Xen не используется, и говорить о запуске в режиме домена 0 было бы неверно.


[править] Запуск кода без операционной системы непосредственно в домене Xen

[править] Установка, настройка и использование Xen

[править] Как начать?

Для того чтобы попробовать Xen в действии, не нужно много времени. При благоприятных обстоятельствах (вы ясно соображаете, уверенно чувствуете себя в командной строке, у вас хороший канал в Интернет, и вы используете Linux — обычно эти качества встречаются вместе) вы увидите приглашение гостевой ОС меньше чем через десять минут, после того как начнёте экспериментировать.

Большинство современных дистрибутивов поддерживают Xen из коробки, инсталляция и начальная настройка выполняются очень быстро. А после того как хост-система (в терминологии Xen) развёрнута, можно заняться инсталляцией гостевой системы с нуля или запустить существующую систему как гостевой домен Xen.

Если ваш дистрибутив не поддерживает Xen, а вы не хотите сейчас заниматься сборкой и инсталляцией Xen вручную, можно использовать Live CD с Xen. Его образ можно получить здесь. Другой Live CD, на котором есть Xen — VMKNOPPIX.

[править] Хост-система — Инсталляция Xen в домен 0

Основная страница: Инсталляция Xen

Xen инсталлируется не на чистую машину. Для того чтобы развернуть Xen, необходима установленная и настроенная операционная система, одна из тех, которая может работать в домене 0 (Linux, NetBSD, OpenSolaris).

Для превращения инсталляции Linux в инсталляцию Xenolinux необходимо установить несколько пакетов программного обеспечения и изменить конфигурацию загрузчика. Полученная в результате система будет доменом 0 Xen.

При желании Xen можно установить из исходных текстов. Однако для большинства случаев будет достаточно инсталляции из пакетов, входящих в дистрибутив операционной системы.

Необходимо установить:

  • Гипервизор;
  • Ядро, портированное на Xen, и способное работать в домене 0;
  • Утилиты Xen, необходимые для управления другими доменами.

После того как установка завершена, нужно перезагрузить систему и загрузить её уже с гипервизором. Проверить правильность установки можно командами:

    %# xm list
    %# xm info
    %# xm dmesg | head

[править] Гостевая система

Основная страница: Создание гостевого домена Xen

Для того чтобы в Xen запустить новый гостевой домен, нужно подготовить:

  1. Конфигурационный файл домена;
  2. Образ диска виртуальной машины.

Существует несколько способов подготовки образа гостевой системы.

  1. Инсталляция средствами базовой операционной системы (системы домена 0);
  2. Использование инсталлятора гостевой ОС;
  3. Использование готового образа;
  4. Преобразование образа виртуальной машины из другой системы виртуализации;
  5. Использование диска реальной машины.

Если в гостевом домене будет работать Linux (а также OpenSolaris или NetBSD), можно воспользоваться её инсталлятором в HVM-режиме, а потом преобразовать домен в паравиртуальный.

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

%# xm create my-new-domain

(или xm create -c, если необходимо сразу подключиться к консоли домена).

Домен должен начать работу. Посмотреть, действительно ли это так, можно командой:

%# xm list

В списке доменов должен появиться новый домен.

Если домен паравиртуальный (или, если у него активирована последовательная консоль), к нему можно подключиться командой:

%# xm console my-new-domain

Если же домен HVM, то к нему можно подключиться с помощью VNC (если используется VNC):

%$ vncviewer 127.0.0.1:0

Xen-installation-and-configuration-workflow.png

Подробнее:

Преобразование из других систем:

[править] Использование Xen

Основная страница: Использование Xen

[править] Средства управления и мониторинга виртуальных машин

Enomalism - Web-инструмент для управления работой виртуальных машин
Основная статья: Средства управления Xen

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

  • управление для одной хост-системы; обычно консольные или с графическим интерфейсом;
  • управление кластером отказоустойчивости, состоящим из двух половин, обычно работающем на основе DRBD и Heartbeat;
  • управление пулом узлов, поверх которых работает множество виртуальных систем; обычно с web-интерфейсом.

Наиболее известные средства управления:

  • xm — встроенное средство, работает в консольном режиме. Наблюдение выполнятся с помощью xm top;
  • xen-shell — консольный инструмент для управления доменами Xen; позволяет выполнять элементарные операции, такие как запуск/останов/перезапуск, а также реинициализация образа файловой системы домена Xen;
  • virt-manager — программа для управления и мониторинга Xen, графический интерфейс (GTK);
  • oVirt — управление пулом виртуальных машин, web-интерфейс;
  • Enomalism — консоль управления и мониторинга Xen с Web-интерфейсом;
  • ConVirt (бывший XenMan) — программа для управление и мониторинга Xen c графическим интерфейсом пользователя.

Отдельно стоит отметить библиотеку libvirt, которая предоставляет унифицированные механизмы управления не только для управления доменами Xen, но также машинами QEMU и OpenVZ. Программы virt-manager и oVirt построены на основе этой библиотеки.

Другие средства управления виртуальными машинами:

[править] Коммерческие системы виртуализации, основанные на Xen

Вклад различных компаний в opensource Xen, по данным XenSource

В настоящий момент коммерческие системы виртуализации, базирующиеся на Xen, предлагают следующие производители:

Как правило, эти системы отличаются от свободных решений тем что, имеют:

  • более развитый интерфейс инсталляции и управления виртуальными машинами
  • более развитую драйверную поддержку гостевых операционных систем, в частности, как правило, у них есть свои собственные паравиртуальные драйверы (работающие только с конкретной модификацией системы виртуализации) для Windows, которые позволяют существенно ускорить операции ввода/вывода внутри гостевых систем (сейчас ведётся работа на свободными PV-драйверами Xen для Windows, подробнее: Паравиртуальные драйверы Xen для Windows).

[править] Коммерческая поддержка и хостинг на Xen

[править] Коммерческая поддержка решений на Xen

Основная страница: Коммерческая поддержка Xen

[править] Хостинг на Xen

Основная страница: Хостинг доменов Xen

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

В России и Украине услугу хостинга доменов Xen предоставляет порядка 10 компаний; в мире — порядка 100. Стоимость услуги варьируется от $20 за минимально возможную систему до $100 за систему соизмеримую по мощности с физическим сервером начального уровня.

Кроме объёма предоставляемых ресурсов при выборе хостинг-провайдера для хостинга доменов Xen нужно обращать внимание на:

  1. Возможность поддержки HVM;
  2. Специфические требования к образу (PAE, нет PAE и т.д.);
  3. Возможность запуска собственных ядер;
  4. Физическое расположение хостинг-систем.

[править] Информационные ресурсы

[править] Документация

Русскоязычная:

Англоязычная:

  • The Xen™ virtual machine monitor (англ.) — сборник документации на сайте Кембриджского университета
  • Xen users' manual (англ.) — для пользователей и администраторов
  • Xen Interface manual (англ.) — для разработчиков
  • Xen Wiki (англ.)
    • XenIntro (англ.) — большая страница Xen Wiki, на которой затронуты наиболее важные технические вопросы по Xen
    • XenFaq (англ.)
    • XenBestPractices (англ.) — несколько советов по оптимизации производительности

Немецкоязычная:

[править] Другие интернет-ресурсы

  • Xen (англ.) и Xen (рус.) на wikipedia.org — статьи о Xen на Wikipedia
  • Now and Xen (англ.) — статья Кейра Фразера о Xen, 2004
  • Xen 3.0.x limitations (англ.) — статья Яна Бленке о существующих ограничениях в Xen

[править] Списки рассылки

Существуют несколько списков рассылки, посвящёных Xen. Наиболее важные из них перечислены ниже. Официальная страница списков рассылки и информация о подписке на них находится здесь:

http://lists.xensource.com/

Поиск в архивах (и некоторый статистический анализ) можно выполнять с помощью MarkMail:

http://xen.markmail.org/
xen-devel@lists.xensource.com
Обсуждение разработки и ошибок. Подписка здесь: http://lists.xensource.com/xen-devel
xen-users@lists.xensource.com
Обсуждение инсталляции и использования. Подписка здесь: http://lists.xensource.com/xen-users
xen-announce@lists.xensource.com
Используется только для анонсов. Подписка здесь: http://lists.xensource.com/xen-announce
xen-changelog@lists.xensource.com
Лента Changelog для веток unstable и 2.0 - ориентирован на разработчиков. Подписка здесь: http://lists.xensource.com/xen-changelog

[править] Книги

[править] Примечания

  1. См., например: [1]. Вообще, с ядром собранным из исходников из репозитория Xen всё должно работать, но надо проверить. Вот здесь подробнее: [2] и [3]
  2. Citrix XenServer (рус.) — обзорная микрозаметка о Citrix XenServer
Xen
Xen

Виртуализация и паравиртуализация
Эмуляция | Виртуализация | Паравиртуализация | Рекурсивная виртуализация
Паравиртуальные драйверы | Виртуализация ввода/вывода

Общие вопросы по Xen
Аппаратные требования Xen | Поддержка Xen операционными системами | Поддерживаемые аппаратные архитектуры |
Примеры использования Xen | Сравнение виртуальных машин |
Хостинг на Xen
Альтернативы Xen

свободные: KVM | LXC | OpenVZ | VServer | QEMU | VirtualBox
проприетарные: Hyper-V | VMware ESX Server

Технические вопросы
Инсталляция Xen | Конфигурационный файл домена
ОС в Xen: Linux small icon.png Linux | Solaris small icon.png OpenSolaris | Freebsd small icon.png FreeBSD | Openbsd small icon.png OpenBSD | Netbsd small icon.png NetBSD | Windows xp small icon.png Windows XP | Windows vista small icon.png Windows Vista
Устройства: Блочные | USB | SCSI | Сеть | PV-драйверы для Linux | PV-драйверы для Windows | Консоль

Распределение ресурсов между доменами | Перенос системы внутрь Xen | HVM -> PV

Управление и кластеризация | Enomalism | Xen+DRBD | Ganeti | Convirt 2.0 | SkyCover Infrastructure
Источник — «http://xgu.ru/wiki/Xen»