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).
http://wiki.xensource.com/xenwiki/ : Xen Wiki.
Также возможен запуск некоторых других, непортированных операционных систем, если в вашем процессоре есть поддержка аппаратной виртуализации (VT или Pacifica).
Установка на etch
Оригинальная документация может быть найдена в пакете xen-docs-3.0 (в файле /usr/share/doc/xen-docs-3.0/user.pdf.gz). Также доступна online.
Dom0 (host)
Выберите и установите пакет xen-linux-system-KERNELVERSION. Это установит ядро, гипервизор и соответствующие утилиты.
На i386 установите libc6-xen. Это означает, что вам не требуется удалять /lib/tls или куда-нибудь переносить, как советуется во многих руководствах по Xen.
- Используйте в качестве загрузчика Grub (так как Lilo и Xen не играют вместе)
- Вероятно, вы захотите настроить /etc/xen/xend-config.sxp (особенно схему network-script).
Вам может оказаться полезным пакет xen-tools. Это набор скриптов для управления гостевыми доменами Xen, в которых запущены Debian/Ubuntu/CentOS. Дополнительная информация и примеры -- http://xen-tools.org/software/xen-tools/.
Представляют интерес следующие пакеты xen-linux-system (Устанавливайте соответствующий вашей архитектуре и дистрибутиву):
Lenny: xen-linux-system-2.6.26-1-xen-686 и xen-linux-system-2.6.26-1-xen-amd64
Etch: xen-linux-system-2.6.18-6-xen-686 и xen-linux-system-2.6.18-6-xen-amd64.
Если вам нужно добавить какие-либо модификации в ядро с патчем xen, то один из путей сделать это описан в ?DebianKernelCustomCompilation.
DomU (гости)
- Наиболее простой путь сделать это -- использовать xen-tools (и, если это не то, что вам нужно, Steve Kemp проницателен и быстр в снабжении полезными советами).
Следующий достаточно протестированный и работающий метод создать файловую систему domU из dom0 -- "Installing Debian GNU/Linux from a Unix/Linux System", с добавкой некоторых трюков, необходимых для того, чтобы гость Xen запустился правильно - главным образом настройка inittab и установка libc6-xen, и может быть ядерных модулей, необходимых для ядра, запущеного вами в 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=https://d-i.debian.org/daily-images/amd64/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, в результате отпадет необходимоть в переносе этого каталога куда-либо. Может ли кто-либо подтвердить это?
Это специфично для Debian. В остальных гостевых ОС всё еще необходимо переименовывать/удалять /lib/tls.
Поддержка пакетов
Пакеты Xen в Debian поддерживаются проектом pkg-xen.
Страница Обзор пакетов разработчиков Debian показывает список пакетов с исходниками, поддерживаемых командой.
Общие ошибки
Примечание: если Xen рушится и атоматически перезагружается, вы можете использовать опцию xen noreboot, чтобы отключить атоматическую перезагрузку. Например:
title Xen 3.1-1-i386 / Debian GNU/Linux, kernel 2.6.18-5-xen-686 root (hd0,0) kernel /xen-3.1-1-i386.gz noreboot module /vmlinuz-2.6.18-5-xen-686 root=/dev/foo ro console=tty0 module /initrd.img-2.6.18-5-xen-686
Ошибка 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 ситуация стабилизируется на следующем:
- dom0 работает на ядрах 2.6.18 в Etch и 2.6.26 в Lenny, но не работает с ядром 2.6.24 из Etch-n-half;
- domU должен работать со всеми ядрами (2.6.18 и 2.6.24 в Etch и 2.6.26 в Lenny);
- В Etch dom0 может запускать domU только такой же архитектуры, независимо от того, какая версия запущена в domU; так в Etch dom0 на i386 можно запустить domU i386 но не amd64; соответственно, в Etch dom0 на amd64 можно запустить только 64-битные domU;
- В Lenny dom0 на amd64 может запускать любые domU (Etch или Lenny, i386 или amd64);
- В Lenny dom0 на i386 может, или должен мочь, запускать любые 32-битные domU (Etch или Lenny).
Ресурсы
Домашняя страница : http://www.xen.org
Документация на пакет xen-docs-3.0 (в /usr/share/doc/xen-docs-3.0/user.pdf.gz). Также доступна online.
- Xen Wiki :
German Wiki on Xen: http://www.xen-info.de/wiki
Русскоязычные ресурсы по Xen:
http://xgu.ru/xen/manual/ -- руководство по Xen 3.0
http://xgu.ru/wiki/XenFaq -- Xen FAQ