Установка Xen 4.2 на Debian Squeeze

ЗЫ. Вот и подобрались к тому, что пора писать напоминалку для народа — как Xen 4.2 ставить на любимый Debian.

Сегодня наша задача — установить Xen 4.2 (в нашем случае — 4.2.1) на Linux Debian Squeeze. Встроенной поддержки нового Xen у Squeeze нет — последняя официальная версия — 4.0.1-4 (на момент написания данной заметки), поэтому придется все делать из исходников.


1) Логинимся на хостовую машину и скачиваем Xen 4.2.

 $ wget http://bits.xensource.com/oss-xen/release/4.2.1/xen-4.2.1.tar.gz

Распаковываем:

 $ tar -xzf xen-4.2.1.tar.gz

После чего у нас появляется директория xen-4.2.1, в которой лежат исходники гипервизора.

2) Устанавливаем зависимости.

Это делаем перед компиляцией и сборкой гипервизора, т.к. иначе ничего не получится.

 $ sudo apt-get build-dep xen
 $ sudo apt-get install libx11-dev libssl-dev python2.6-dev
 $ sudo apt-get install bridge-utils
 $ sudo apt-get install bcc bin86 gawk bridge-utils iproute libcurl3 libcurl4-openssl-dev \
 bzip2 module-init-tools transfig tgif texinfo texlive-latex-base \
 texlive-latex-recommended texlive-fonts-extra texlive-fonts-recommended \
 pciutils-dev mercurial make gcc libc6-dev zlib1g-dev python python-dev \
 python-twisted libncurses5-dev patch libvncserver-dev libsdl-dev libjpeg62-dev \
 iasl libbz2-dev e2fslibs-dev git-core uuid-dev ocaml ocaml-findlib libx11-dev \
 bison flex xz-utils libyajl-dev gettext pkg-config

3) Собираем и устанавливаем Xen 4.2

 $ cd xen-4.2.1
 $ ./configure
 $ sudo make dist
 $ sudo make install PYTHON_PREFIX_ARG=

4) Прописываем автозагрузку Xen-демонов

 $ sudo update-rc.d xencommons defaults
 $ sudo update-rc.d xendomains defaults

Заметим, что демон xend сейчас считается устаревшим и его запуск производители Xen осуществлять не рекомендуют. Вместо него они предлагают (начиная с 4.1 тестово, а сейчас — уже и для боевой конфигурации) использовать XL.

5) Добавляем загрузку необходимых модулей. Для этого открываем файл

/etc/modules

И добавляем следующие строчки:

 loop max_loop=64
 blktap
 xen-evtchn

Параметр max_loop определяет — сколько максимально может быть создано Loop-устройств — таких, как виртуальный жесткий диск, виртуальная сетевая карта и т.д. Считается он в сумме всех машин, т.ч. мало ставить не следует — если только не пара-тройка машин предполагается к работе. 64 в моем личном опыте пока мало не было нигде.

6) Устанавливаем необходимое ядро для работы с Xen. Нам подойдет ядро, идущее «из коробки» — 2.6.32-5.

$ sudo apt-get install linux-image-2.6.32-5-xen-amd64 linux-headers-2.6.32-5-xen-amd64

Как видно, этот пример для 64-битных ОС (amd64). Если у Вас 32-битная — ставьте соответствующее ядро.

7) Теперь нам нужно сделать так, чтобы Xen запускался первым и вообще запускался. Для начала идем в /boot и избавляемся от файла xen-syms-4.2.1, например, переместив его куда-нибудь:

 $ cd /boot
 $ sudo mkdir xsyms
 $ sudo mv xen-syms-4.2.1 xsyms

Теперь топаем в конфигурацию Grub (/etc/grub.d). Дело в том, что по-умолчанию Xen ставится в меню загрузки после обычных ядер, что означает, что при перезагрузке вариант с Xen нужно выбирать вручную. Этот бред придется лечить ручками:

 $ cd /etc/grub.d
 $ sudo mv 20_linux_xen 09_linux_xen

Тут мы переместили загрузку Xen на первое место (индекс сортировки = 09). Теперь при перезагрузке будет автоматически загружен гипервизор с доменом-0.

Но нужно еще пересобрать конфигурацию Grub:

 $ sudo update-grub

9) Конфигурируем Xen.

Для этого открываем файл /etc/xen/xend-config.sxp и правим. Для начальной работы я рекомендую раскомментировать строчку с включением с доступом по VNC к консолям виртуальных машин:

 (vnc-listen '0.0.0.0')

(кстати, по-умолчанию стоит 127.0.0.1, что совершенно бесполезно — не имея X-Window на борту гипервизора — потому что нафик он там не нужен — подцепиться с 127.0.0.1 к VNC консоли просто нечем, поэтому ставим значение 0.0.0.0, разрешая подцепляться откуда угодно).

10) Конфигурируем сеть.

Начиная с Xen 4.1 (и продолжая в Xen 4.2) встроенное средство network-bridge использовать возможно только для конфигурирования одной сетевой карты. Более того, сами производители усиленно рекомендуют мосты давать средствами, собственно, самой ОС гипервизора — в нашем случае, силами Linux Debian. Давайте так и сделаем.

Мост делается самыми стандартными методами — как любой другой на Debian. Вот пример конфига.

/etc/network/interfaces
 # This file describes the network interfaces available on your system
 # and how to activate them. For more information, see interfaces(5).# The loopback network interface
 auto lo
 iface lo inet loopback
 auto xeth0
 iface xeth0 inet static
 bridge_ports eth0
 address 10.0.34.200
 netmask 255.255.255.0
 network 10.0.34.0
 broadcast 10.0.34.255
 gateway 10.0.34.250
 auto xeth1
 iface xeth1 inet static
 bridge_ports eth1
 address 10.3.34.200
 netmask 255.255.255.0
 # The primary network interface
 #allow-hotplug eth0
 #iface eth0 inet static
 #       address 10.0.34.200
 #       netmask 255.255.255.0
 #       network 10.0.34.0
 #       broadcast 10.0.34.255
 #       gateway 10.0.34.250
 #       # dns-* options are implemented by the resolvconf package, if installed
 #       dns-nameservers 10.0.1.10

Этот простенький файл показывает поднятие двух мостов xeth0 и xeth1 (которые в дальнейшем могут быть использованы для виртуальных машин). Мостам присваиваются IP адреса — заметьте, что не самим интерфейсам eth0 и eth1, а именно мостам xeth0 и xeth1.

11) Перезагружаемся.

Для проверки, что все «крутится и вертится» — просим Xen показать список текущих машин:

 $ sudo xl list
 Name                                        ID   Mem VCPUs      State   Time(s)
 Domain-0                                     0 32320     8     r----- 782440.2

Кстати, еще заметьте — уже не xm я использую для управления машинами, а xl.

Источник http://how-it.skylab-it.ru/public/root/457-%D0%A3stanovka_xen_4_2_na_debian_squeeze.html

Запись опубликована в рубрике *Ubuntu, *Unix,*Linux. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91