Cellar Door

12 августа 2006

Устанавливаем Xen

Позволю себе проспустить теорию, на которой основываются техники виртуализации, и после краткого описания терминов перейду к делу. Итак, Xen - технология паравиртуализации (называемая также supervisor), предполагающая либо модификацию ядер гостевых ОС, либо аппаратную поддержку виртуализации со стороны CPU (Vanderpool, Pacifica). Без специальной аппаратной поддержки в качестве гостевых ОС могут выступать Free/NetBSD, GNU/Linux, Solaris, а с нею - также и Windows. В архитектуре Xen управление ресурами аппаратуры осуществляется на самом нижнем уровне, в административном домене Domain 0 (или Dom0), где запущен xend, а гостевые ОС работают в Domain U, DomU.

Нижеследующие инструкции ориентированы на Debian Etch, но, может с некоторыми правками, применимы к любой Debian/Ubuntu системе.

Устанавливаем пакеты собственно Xen и ядро:
# apt-get install xen-hypervisor-3.0-i386 xen-utils-3.0 xen-docs-3.0 linux-image-2.6-xen-k7 libc6-xen
Здесь и далее k7 следует заменить на название семейства Вашего CPU. Доступны также PAE-версии ядра.

Убедитесь, что установлены и следующие программы:
# apt-get install bridge-utils iproute sysfsutils,
а hotplug, наоборот, удалён.

Следующий шаг необходим:
# mv /lib/tls/ /lib/tls.disabled

Создаём initrd
# cd /boot
# mkinitramfs -o /boot/initrd.img-2.6.16-2-xen-k7 2.6.16-2-xen-k7

В файле /etc/xen/xend-config.sxp должны быть раскомментированы строки (network-script network-bridge) (номер строки 73) и (vif-script vif-bridge) (строка 104).

Наконец, добавляем секцию Xen в конфиг grub:
title Xen 3.0 / Debian GNU/Linux
kernel (hd1,4)/boot/xen-3.0-i386.gz console=vga
module (hd1,4)/boot/vmlinuz-2.6.16-2-xen-k7 root=/dev/hdb5 ro console=tty0 vga=791
module (hd1,4)/boot/initrd.img-2.6.16-2-xen-k7
boot

После прочтения официальной документации некоторая неясность возникает вследствие того, что в Debian ядро, которе мы установили, подходит для Dom0 и DomU одновременно. Можно построить разные ядра для Xen0 и XenU, взяв исходники на http://www.xensource.com/downloads/, но вряд ли выигрыш в быстродействии оправдает расход времени. При использовании же единого ядра главное не забывать указывать наш initrd в параметре ramdisk в конфиге каждой гостевой ОС. Всё общение между "хозяином" и гостевой ОС происходит по сети через ethernet-bridge. А чтобы "поделить" одну видеокарту между несколькими доменами (и соответственно запускать в них свои экземпляры X-сервера), надо настроить VNC или FreeNX.

Итак, после успешной перезагрузки (нам надо, чтобы работал демон xend и присутствовали мосты в выводе команды brctl show) приступаем к запуску гостевой ОС. Для начала проще воспользоваться одним из готовых образов с сайта jailtime.org.
# mkdir -p /xen/slackware
# mv slackware.10-2.20060210.img.tgz /xen/slackware
# cd /xen/slackware
# tar -xvzf slackware.10-2.20060210.img.tgz

Смотрим, чтобы в файле slackware.10-2.xen.cfg опции kernel и ramdisk указывали на текующие ядро и initrd, а в строке disk был правильно указан путь к образу корневого раздела гостевой ОС и свопа.

Запускаем гостевую ОС:
xm create slackware.10-2.xen.cfg -c
Список работающих систем можно посмотреть командой xm list или xentop. Отсоединиться от консоли можно нажав "Ctrl+]", зайти обратно - подсмотрев ID в выводе xm list и скомандовав xm console ID. Остановитьгостевую ОС можно командой xm shutdown Name, где Name - её имя в выводе xm list.

