tag:blogger.com,1999:blog-13976847.post-1155399064515921252006-08-12T17:30:00.000+03:002006-10-04T23:43:26.813+03:00Устанавливаем Xen<div style="text-align: justify;"><span style="font-size:85%;">Позволю себе проспустить теорию, на которой основываются техники виртуализации, и после краткого описания терминов перейду к делу. Итак, Xen - технология паравиртуализации (называемая также supervisor), предполагающая либо модификацию ядер гостевых ОС, либо аппаратную поддержку виртуализации со стороны CPU (Vanderpool, Pacifica). Без специальной аппаратной поддержки в качестве гостевых ОС могут выступать Free/NetBSD, GNU/Linux, Solaris, а с нею - также и Windows. В архитектуре Xen управление ресурами аппаратуры осуществляется на самом нижнем уровне, в административном домене Domain 0 (или Dom0), где запущен xend, а гостевые ОС работают в Domain U, DomU.<br /><br />Нижеследующие инструкции ориентированы на Debian Etch, но, может с некоторыми правками, применимы к любой Debian/Ubuntu системе.<br /><br />Устанавливаем пакеты собственно Xen и ядро:<br /># apt-get install xen-hypervisor-3.0-i386 xen-utils-3.0 xen-docs-3.0 linux-image-2.6-xen-k7 libc6-xen<br />Здесь и далее k7 следует заменить на название семейства Вашего CPU. Доступны также PAE-версии ядра.<br /><br />Убедитесь, что установлены и следующие программы:<br /># apt-get install bridge-utils iproute sysfsutils,<br />а hotplug, наоборот, удалён.<br /><br />Следующий шаг необходим:<br /># mv /lib/tls/ /lib/tls.disabled<br /><br />Создаём initrd<br /># cd /boot<br /># mkinitramfs -o /boot/initrd.img-2.6.16-2-xen-k7 2.6.16-2-xen-k7<br /><br />В файле /etc/xen/xend-config.sxp должны быть раскомментированы строки (network-script network-bridge) (номер строки 73) и (vif-script vif-bridge) (строка 104).<br /><br />Наконец, добавляем секцию Xen в конфиг grub:<br />title Xen 3.0 / Debian GNU/Linux<br />kernel (hd1,4)/boot/xen-3.0-i386.gz console=vga<br />module (hd1,4)/boot/vmlinuz-2.6.16-2-xen-k7 root=/dev/hdb5 ro console=tty0 vga=791<br />module (hd1,4)/boot/initrd.img-2.6.16-2-xen-k7<br />boot<br /><br />После прочтения официальной документации некоторая неясность возникает вследствие того, что в Debian ядро, которе мы установили, подходит для Dom0 и DomU одновременно. Можно построить разные ядра для Xen0 и XenU, взяв исходники на <a href="http://www.xensource.com/downloads/">http://www.xensource.com/downloads/</a>, но вряд ли выигрыш в быстродействии оправдает расход времени. При использовании же единого ядра главное не забывать указывать наш initrd в параметре ramdisk в конфиге каждой гостевой ОС. Всё общение между "хозяином" и гостевой ОС происходит по сети через ethernet-bridge. А чтобы "поделить" одну видеокарту между несколькими доменами (и соответственно запускать в них свои экземпляры X-сервера), надо настроить VNC или FreeNX.<br /><br />Итак, после успешной перезагрузки (нам надо, чтобы работал демон xend и присутствовали мосты в выводе команды brctl show) приступаем к запуску гостевой ОС. Для начала проще воспользоваться одним из готовых образов с сайта <a href="http://jailtime.org/">jailtime.org</a>.<br /># mkdir -p /xen/slackware<br /># mv slackware.10-2.20060210.img.tgz /xen/slackware<br /># cd /xen/slackware<br /># tar -xvzf slackware.10-2.20060210.img.tgz<br /><br />Смотрим, чтобы в файле slackware.10-2.xen.cfg опции kernel и ramdisk указывали на текующие ядро и initrd, а в строке disk был правильно указан путь к образу корневого раздела гостевой ОС и свопа.<br /><br />Запускаем гостевую ОС:<br />xm create slackware.10-2.xen.cfg -c<br />Список работающих систем можно посмотреть командой xm list или xentop. Отсоединиться от консоли можно нажав "Ctrl+]", зайти обратно - подсмотрев ID в выводе xm list и скомандовав xm console ID. Остановитьгостевую ОС можно командой xm shutdown Name, где Name - её имя в выводе xm list.<br /><br />Для нормального функционирования гостевой ОС остаётся скопировать в её ФС каталог /lib/modules/2.6.16-2-xen-k7 мастера:<br /># mkdir /mnt/slackware<<br /># mount -o loop slackware.10-2.img /mnt/slackware<br /># cp -R /lib/modules/2.6.16-2-xen-k7 /mnt/slackware/lib/modules<br /><br />Чтобы избежать сообщений типа<br />INIT: Entering runlevel: 5<br />INIT: Id "1" respawning too fast: disabled for 5 minutes<br />выполняем следующие действия:<br /># cd /mnt/slackware/dev<br /># ./MAKEDEV tty1 tty2 tty3 tty4 tty5 tty6<br />... и размонтируем ФС.<br /><br />За кадром остались такие интересные возможности, как распределение аппаратных ресурсов между гостевыми ОС, "живая миграция" виртуальных машин с сервера на сервер, sHype/Xen Access Control, но может я ещё вернусь к этой теме :)<br /><br />Полезные ссылки:<br /><ol><li>Статья "The Perfect Xen 3.0 Setup for Debian" (в ней описано пострение ядер Dom0 и DomU из исходников и установка Debian также и в качестве гостевой ОС): <a href="http://www.howtoforge.com/book/print/1169">http://www.howtoforge.com/book/print/1169</a></li><br /><li>HOWTO Xen and Gentoo - Gentoo Linux Wiki: <a href="http://gentoo-wiki.com/Xen">http://gentoo-wiki.com/Xen</a></li><br /><li>Xen User's Guide с полным описанием возможностей Xen: <a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/user/user.html">http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/user/user.html</a></li><br /><li>Описание некоторых конфигураций, в которых используют Xen, на Xen Wiki: <a href="http://wiki.xensource.com/xenwiki/CoolConfigurations">http://wiki.xensource.com/xenwiki/CoolConfigurations</a></li><br />В частности, David Muench порадовал конфигурацией со следующими DomU доменами: внешний и внутренний веб-сервера, сервер СУБД, сервер Asterisk, сервер MythTV с выделенными ему тремя платами кодирования MPEG-2 и карточкой HDTV. Всё это работат на Celeron D 2.4GHz с 1.5GB ОЗУ :D</ol></span></div>Mardukhttp://www.blogger.com/profile/18298739370062935027noreply@blogger.com