Xen Project

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:30, 19 ноября 2016.
Xen Project
Веб-сайт {{#property:P856}}

Общие сведения

Xen Project - гипервизор с открытым исходным кодом, который позволяет запускать множество экземпляров операционных систем или вообще разные операционные системы параллельно на одном компьютере (или хосте). Он используется в качестве основы для ряда различных коммерческих приложений с открытым исходным кодом, таких как: виртуализация серверов, IaaS, виртуализация настольных компьютеров, системы безопасности, встроенные и аппаратные устройства. На сегодняшний момент гипервизор Xen Project обслуживает самые большие облачные сервисы в производстве.

Некоторые ключевые особенности гипервизора Xen Project:

  • Компактность и интерфейс (около 1МБ). Поскольку он использует дизайн микроядра с небольшим объемом памяти и ограниченным интерфейсом к гостю, он более прочный и безопасный, чем другие гипервизоры.
  • Не зависит от операционной системы: Большинство установок работают с Linux в качестве стека основного управления (также известном как "домен 0"). Однако он поддерживает ряд других операционных систем, в том числе и NetBSD и OpenSolaris.
  • Изоляция драйвера: гипервизор Xen Project имеет возможность позволить драйверу основного устройства для системы запуститься внутри виртуальной машины. Если драйвер падает, или находится под угрозой, виртуальная машина, содержащая драйвер, может быть перезагружен и драйвер будет перезапущен, не затрагивая остальную часть системы.
  • Паравиртуализация: Полностью паравиртуализированные гостевые системы были оптимизированы для работы в качестве виртуальной машины. Это позволяет гостевым системам работать намного быстрее, нежели при помощи аппаратных расширений (HVM). Кроме того, гипервизор может работать на оборудовании, которое не поддерживает расширения виртуализации.

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

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

История

Xen Project возник как научно-исследовательский проект в университете Кембриджа во главе с Яном Пратт, старшим преподавателем в Кембридже, который основал XenSource, Inc. с Саймоном Кросби, также из Кембриджского университета. Первый публичный релиз Xen был сделан в 2003 году.

22 октября 2007 года, компания Citrix Systems завершила приобретение XenSource, и Xen Project переехал на домен Xen.org. Этот шаг начался некоторое время назад, и обнародовал существование Xen Project Advisory Board (AB Xen), который состоял из членов Citrix, IBM, Intel, Hewlett-Packard, Novell, Red Hat, Sun Microsystems и Oracle. Xen Project Advisory Board советует лидеру Xen Project и отвечает за товарный знак Xen, который Citrix добровольно лицензирует для всех поставщиков и проектов, которые реализуют гипервизор Xen.

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

15 апреля 2013 года, было объявлено, что Xen Project был перенесен под эгидой Linux Foundation в качестве Collaborative Project. Организация Linux Foundation запустила новую торговую марку для Xen Project для разграничения проекта от любого коммерческого использования старого товарного знака Xen. Новый веб-сайт сообщества был запущен в xenproject.org в рамках передачи. Участники проекта на момент анонса включены: Amazon, AMD, Bromium, CA Technologies, Calxeda, Cisco, Citrix, Google, Intel, Oracle, Samsung, Verizon. Сам проект Xen является самоуправляемым.

Архитектура Xen Project

Ниже приводится схема архитектуры Xen Project. Гипервизор Xen Project работает непосредственно на аппаратной части и отвечает за управление процессором, памятью, и прерываниями. Это первая программа, запускающаяся после выхода из загрузчика. Вдобавок гипервизор запускает ряд виртуальных машин. Работающий экземпляр виртуальной машины называется доменом или гостевой системой. Специальный домен, называемый домен 0 содержит драйверы для всех устройств в системе. Домен 0 также содержит стек управления для создание, уничтожение и конфигурации виртуальных машин.

Xen Arch Diagram.png

Подробнее о компонентах:

  • Гипервизор Xen Project является очень маленьким (<150000 строк кода) слоем программного обеспечения, который работает непосредственно на аппаратной части и отвечает за управление процессором, памятью, и прерываниями. Это первая программа, запускающаяся после выхода из загрузчика. Сам гипервизор не имеет никакого знания о функциях ввода / вывода, таких как сети и хранение.
  • Гостевые домены/Виртуальные машины - это виртуальные среды, каждая из которых работает со своей операционной системой и приложениями. Гипервизор поддерживает два различных режима виртуализации: Паравиртуализация (PV) и аппаратная поддержка или полная виртуализация (HVM). Оба типа можно использовать одновременно на одном гипервизоре. Кроме того, можно использовать методы, используемые для Паравиртуализации в HVM гостевой системы: создавая тем самым сплошную среду между PV и HVM. Этот подход называется "PV on HVM". Гостевые виртуальные машины полностью изолированы от аппаратного обеспечения, другими словами, они не имеют никаких привилегий для доступа к функциональности аппаратуры или ввода/вывода. Поэтому они также называются непривилегированными доменами (или DomU).
  • Управляющий домен (или Domain 0) является специализированной виртуальной машиной, которая имеет специальные привилегии, такие как возможность прямого доступа к устройствам, обработка доступа к функциям системы ввода / вывода и взаимодействие с другими виртуальными машинами. Он также предоставляет интерфейс управления с внешним миром, с помощью которого контролируется система. Гипервизор Xen Project не может использоваться без Domain 0, который является первой ВМ, созданной в системе.
  • Стек управления и консоль: Domain 0 содержит стек управления (также называемый Toolstack), который позволяет пользователю управлять созданием, уничтожением и конфигурацией виртуальной машины. Toolstack предоставляет интерфейс, который управляется либо из командной строки с помощью графического интерфейса, либо с помощью облачного стека, таких как OpenStack или CloudStack.
  • Возможные операционные системы Xen Project: Домен 0 требует ядро с поддержкой Xen Project. Паравиртуализированные гостевые системы требуют ядра с поддержкой PV. Дистрибутивы, основанных на последних ядрах Linux, являются совместимыми с Xen Project и обычно включают пакеты, которые содержат гипервизор и инструменты (по умолчанию Toolstack и консоль). Все, кроме устаревших Linux ядер, имеют поддержку PV и способны работать с PV.

Типы гостевых систем

Гипервизор поддерживает запуск двух различных типов гостей: с Паравиртуализацией (PV) и Полное виртуализацией (HVM). Оба типа можно использовать одновременно на одном гипервизоре. Кроме того, можно использовать методы, используемые для Паравиртуализации в HVM гостя, и наоборот: по существу создавая сплошную среду между возможностями чистого PV и HVM. Здесь используются различные аббревиатуры для обозначения этих конфигураций, называемых HVM с драйверами PV, PVHVM и PVH.

Эволюция различных способов виртуализации в гипервизоре Xen Project

PV

Паравиртуализация (PV) является эффективным и легким методом виртуализации, изначально введеным Xen Project, а затем адаптированным для других платформ виртуализации. PV не требует расширений виртуализации от центрального процессора хоста. Тем не менее, паравиртуализированным гостям требуется поддержка PV ядром и драйверы PV, так что гости знают о наличии гипервизора и могут работать эффективно без эмуляции или виртуально эмулируемого оборудования. Ядра с поддержкой PV существуют для Linux, NetBSD, FreeBSD, OpenSolaris и др. В ядра Linux была включена поддержка PV начиная с 2.6.24. На практике это означает, что PV будет работать с большинством дистрибутивов Linux (за исключением очень старых версий дистрибутивов).

Реализация паравиртуализации в гипервизоре Xen Project

HVM

Полная виртуализация или виртуализация с аппаратной поддержкой (HVM) использует расширения виртуализации от центрального процессора для виртуализации гостей. HVM требует расширения оборудования Intel VT или AMD-V. Программное обеспечение Xen Project использует Qemu для эмуляции аппаратных средств PC, в том числе BIOS, IDE, VGA, контроллер USB, сетевой адаптер и т.д. Аппаратные расширения виртуализации используются для повышения производительности эмуляции. Полностью виртуализированные гостевые системы не требуют поддержки ядра. Это означает, что операционные системы Windows можно использовать в качестве гостя Xen Project HVM. Полностью виртуализированные гостевые системы обычно медленнее, чем паравиртуализированные из-за требуемой эмуляции.

Отличие между HVM с драйверами PV и без них.

PVHVM

Для повышения производительности, полностью виртуализированные гостевые HVM могут использовать специальные драйверы устройств (PVHVM или PV-on-HVM драйверы). Эти драйверы оптимизируют PV драйверы для среды HVM и обходят эмуляцию для диска и ввода/вывод в сети, таким образом давая Вам производительность как на PV (или лучше) для HVM систем. Это означает, что вы можете получить оптимальную производительность на гостевых операционных системах, таких как Windows. Обратите внимание, что Xen Project PV гости автоматически используют драйверы PV: поэтому в этих драйверах нет необходимости - вы уже автоматически используете оптимизированные драйверы. Драйверы PVHVM требуются только для HVM (полностью виртуализированных) гостевых виртуальных машин.

Отличие между HVM с PV или PVHVM драйверов и без таковых.

PVH

В Xen Project 4.4 введен режим виртуализации под названием PVH для DomU. Xen 4.5 Project представил PVH для Dom0 (как для Linux, так и для некоторых BSD). По сути, это PV гость, использующий PV драйверы для загрузки и ввода/вывода. В противном случае он использует аппаратные расширения виртуализации без необходимости эмуляции. PVH считается экспериментальным и в 4,4 и в 4,5. Она работает довольно хорошо, но необходима дополнительная настройка (вероятно, в релизе 4.6), прежде чем она будет использована в производстве. PVH имеет потенциал для объединения всего наилучшего из всех режимов виртуализации при одновременном упрощении архитектуры Xen. В двух словах, PVH имеет меньше кода и меньше интерфейсов в Linux / FreeBSD: следовательно, он имеет меньший TCB и атакуемую поверхность, и, таким образом, меньше возможных уязвимостей. После утверждения и оптимизации, она должна также иметь более высокую производительность и низкую задержку, в частности, на 64-битных хостах.

Различие между HVM (и его вариантами), PV и PVH

Стеки управления, Managment API и консоли

Программное обеспечение Xen Project использует ряд различных стеков управления. Каждый стек управления имеет API, который работает с различными инструментами. На рисунке ниже дается очень краткий обзор вариантов того, какие стеки используют коммерческие продукты и примеры хостингов поставщиков с использованием специфических API.

Синие блоки разработаны Xen Project

Программное обеспечение Xen Project может быть запущен со стеком управления по умолчанию, с Libvirt или XAPI. Объединение гипервизора Xen Project и XAPI стал известен как XCP, который позже был заменен XenServer с открытым исходным кодом. Диаграмма выше показывает различные варианты: все они имеют различные компромиссы и оптимизированы для различных сценариев использования. Однако в целом, чем правее расположен блок, тем больше функциональности будет будет предоставлено.

Хосты

Xen может быть отправлен в специальную платформу виртуализации, таких как Citrix XenServer Enterprise Edition (ранее XenEnterprise XenSource).

Кроме того, Xen распространяется в качестве дополнительного конфигурирования многих стандартных операционных систем. Xen доступен для и распространяется с:

  • Alpine Linux предлагает минимальную систему dom0 (BusyBox, UClibc), которая может быть запущена со съемных носителей, таких как флэш накопители .
  • Debian GNU/Linux (с версии 4.0 "etch") и многие его ответвления.
  • FreeBSD 11 включает в себя экспериментальную поддержку хоста.
  • Gentoo and Arch Linux оба имеют пакеты, доступные для поддержки Xen.
  • Mageia (с версии 4)
  • NetBSD 3.x. включает в себя поддержку хоста для Xen 2, с поддержкой хоста для Xen 3.0 доступный начиная с NetBSD 4.0.
  • Основанные на OpenSolaris дистрибутивы могут функционировать в качестве dom0 и domU, начиная со сборки 75 Nevada.
  • openSUSE c 10.x до 12.x; с версии 12.1 поддерживаются только 64-bit хосты.
  • Qubes OS для десктопного использования.
  • SUSE Linux Enterprise Server (с версии 10)
  • Solaris
  • Ubuntu 12.04 "Precise Pangolin" и более поздние релизы; также 8.04 Hardy Heron, но поддержки dom0 нет в ядрах с 8.10 до 12.04

Гостевые системы

Unix-подобные системы в качестве гостевой системы

Гостевые системы могут работать при полной виртуализировации (что требует аппаратной поддержки) или с паравиртуализации (что требует модифицированной гостевой операционной системы).

Большинство операционных систем, которые могут работать на компьютере, можно запустить в качестве гостя Xen HVM.

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

  • FreeBSD
  • GNU/Hurd/Mach (gnumach-1-branch-Xen-branch)
  • Linux, паравиртуализация интегрирована в 2.6.23, существуют патчи для других версий.
  • MINIX
  • NetBSD (NetBSD 2.0 имеет поддержку Xen 1.2, NetBSD 3.0 поддерживает Xen 2.0, NetBSD 3.1 поддерживает Xen 3.0, NetBSD 5.0 поддержит Xen 3.3)
  • NetWare (на BrainShare 2005, Novell показала порт, который может работать в качестве гостя Xen)
  • OpenSolaris
  • OZONE (поддержка Xen v1.2)
  • Plan 9 для Bell Labs

Системы Microsoft Windows в качестве гостевых систем

В Xen версии 3.0 введена возможность запуска Microsoft Windows в качестве гостевой операционной системы без изменений, если процессор хост-машины поддерживает аппаратную виртуализацию, предоставленную Intel VT-х (ранее известный под кодовым названием Vanderpool) или AMD-V (ранее известный под кодовым названием Pacifica).

В ходе разработки Xen 1.x, Microsoft Research, вместе с группой разработки операционных систем в Кембриджском университете, разработали порт Windows XP на Xen - это стало возможным благодаря академической программе лицензирования Microsoft. Условия данной лицензии не позволяют публиковать этот порт.

Джеймс Харпер и комьюнити Xen приступили к разработке под лицензией GPL паравиртуализированных драйверов для Windows. Они обеспечивают интерфейсные драйвера для блочных и сетевых устройств Xen, что дает более высокую производительность диска и сети для системы Windows, работающих в режиме HVM. Без этих драйверов и диск, и сетевой трафик должен быть обработан через QEMU-DM.

Устанвка на Ubuntu Server 16.04 LTS

Далее будет описана установка на Ubuntu Server 16.04 LTS гипервизора, а на него будет установлена Ubuntu 16.04

В процессе установки Ubuntu Server 16.04 LTS

На протяжении установки виртуальной ОС при выборе типа разбиения виртуального диска выберите опцию "Guided - use the entire disk and setup LVM" (использовать весь виртуальный диск и установить на него LVM). Затем, когда Вам скажут, что "Amount of volume group to use for guided partitioning:" (все ли хранилище использовать для выбранной разметки) -- введите объем достаточный для Xen Dom0, оставив все оставшееся пространство виртуального диска свободным. Необходимо ввести объем достаточный для Ubuntu Server вместе с Xen гипервизором. Для примера, можете взять 5 Гб, этого будет достаточно для минимальной конфигурации Xen Dom0. Выделения 25% от размера тоже приемлемый выбор.

Установка Xen-гипервизора

Установка 64-битной версии:

$ sudo apt-get install xen-hypervisor-amd64

Модификация GRUB для входа в Xen:

$ sudo dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
$ sudo update-grub

После перезагрузка:

$ sudo reboot

Проверка успеха установки:

$ sudo xm list
(xl для поздних версий XenProject)

Конфигурация сети

Эта секция описывает как поставить "bridging to Xen", то есть настроить соединение для гипервизора. Предполагается, что eth0 ваш протокол для dom0 и для VMs. Это так же подразумевает, что вы используете DHCP.

$ sudo apt-get install bridge-utils

Измените /etc/network/interface:

auto lo eth0 xenbr0
iface lo inet loopback

iface xenbr0 inet dhcp
  bridge_ports eth0

iface eth0 inet manual

Перезагрузить сеть для настройки xenbr0 bridge:

$ sudo ifdown eth0 && sudo ifup xenbr0 && sudo ifup eth0

Создание PV Guest VM

Просмотрите ваши существующие volume groups (VG) и выберите тот, куда хотите установить VM:

$ sudo vgs

Создайте логический раздел (LV):

$ sudo lvcreate -L 10G -n lv_vm_ubuntu /dev/<VGNAME>

Проверьте, что LV создалось:

$ sudo lvs

Скачивание образа =

Выберите зеркало (мы будем устанавливать Ubuntu desktop) https://launchpad.net/ubuntu/+archivemirrors.

$ sudo mkdir -p /var/lib/xen/images/ubuntu-netboot/trusty14LTS
$ cd /var/lib/xen/images/ubuntu-netboot/trusty14LTS
$ wget http://<mirror>/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/xen/vmlinuz
$ wget http://<mirror>/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/xen/initrd.gz

Непосредственная установка VM

$ cd /etc/xen
$ cp xlexample.pvlinux ubud1.cfg
$ vi ubud1.cfg
name = "ubud1"

kernel = "/var/lib/xen/images/ubuntu-netboot/trusty14LTS/vmlinuz"
ramdisk = "/var/lib/xen/images/ubuntu-netboot/trusty14LTS/initrd.gz"
#bootloader = "/usr/lib/xen-4.4/bin/pygrub"

memory = 1024
vcpus = 1

# Custom option for Open vSwitch
vif = [ 'script=vif-openvswitch,bridge=ovsbr0' ]

disk = [ '/dev/<VGNAME>/lv_vm_ubuntu,raw,xvda,rw' ]

# You may also consider some other options
# [[http://xenbits.xen.org/docs/4.4-testing/man/xl.cfg.5.html]]

Запуск контейнера для VM и установка образа:

$ sudo xl create -c /etc/xen/ubud1.cfg

После установки, настроим pygrup bootloader:

$ vi /etc/xen/ubud1.cfg
#kernel = "/var/lib/xen/images/ubuntu-netboot/trusty14LTS/vmlinuz"
#ramdisk = "/var/lib/xen/images/ubuntu-netboot/trusty14LTS/initrd.gz"
bootloader = "/usr/lib/xen-4.4/bin/pygrub"

Теперь перезагрузим VM с новым bootloader:

$ sudo xl shutdown ubud1
$ sudo xl create -c /etc/xen/ubud1.cfg

Создание HPV Guest VM

Скачать ISO образ: http://www.ubuntu.com/download/desktop

sudo pvs

Выбери VG, создай LV:

sudo lvcreate -L 4G -n ubuntu-hvm /dev/<VG>

Создай файл конфигурации для VM /etc/xen/ubuntu-hvm.cfg:

builder = "hvm"
name = "ubuntu-hvm"
memory = "512"
vcpus = 1
vif = ['']
disk = ['phy:/dev/<VG>/ubuntu-hvm,hda,w','file:/root/ubuntu-12.04-desktop-amd64.iso,hdc:cdrom,r']
vnc = 1
boot="dc"
xl create /etc/xen/ubuntu-hvm.cfg
vncviewer localhost:0

После установки вы можете удалить CDROM из конфига и изменить порядок загрузки Для примера/etc/xen/ubuntu-hvm.cfg:

builder = "hvm"
name = "ubuntu-hvm"
memory = "512"
vcpus = 1
vif = ['']
#disk = ['phy:/dev/<VG>/ubuntu-hvm,hda,w','file:/root/ubuntu-12.04-server-amd64.iso,hdc:cdrom,r']
disk = ['phy:/dev/<VG>/ubuntu-hvm,hda,w']
vnc = 1
boot="c"
#boot="dc"