Xen: различия между версиями
[непроверенная версия] | [непроверенная версия] |
→Терминология: уточнение Истинность высказывания сомнительна |
м →Toolstack: стилевые правки |
||
Строка 62: | Строка 62: | ||
В связи с тем, что сам гипервизор (около 500—600 КБ) реализует только «ядро» системы, весь остальной функционал выносится на прикладной уровень, работающий в dom0. Набор программ, реализующий функциональность за пределами Xen называют {{lang-en|toolstack}} (устоявшегося перевода не имеется). |
В связи с тем, что сам гипервизор (около 500—600 КБ) реализует только «ядро» системы, весь остальной функционал выносится на прикладной уровень, работающий в dom0. Набор программ, реализующий функциональность за пределами Xen называют {{lang-en|toolstack}} (устоявшегося перевода не имеется). |
||
Существуют две версии toolstack для Xen: основанная на xend (входит в большинство поставок Xen) и основанная на xapi (входит в состав Xen Cloud Platform). Xend развивался одновременного с Xen, написан на Python и с самого начала шёл под открытой лицензией. Xapi был проприетарной разработкой Xensource (в дальнейшем Citrix), но в 2009 году был |
Существуют две версии toolstack для Xen: основанная на xend (входит в большинство поставок Xen) и основанная на xapi (входит в состав Xen Cloud Platform). Xend развивался одновременного с Xen, написан на Python и с самого начала шёл под открытой лицензией. Xapi был проприетарной разработкой Xensource (в дальнейшем Citrix), но в 2009 году был опубликован под лицензией GPL. Xapi написан на [[OCaml]], имеет меньший набор возможностей, но работает более стабильно. |
||
В обеих версиях toolstack присутствуют следующие утилиты: |
В обеих версиях toolstack присутствуют следующие утилиты: |
Версия от 22:45, 7 апреля 2012
Xen | |
---|---|
Тип | Сервер виртуализации |
Разработчики | The Xen Project, XenSource, Inc. |
Написана на | C[1] |
Операционные системы | Linux, OpenSolaris, BSD |
Первый выпуск | 2003 |
Последняя версия | 4.1.2 (21 октября 2011) |
Репозиторий |
xenbits.xen.org/gitweb/?… xenbits.xen.org/git-http… |
Лицензия | GNU GPL |
Сайт | xen.org |
Медиафайлы на Викискладе |
Xen — кросс-платформенный гипервизор, разработанный в компьютерной лаборатории Кембриджского университета и распространяемый на условиях лицензии GPL. Основные особенности: поддержка режима паравиртуализации помимо аппаратной виртуализации, минимальность кода самого гипервизора за счёт выноса максимального количества компонентов за пределы гипервизора.
Области применения
Технология виртуальных машин позволяет расширить функциональность оборудования следующими способами:
- Виртуальная машина обладает производительностью, сравнимой с реальной.
- Возможность миграции запущенной виртуальной машины между физическими машинами.
- Хорошая поддержка оборудования (поддерживается большинство драйверов устройств Linux)
- Возможность создания песочницы, перезагружаемые драйверы устройств.
Терминология
Основной концепцией гипервизора является домен. Доменом называется запущенная копия виртуальной машины. Если виртуальная машина перезагружается, то её домен завершается (в момент перезагрузки) и появляется новый домен. Более того, даже при миграции содержимое копируется из одного домена в другой домен. Таким образом, за время своей жизни практически все виртуальные машины оказываются по очереди в разных доменах. Xen оперирует только понятием домена, а понятие «виртуальной машины» появляется на уровне администрирования (прикладных программ, управляющих гипервизором).
Домены бывают нескольких типов. Самые известные dom0 и domU. dom0 — первый запущенный Xen домен, обычно он автоматически создаётся и загружается сразу после загрузки и инициализации гипервизора. Этот домен имеет особые права на управление гипервизором и по умолчанию всё аппаратное обеспечение компьютера доступно из dom0. Фактически, dom0 — это место жизни ПО, управляющего Xen . dom0 всегда один.
domU — рядовой домен (сокращение от User domain), содержащий в себе домен выполняющихся виртуальных машин. Обычно не имеет доступа к реальному оборудованию и является «полезной нагрузкой» системы виртуализации. В отличие от dom0, domU может быть множество (обычно несколько десятков).
stub-domain — домен, в котором запущена очень специализированная ОС, обеспечивающая работу с каким-либо оборудованием или бэк-эндом драйвера. Является развитием модели безопасности Xen.
domain builder (конструктор доменов) — программа, которая создаёт domU (загружает в него нужный код и сообщает гипервизору о необходимости запуска). Помимо конструирования домена, обычно занимается подключением и конфигурированием виртуальных устройств, доступных для виртуальной машины. Она же отвечает за процесс миграции виртуальной машины с хоста на хост.
Технологии
Паравиртуализация
Паравиртуализация — адаптация ядра исполняемой ОС для работы совместно с Xen, обычно сокращается до PV. Позволяет достичь очень высокой производительности за счёт отсутствия эмуляции «настоящего железа», простоты интерфейсов и учёта существования гипервизора при выполнении системных вызовов в коде ядра. Выполнение привилегированных операций запрещено, вместо них совершаются гипервызовы (англ. hypercalls) — обращения ядра гостевой ОС к гипервизору с просьбой о выполнении тех или иных операций. В большинстве случаев изменения при портировании ОС под Xen затрагивают только ядро ОС, хотя могут предполагать и незначительные изменения в системных библиотеках (например, libc). Процесс адаптации к Xen очень похож на портирование для новой платформы, однако значительно проще ввиду простоты реализации «гостевой» части драйвера (драйвера в Xen состоят из двух частей — одна исполняется вне виртуальной машины, вторая находится внутри неё. Часть драйвера в гостевой системе крайне примитивна и служит лишь транслятором запросов во вторую часть. Это сделано преднамеренно для простоты портирования ОС под Xen). В PV-режиме не поддерживаются «вложенные» режимы работы процессора, такие как real-86, virtual-86, переключение между 32-битным и 64-битным режимом, поддержка эмуляции аппаратной виртуализации и т. д. В связи с этим в PV-режиме отсутствует начальный фрагмент загрузки компьютера (с имитацией кода BIOS, загрузчика и т. д.), а ядро гостевой системы сразу же запускается в нужном режиме, подобно тому, как запускаются обычные программы. В связи с этим, в частности, сам Xen не может работать в PV-режиме (то есть невозможно запустить «вложенный» гипервизор в PV-режиме).
Аппаратная виртуализация
В режиме аппаратной виртуализации (HVM) гостевая ОС не «знает» про существование гипервизора. Xen с помощью модулей из QEMU эмулирует реальное аппаратное обеспечение и позволяет провести начальную загрузку ОС. По её окончании для нормальной производительности должны запускаться PV-драйверы, которые реализуют быстрый интерфейс с виртуальными устройствами, подобно тому, как это работает в PV-режиме). Поскольку большинство привилегированных операций эмулируется, возможен запуск Xen в HVM-режиме из-под Xen. В этом случае вложенный гипервизор сможет работать только в PV-режиме.
Минимизация функций гипервизора
Гипервизор Xen (по состоянию на версии 3 и 4) реализует минимальный набор операций для управления оперативной памятью, состоянием процессора, таймерами реального времени и счётчиками тактов (TSC) процессора, прерываниями и контролем за DMA. Все остальные функции, такие как реализация дисковых и блочных устройств, создание и удаление виртуальных машин, их миграция между серверами и т. д. реализуется в управляющем домене. За счёт этого размер гипервизора получается весьма малым (для версии 3.4 размер двоичного кода всего гипервизора меньше 600 КБ), так же как и размер его исходного текста. По замыслу авторов это увеличивает устойчивость системы виртуализации, так как ошибка в компонентах вне гипервизора не приводит к компрометации/повреждению самого гипервизора и ограничивает повреждения только вышедшей из строя компонентой, не мешая работать остальным.
Все функции, связанные с обеспечением работы сети, блочных (дисковых) устройств, эмуляции видеоадаптеров и прочих устройств вынесены за пределы гипервизора. Большинство таких устройств состоит из двух частей: драйвера в domU и программы в dom0. Драйвер (чаще всего встроенный в ядро ОС или загружающийся в виде модуля) реализует минимальный объём работы, фактически, транслируя запросы от ОС в программу в dom0. Программа в dom0 выполняет основную часть работы. При этом программа чаще всего запускается в виде отдельного процесса для каждого обслуживаемого устройства. Сбой в такой программе ведёт к сбою только одного устройства (блочного, сетевого) и не затрагивает работу других копий программы (то есть не затрагивает сетевые/блочные устройства остальных доменов, или даже другие устройства того же самого домена).
Традиционно используется следующая терминология: front — часть модуля, находящегося в domU, back — часть, находящаяся в dom0. Для некоторых типов устройств «задняя» часть может быть различной при сохранении одной и той же «передней» части. Например, драйвер блочного устройства может иметь backend в форме программы работы с VHD-образами, с блочными устройствами, с iscsi-инициатором и т. д.
Междоменное взаимодействие
Xen предоставляет доменам три механизма взаимодействия: один — с гипервизором (hypercalls), и два между доменами. Чаще всего, взаимодействие происходит между dom0 и domU, хотя модель допускает взаимодействие и между двумя domU.
Междоменное взаимодействие сводится к двум видам: events (события) и shard mem (общий доступ к памяти). Третий вариант — передача страницы памяти, является частным случаем общего доступа к памяти.
Events служат примерно для того же, для чего служат прерывания в архитектуре x86 или сигналы в Unix — быстрая синхронная или асинхронная передача сигнала о наступлении какого-то события. Общий доступ к памяти обеспечивает возможность передачи значительных объемов информации, а события — скорость передачи.
События могут быть маскированными и немаскированными. Немаскированные события вызывают callback (вызов функции, адрес которой передан ранее) и позволяют обрабатывать событие сразу же по факту его возникновения. Маскированные события лишь устанавливают флаг о том, что событие произошло, а обработчик переодически смотрит, произошло ли событие (одно или более). Второй метод позволяет не вызывать callback по каждому событию и в случае частых событий существенно снижает время обработки. Напротив, первый вариант (с вызовом callback) позволяет увеличить скорость обработки события, которое, возможно, происходит не слишком часто, но требует немедленной реакции.
Toolstack
В связи с тем, что сам гипервизор (около 500—600 КБ) реализует только «ядро» системы, весь остальной функционал выносится на прикладной уровень, работающий в dom0. Набор программ, реализующий функциональность за пределами Xen называют англ. toolstack (устоявшегося перевода не имеется).
Существуют две версии toolstack для Xen: основанная на xend (входит в большинство поставок Xen) и основанная на xapi (входит в состав Xen Cloud Platform). Xend развивался одновременного с Xen, написан на Python и с самого начала шёл под открытой лицензией. Xapi был проприетарной разработкой Xensource (в дальнейшем Citrix), но в 2009 году был опубликован под лицензией GPL. Xapi написан на OCaml, имеет меньший набор возможностей, но работает более стабильно.
В обеих версиях toolstack присутствуют следующие утилиты:
- xenstored — демон, реализующий интерфейс XenStore. В xapi-toolstack он переписан на ocaml, но реализует ту же самую функциональность.
- xenconsoled — демон, обеспечивающий в dom0 доступ к консолям виртуальных машин. Xenconsoled реализует бэкэнд консольного устройства для domU и использует API unix98 для создания псевдотерминалов в dom0. Соответствие между номером псевдотерминала и виртуальной машиной записывается в XenStore.
Распространённость
Xen с каждым днем поддерживает всё больше и больше платформ. В настоящее время поддерживается Linux и NetBSD. Порт для FreeBSD в настоящее время проходит тестирование и вскоре будет официально выпущен (он доступен уже сейчас в SVN-репозитории FreeBSD). Порты других операционных систем, таких как Plan 9 также находятся в работе. Ожидается, что для всех этих операционных систем будут выпущены официальные порты для Xen (как это случилось для NetBSD).
На основе Xen создано несколько коммерческих продуктов для консолидации серверов. В частности это такие продукты как:
- Citrix XenServer
- Virtual Iron
- XenSource Server
- Sun xVM
- Oracle® VM[2]
- RHEL5 использует XEN, в RHEL6 используется KVM
История
Xen начинался как исследовательский проект кембриджского университета под руководством Яна Пратта (Ian Pratt), ставшего в дальнейшем основателем компании XenSource. Компания поддерживала разработку опенсорсной версии (xen) и параллельно продавала коммерческие версии ПО, называвшиеся XenServer и XenEnterprise.
Первый публичный релиз Xen произошёл в 2003 году. В октябре 2007 Citrix купила XenSource и осуществила переименование продуктов:
- XenExpress в «XenServer Express Edition» (встроенная версия гипервизора стала называться «XenServer OEM Edition»)
- XenServer в «XenServer Standard Edition»
- XenEnterprise в «XenServer Enterprise Edition»
В дальнейшем они были переименованы в XenServer (Free), Essentials for XenServer Enterprise, и Essentials for XenServer Platinum.
22 октября 2007 Citrix завершила поглощение XenSource[3], и опенсорсный проект переехал на сайт http://www.xen.org/.
21 октября 2009 Citrix объявила, что их, являющиеся в настоящий момент коммерческими, версии XenServer станут полностью опенсорсными и публично-доступными [4]. Саймон Кросби (Simon Crosby), главный инженер подразделения Цитрикс по виртуализации заявил: «XenServer 100 % бесплатен и его исходные коды будут полностью открыты в ближайшее время. Мы вообще не планируем получение прибыли [с этого]». (англ. XenServer is 100% free, and also shortly fully open sourced. There is no revenue from it at all.). Хотя версии Xen Server свободны, XenCenter (ПО для централизованного управления) продаётся Citrix под собственнической лицензией.
Примечания
- ↑ Xen | freshmeat.net
- ↑ Пресс-релиз | Oracle представляет Oracle® VM
- ↑ Citrix Systems » Citrix Completes Acquisition of XenSource . Citrix Systems (12 июля 2007). Архивировано 15 февраля 2012 года.
- ↑ virtualization.info | Citrix to fully open source XenServer — UPDATED
См. также
- VirtualBox
- VMware — VMware server, VMware ESX Server
- Parallels Workstation
- Qemu
- VDSmanager
- Сравнение виртуальных машин
- Microsoft Hyper-V
- Kernel-based Virtual Machine
- iCore Virtual Accounts
- Sun xVM
Ссылки
- Официальный сайт группы разработки в Университете Кэмбриджа (англ.)
- Сайт Xen Source (англ.)
- Сайт Virtual Iron (англ.)
- Виртуализация Citrix Xen на vmgu.ru
- Xen на Xgu.ru
- Xen в wiki проекта Debian
- Виртуальные машины на платформе Xen, ixbt.com, 13 сентября 2007
- Установка Xen на Debian
- OpenSolaris Community: Xen (англ.)