Xen для Debian


Обзор

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

Xen это монитор виртуальных машин, поддерживающий множество гостевых операционных систем с беспрецедентными уровнями производительности и изоляции ресурсов. Xen это ПО с открытыми исходниками, выпущен под условиями GNU General Public License. У нас есть полнофункциональные порты Linux 2.6, запущенные под Xen, и регулярно используемые для запуска необходимых приложений типа MySQL, Apache и PostgreSQL. Любой дистрибутив Linux (?RedHat, SuSE, Debian, Mandrake) должен запуститься без модификации поверх портированной ОС.

Дополнительно к Linux, члены сообщества пользователей Xen содействуют или работают над портированием остальных операционных систем, таких, как NetBSD (Christian Limpach), FreeBSD (Kip Macy) и Plan 9 (Ron Minnich).

Также возможен запуск некоторых других, непортированных операционных систем, если в вашем процессоре есть поддержка аппаратной виртуализации (VT или Pacifica).

Установка на etch

Оригинальная документация может быть найдена в пакете xen-docs-3.0 (в файле /usr/share/doc/xen-docs-3.0/user.pdf.gz). Также доступна online.

Dom0 (host)

Представляют интерес следующие пакеты xen-linux-system (Устанавливайте соответствующий вашей архитектуре и дистрибутиву):

Если вам нужно добавить какие-либо модификации в ядро с патчем xen, то один из путей сделать это описан в ?DebianKernelCustomCompilation.

DomU (гости)

Если вам не хочется использовать xen-tools, следуйте данному альтернативному руководству.

Xen загружает domU, используя ядра, находящиеся в dom0, так что вам в domU потребуется только установить соответствующий пакет linux-modules. Или вы можете воспользоваться pygrub, чтобы загрузить ядро с файловой системы domU.

На i386 убедитесь, что вы установили libc6-xen.

Установка на lenny

Dom0 (host)

Точно также, как и на Etch. Ядро 2.6.26, сборка -xen содержит патчи от Suse для поддержки Dom0.

DomU (guest)

Debian Installer в Lenny полностью поддерживает установку 32-хбитных гостей под Xen, используя вариант netboot/xen. В настоящий момент образы доступны только с ежедневных сборок, что содержат ядро, рамдиск с установщиком и пример конфигурационного файла Xen. Для установки отредактируйте по вкусу конфигурационный файл, запустите гостя с опцией "install=true" и, временно, вручную укажите ему на данные ежедневные сборки:

xm create -c xm-debian.cfg install=true \
  install-installer=http://people.debian.org/~joeyh/d-i/images/daily/

См. комментарии в конфиге для доп. опций установки.

Когда гость будет установлен, просто загружайте так:

xm create -c xm-debian.cfg

Lenny содержит ядро только с поддеркой 32 bit (PAE), что означает, что установщик не поддерживает 64-битных гостей. Вы можете продолжать использовать ядра от Etch или взять ядро из апстрима, поддерживающее 64-битные операции (2.6.27+).

В дополнение к установке через Debian Installer, xen-tools также могут создать domU с Lenny, как описано в секции про Etch выше.

Ядро по-умолчанию в Lenny имеет более новую версию paravirt_ops (сейчас 2.6.25) и не работает как dom0 (за исключением сборки -xen, содержащей поддержку Dom0, но также имеющей некоторые спорные вопросы в DomU). Также не поддерживается PCI passthrough в domU. Для PCI passthrough вам необходимо запускать ядро 2.6.18 из etch как dom0 так и domU.

В Lenny различия между Xen и non-Xen образами ядра более не существуют и могут использоваться как -686-bigmem так и -xen-686 образы ядра. Debian Installer будет устанавливать образ -686-bigmem.

Установка на sarge (oldstable)

Большинство описанных пакетов доступно на http://backports.org/, так что используйте их!

libc6-xen недоступно. Предположительно, создание файла /etc/ld.so.nohwcap послужит причиной игнорирования библиотек в /lib/tls, в результате отпадет необходимоть в переносе этого каталога куда-либо. Может ли кто-либо подтвердить это?

Поддержка пакетов

Пакеты Xen в Debian поддерживаются проектом pkg-xen.

Страница Обзор пакетов разработчиков Debian показывает список пакетов с исходниками, поддерживаемых командой.

Общие ошибки

Ошибка CDROM boot failure

Вы получили ошибку:

CDROM boot failure code 0002
or CDROM boot failure code 0003
Boot from cd-Rom failed
Fatal: Could not read the boot disk.

Это происходит потому, что Xen в настоящий момент не может загрузиться с iso-образа диска. Т.е. вы не можете использовать tap:aio:/path/to/mycd.iso,hdc:cdrom,r или file:/path/to/mycd.iso,hdc:cdrom,r.

Обход: используйте losetup для создания устройства loopback для образа диска, затем используйте его в файле конфигурации Xen. Например:

#Во-первых, проверяем, какое устройство свободно
$losetup -f
/dev/loop9

#Затем создаём устройство loopback
$losetup -f /path/to/mycd.iso

losetup /dev/loop9
/dev/loop9: [fe04]:3096598 (/path/to/mycd.iso)

Теперь вы можете использовать /dev/loop9 в файле конфигурации Xen (/etc/xen/foobar.cfg) :

...
disk = [ 'phy:/dev/vg1/xpsp3,ioemu:hda,w', 'phy:/dev/loop/0,ioemu:hdc:cdrom,r' ]
...

и загрузиться/установить гостевую ОС.

Примечание: вам необходимо переключиться обратно на синтаксис tap:aio:/path/to/mycd.iso,hdc:cdrom,r после установки, так как устройство loopback будет пересоздано после перезагрузки хоста.

"Error: Bootloader isn't executable"

Данная несколько загадочная ошибка (при запуске domU с использованием xen-utils/xm create) возникает из-за того, что xen-utils не могут найти pygrub. Измените ваш xm-debian.cfg для использования абсолютного пути (т.е. bootloader="/usr/lib/xen-3.2-1/bin/pygrub" вместо bootloader="pygrub") и ваш domU должен нормально загрузиться.

Совместимость

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

Ресурсы

Русскоязычные ресурсы по Xen: