Гипервизор xen

Содержание

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 часто сравнивают с разнообразными мониторами виртуальных машин, средствами виртуализации операционной системы, эмуляторами и даже слоями совместимости.

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

  • интерпретация и динамическая рекомпиляция — Bochs — PearPC — QEMU — MS VirtualPC for MAC;
  • паравиртуализация и портирование — Xen — UML — lguest — Hyper-V — KVM (*) ;
  • виртуализация на уровне ОС — Jail — Linux-VServer — OpenVZ — Virtuozzo — Zones;
  • виртуализация — VMware — MS VirtualPC — MS Virtual Server — Hyper-V — QEMU с модулем kqemu — KVM;
  • слой совместимости — Cygwin — Wine.

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

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

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

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

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

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

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

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

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

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

Портирование ОС на 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).

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

  • Набор тестов 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 началась в 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 history (англ.) в блоге blog.xen.org
  • A brief history of Xen and XenSource (англ.) — краткая история Xen и XenSource, главным образом XenSource
  • NetBSD Unix Supports Xen Virtualization (англ.) — поверхностный обзор истории 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 для многих языков

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

По умолчанию поддерживается до 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 работает на платформах Intel x86 и Intel x86_64 и IA64, частично поддерживаются архитектуры ARM и PPC (подробнее).

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

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

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

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

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

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

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


Источник: xgu.ru