Установка XEN
Материал из ISPWiki
На данный момент поддержка XEN "из коробки" нормально не работает ни в одной ОС. Под "нормально" я имею ввиду поддержку DomU с любой гостевой ОС. Поэтому я решил написать, как установить и настроить XEN 4.0 вручную.
Содержание |
Подготовка системы
В этой инструкции я расскажу об установки XEN на Debian. Для XEN необходим корень на 5-10 Гб больший чем оперативной памяти на сервере. Место необходимо для XEN , чтобы сохранять состояния виртуальных машин при перезагрузке в каталог /var/lib/xen/save. Кроме того понадобится место для Шаблонов VDS. Если места не будет хватать, будут возникать проблемы при перезагрузке сервера.
Собираем XEN
- Качаем последнюю версию http://bits.xensource.com/oss-xen/release/4.0.0/xen-4.0.0.tar.gz
- Распаковываем xen-4.0.0.tar.gz
- Читаем инструкцию по установке 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
- Включаем все необходимые нам драйвера оборудования
- Включаем поддержку туннелей (поискать TUN)
- Включаем XEN_GNTDEV
- Выносим loop в модули (на случай, если нам захочется создавать VDS не только в LVM но и на обычном разделе)
- Включаем 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
