Установка XEN

Материал из ISPWiki

Перейти к: навигация, поиск

На данный момент поддержка XEN "из коробки" нормально не работает ни в одной ОС. Под "нормально" я имею ввиду поддержку DomU с любой гостевой ОС. Поэтому я решил написать, как установить и настроить XEN 4.0 вручную.

Содержание

Подготовка системы

В этой инструкции я расскажу об установке XEN на Debian. Для XEN необходим корень на 5-10 Гб больше, чем оперативной памяти на сервере. Место необходимо для XEN, чтобы сохранять состояния виртуальных машин при перезагрузке в каталог /var/lib/xen/save. Кроме того понадобится место для Шаблонов VDS. Если места не будет хватать, будут возникать проблемы при перезагрузке сервера.

Собираем XEN

  1. Качаем последнюю версию http://bits.xensource.com/oss-xen/release/4.0.0/xen-4.0.0.tar.gz
  2. Распаковываем xen-4.0.0.tar.gz
  3. Читаем инструкцию по установке http://wiki.xensource.com/xenwiki/Xen4.0?highlight=(xen)|(4.0)

Вот мой краткий пересказ этой инструкции

Ставим необходимые пакеты

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 build-essential 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 gcc-multilib

Собираем XEN

cd xen-4.0.0
make install

Эта операция может продолжаться довольно долго (зависит от скорости интернета и скорости сервера). В процессе make world задает вопросы, поэтому далеко от консоли лучше не отходить. На все его вопросы можно жать Enter.

Теперь настраиваем ядро. То, что соберется по умолчанию, работать не будет. Ставим pciutils и смотрим, какие драйвера используются для жесткого диска и сетевой карты.

Открываем файл linux-2.6-pvops.git/drivers/xen/Kconfig, находим там XEN_GNTDEV и снимаем с него атрибут BROKEN. Я конечно понимаю, что нехорошо, но без этого не будет работать VNC.

Теперь идем в каталог build-linux-2.6-pvops_x86_64 и выполняем:

make menuconfig
  1. Включаем все необходимые нам драйвера оборудования
  2. Включаем поддержку туннелей (поискать TUN)
  3. Включаем XEN_GNTDEV
  4. Выносим loop в модули (на случай, если нам захочется создавать VDS не только в LVM но и на обычном разделе)
  5. Включаем NETFILTER_XT_MATCH_PHYSDEV (без него iptables не работают)

Теперь пересобираем ядро:

make all
make install
make modules_install
mkinitramfs -o /boot/initrd.img-2.6.31.13 2.6.31.13 # Версия ядра может быть и другой

Обновляем grub

Работает только с первым grub, для второго надо прописывать XEN вручную.

 update-grub

В строчку kernel можно дописать параметры: dom0_mem=1024M loglvl=all guest_loglvl=all. Но работать будет и без них.

Если планируется хранить VDS в файлах (с использованием loop-модуля), а не на LVM-разделах, то стоит добавить в строчку kernel параметр max_loop=255 , иначе может оказаться, что нельзя создавать больше 8 loop-устройств.

Настраиваем систему

Если xen_gntdev вы сделали модулем, то прописываем его в /etc/modules

Разрешаем автозапуск xen

update-rc.d xend start 20 2 . stop 20 0 1 6 .
update-rc.d xendomains start 30 2 . stop 10 0 1 6 .

Здесь важен порядок запуска, xend должен стартовать раньше чем xendomains, xendomains должен завершаться раньше чем xend, иначе сервер будет зависать при перезагрузке и отключении. К сожалению, разработчики Xen не потрудились прописать зависимости в стартовых скриптах, поэтому необходимо уделить этому моменту особое внимание.

Настраиваем bridge. Для этого в файл /etc/network/interfaces в настройках вашей сетевой карты дописываем:

up /etc/xen/scripts/network-bridge start

Настраиваем XEN. Приписываем/раскоменчиваем строки в файле /etc/xen/xend-config.sxp:

(network-script 'network-bridge bridge=eth0 antispoof=yes')
(vif-script vif-bridge)
(vnc-listen 'XX.XX.XX.XX') # XX.XX.XX.XX - основной IP-вашего сервера. По умолчанию прописан 127.0.0.1
(vncpasswd '....')         # любая случайная последовательность. Вам она скорее всего не понадобиться

Закрываем возможность несанкционированного использования чужих IP:

iptables -P FORWARD DROP

Теперь можно попробовать перезагрузить сервер.

Настройка LVM

Устанавливаем поддержку LVM

apt-get install lvm2

Создаем раздел LVM

pvcreate /dev/sda3        # инициализация диска для использования в LVM
vgcreate VgXen /dev/sda3  # создание volume group с именем VgXen

Настройка VDSmanager

Как вы понимаете, предыдущие шаги формализовать сложно, поэтому инсталятора пока нет. Вернее он есть, но пользоваться им не стоит :) Качаем и распаковываем install.tgz:

wget http://download.ispsystem.com/Debian-5/x86_64/VDSmanager-Linux/install.tgz
mkdir -p /usr/local/ispmgr
tar -x -f install.tgz -z -p -C /usr/local/ispmgr

Настраиваем:

cd /usr/local/ispmgr
touch etc/vdsmgr.conf
sbin/pkgctl -m vdsmgr cache                    # строим кэш пакетов
sbin/pkgctl -m vdsmgr install www              # устанавливаем и настраиваем Apache
# прописываем устройство, где мы будем создавать приватные данные VDS
echo "PrivateDiskDir /dev/VgXen" > etc/vdsmgr.conf
# выбираем тип виртуализации
echo "Virtualization xen" >> etc/vdsmgr.conf
rm lib/xen.so
ln -s xen2.so lib/xen.so
mkdir -p /xen/template                         # тут VDSmanager хранит шаблоны VDS
mkdir -p /xen/conf                             # тут их конфиги

В крон добавляем (чтобы собиралась информация по использованию ресурсов):

*/15 * * * * /usr/local/ispmgr/sbin/xenstat    # использование диска
*/15 * * * * /usr/local/ispmgr/sbin/dostat.pl  # трафик

Создаем первого пользователя VDSmanager. Имя: admin, пароль: test

echo "User admin teH0wLIpW0gyQ" >> /usr/local/ispmgr/etc/vdsmgr.conf

Теперь заходим в ваш VDSmanager https://ip/manager/vdsmgr

Была ли эта информация полезной? Да | Нет
Личные инструменты