Для нормального функционирования гостевой ОС остаётся скопировать в её ФС каталог /lib/modules/2.6.16-2-xen-k7 мастера:
# mkdir /mnt/slackware<
# mount -o loop slackware.10-2.img /mnt/slackware
# cp -R /lib/modules/2.6.16-2-xen-k7 /mnt/slackware/lib/modules

Чтобы избежать сообщений типа
INIT: Entering runlevel: 5
INIT: Id "1" respawning too fast: disabled for 5 minutes
выполняем следующие действия:
# cd /mnt/slackware/dev
# ./MAKEDEV tty1 tty2 tty3 tty4 tty5 tty6
... и размонтируем ФС.

За кадром остались такие интересные возможности, как распределение аппаратных ресурсов между гостевыми ОС, "живая миграция" виртуальных машин с сервера на сервер, sHype/Xen Access Control, но может я ещё вернусь к этой теме :)

Полезные ссылки:
  1. Статья "The Perfect Xen 3.0 Setup for Debian" (в ней описано пострение ядер Dom0 и DomU из исходников и установка Debian также и в качестве гостевой ОС): http://www.howtoforge.com/book/print/1169

  2. HOWTO Xen and Gentoo - Gentoo Linux Wiki: http://gentoo-wiki.com/Xen

  3. Xen User's Guide с полным описанием возможностей Xen: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/user/user.html

  4. Описание некоторых конфигураций, в которых используют Xen, на Xen Wiki: http://wiki.xensource.com/xenwiki/CoolConfigurations

  5. В частности, David Muench порадовал конфигурацией со следующими DomU доменами: внешний и внутренний веб-сервера, сервер СУБД, сервер Asterisk, сервер MythTV с выделенными ему тремя платами кодирования MPEG-2 и карточкой HDTV. Всё это работат на Celeron D 2.4GHz с 1.5GB ОЗУ :D

11 августа 2006

Семинар по Xen

Продублирую-ка я информацию о бесплатном однодневном семинаре "ПОЛИГОН 2006. Система виртуализации Xen", который будет проходить 14-23 августа в Учебном центре "Сетевые Технологии" компании TechExpert:

Занятия проходят в Киеве с 9-30 до 17-30 с перерывами на кофе-брейк и обед, по адресу: г. Киев, пр. Победы, 53, 4 этаж. УЦ «Сетевые Технологии»

План проведения тренинга:

  1. Обзор технологий виртуализации и паравиртуализации
  2. Основные направления использования виртуализации в современных сетях
  3. Архитектура монитора виртуальных машин Xen
  4. Сравнение производительности Xen и других виртуальных машин
  5. Технологии аппаратной виртуализации Vanderpool от Intel и Pacifica от AMD
  6. Преимущества использования серверов Hewlett-Packard в качестве платформы для виртуализации
  7. Преимущества использования тонких клиентов Hewlett-Packard совместно с виртализированными серверами
  8. Инструменты Hewlett-Packard для управления серверами

Практические работы по темам:

  1. Инсталляция и конфигурирование монитора виртуальных машин Xen
  2. Распределение ресурсов между виртуальными машинами
  3. Мониторинг виртуальных машин
  4. Живая миграция виртуальных машин
  5. Использование тонких клиентов совместно с виртуальными серверами
  6. Использование инструментов Hewlett-Packard по управлению серверами. Выполнение основных операций, необходимых при администрировании серверов Hewlett-Packard

Методическое пособие с материалами лабораторных работ по всем разделам практической части семинара.

Документ об окончании курса: Сертификат Учебного центра "Сетевые Технологии".

Регистрация здесь.

P.S. Всё-таки есть свои плюсы в том, чтобы работать всё лето без отпуска ,))

ICFP Programming Contest '06 глазами очевидца

Не могу не пропиарить отчёт Дмитрия Остапова aka _adept_ о девятом ICFP Programming Contest, происходившем 21-24 июля. Автор входил в команду канала #haskell. Думаю, всем понятно, на каком языке они остановили свой выбор? ;)
Очень интересно, на самом деле...
Часть 1
Часть 2
Часть 3