Благодаря портированию XCP XenAPI для Debian и Ubuntu Linux у пользователей
данных дистрибутивов появилась возможность создания сервера виртуализации,
функционально эквивалентного стандартному дистрибутиву XCP на базе CentOS.
В процессе развертывания Xen хоста следует не поддастся искушению установки
пакета с ядром Linux, оканчивающегося на "-virtual". Такие ядра в Ubuntu/Debian
оптимизированы для использования внутри гостевых систем и не сконфигурированы
для использования в роли Dom0.
После установки XAPI будут запущены сервисы, использующие сетевые порты 80 и
443. Поэтому важно проследить, чтобы на текущем сервере до этого не был запущен
http-сервер или настроить раздельный запуск XAPI на другом IP. При
использовании VPN и сетевого интерфейса tun0, наблюдается ряд проблем, которые
могут привести к невозможности запуска XAPI.
Установка XAPI
Устанавливаем компоненты XAPI из специального PPA-репозитория ubuntu-xen-org.
Добавляем в /etc/apt/sources.list
deb http://ppa.launchpad.net/ubuntu-xen-org/xcp-unstable/ubuntu oneiric main
deb-src http://ppa.launchpad.net/ubuntu-xen-org/xcp-unstable/ubuntu oneiric main
или подключаем репозиторий для Debian:
apt-get install curl
echo "deb http://downloads.xen.org/XCP/debian/repo/debian unstable main" > /etc/apt/sources.list.d/kronos.list
echo "deb-src http://downloads.xen.org/XCP/debian/repo/debian unstable main" >> /etc/apt/sources.list.d/kronos.list
wget --quiet -O - http://downloads.xen.org/XCP/debian/xcp.gpg.key | apt-key add -
Устанавливаем xapi:
apt-get update
apt-get install xcp-xapi
Вариант сборки свежей версии инструментария XCP из исходных текстов с
использованием xapi-autobuilder.
Устанавливаем необходимые для сборки компоненты:
apt-get install pbuilder debhelper dh-ocaml dh-autoreconf cdebootstrap python-debian mercurial git
wget http://downloads.xen.org/XCP/debian/blktap-dkms_0.1_all.deb
dpkg -i blktap-dkms_0.1_all.deb
Клонируем Git-репозиторий xapi-autobuilder и выполняем сборку:
git clone https://github.com/jonludlam/xapi-autobuilder.git
cd xapi-autobuilder
make clean ; make
в итоге будут подготовлены необходимые для установки в Debian пакеты, свежие
версии которых также можно загрузить командой:
wget -r -l1 --no-parent -nd http://downloads.xen.org/XCP/debian/latest/
rm index.html*
Настройка XAPI
Активируем по умолчанию опцию загрузки Xen в Grub:
sed -i 's/GRUB_DEFAULT=""/GRUB_DEFAULT="Xen 4.1-amd64"/' /etc/default/grub
update-grub
Настраиваем параметры сети
В /etc/network/interfaces добавляем запуск интерфейсе xenbr0:
auto lo xenbr0
iface xenbr0 inet dhcp
bridge_ports eth0
Вместо "dhcp" при необходимости можно прописать статический IP.
Настраиваем содержимое файла xensource-inventory (в скрипте ниже
подразумевается, что корневой раздел /dev/sda1, а управляющий сетевой интерфейс
xenbr0). Для генерации xensource-inventory запускаем простой shell-скрипт:
control_domain=`uuidgen`
installation=`uuidgen`
cat > /etc/xensource-inventory << EOF
CURRENT_INTERFACES='xenbr0'
BUILD_NUMBER='0'
CONTROL_DOMAIN_UUID='${control_domain}'
INSTALLATION_UUID='${installation}'
MANAGEMENT_INTERFACE='xenbr0'
PRIMARY_DISK='/dev/sda1'
EOF
Перезагружаем систему
reboot
Использование XCP
Убедимся, что xapi запущен
service xapi status
если нет, то запустим его командой
service xapi start
Добавим к переменноё окружения PATH путь к исполняемым файлам xapi:
export PATH=$PATH:/usr/lib/xen-common/xapi/bin
Создадим репозиторий хранения. Рекомендуется использовать NFS или EXT, если в
системе есть свободное блочное устройство.
Для NFS (в переменную SR будет записан идентификатор хранилища):
SR=`xe sr-create type=nfs name-label=nfs device-config:server=<nfs server> device-config:serverpath=<path on server>`
Для незанятого блочного устройства /dev/sda3 (внимание, указанный раздел будет отформатирован !)
SR=`xe sr-create type=ext device-config:device=/dev/sda3 name-label=ext`
Свяжем созданное хранилище с пулом:
POOL=`xe pool-list --minimal`
xe pool-param-set uuid=$POOL default-SR=$SR
Решение проблемы с памятью для Dom0
В штатном ядре Ubuntu 11.10 наблюдается проблема с выделением недостаточного
объема памяти для Dom0. Данная проблема решена в ядре 3.2. В качестве обходного
пути решения, можно вручную увеличить размер выделенной для нужд Dom0 памяти
(посмотреть текущее значением можно через "cat /proc/meminfo" ).
Находим uuid идентификатор Dom0:
xe vm-list
uuid ( RO) : f5d0039b-1138-4635-c153-6203bfdc330f
name-label ( RW): Control domain on host: piggy
power-state ( RO): running
Вручную назначаем нижний и верхний лимит памяти:
xe vm-param-set uuid=f5d0039b-1138-4635-c153-6203bfdc330f memory-dynamic-max=2GiB
xe vm-param-set uuid=f5d0039b-1138-4635-c153-6203bfdc330f memory-dynamic-min=2GiB
Установка гостевой системы с Linux
Находим шаблон для установки интересующего дистрибутива:
xe template-list
Ниже представленный скрипт позволяет автоматизировать выполнение установки.
Скрипт следует запускать из локальной системы (Dom0), но его можно легко
модифицировать для организации удалённой установки с другого хоста. На
завершающем этапе работы скрипта будет произведён запуск виртуальной машины для
выполнения финального этапа установки.
В скрипте может понадобиться поменять следующие переменные:
"vm-label" - метка для ссылки на VM из Dom0;
"hostname" - имя хоста;
"domain" - локальный домен
В качестве шаблона для установки выбран Ubuntu Lucid Lynx 10.04 (64-bit)
#!/bin/bash
set -e
set -x
template=`xe template-list name-label="Ubuntu Lucid Lynx 10.04 (64-bit)" --minimal`
vm=`xe vm-install template=$template new-name-label=vm-label`
network=`xe network-list bridge=xenbr0 --minimal`
vif=`xe vif-create vm-uuid=$vm network-uuid=$network device=0`
xe vm-param-set uuid=$vm other-config:install- repository=http://archive.ubuntu.com/ubuntu
xe vm-param-set uuid=$vm PV-args="auto-install/enable=true interface=auto netcfg/dhcp_timeout=600 hostname=vm-host-name domain=mydomain.is.best"
xe vm-start uuid=$vm
Для завершения установки следует подключиться к виртуальной машине, например, через "xe console"
Перед этим следует запустить демон xapissl:
service start xapissl
Список активных консолей VM можно посмотреть командой:
xe console-list
Выбрав нужный vm-uuid выполняем:
xe console uuid=593c6788-1ddc-e7d7-c6b1-0de0778c78b7
Если что-то пошло не так удалить установленную виртуальную машину можно командой:
xe vm-uninstall name-label=vm-label --multiple
Установка гостевой системы с Windows
Для установки Windows необходимо наличие установочного iso-образа, который
может быть импортирован с другой машины по NFS:
xe-mount-iso-sr nfs-server:/path/to/isos
Создаём виртуальную машину с Windows:
xe vm-install template=Windows\ 7\ \(32-bit\) new-name-label=windows
xe vm-cd-add vm=windows cd-name=win7.iso device=3
xe vm-start vm=windows
Для обеспечения работы сети выполняем создание сетевого моста:
brctl addbr xenbr0
brctl addif xenbr0 eth0
Поднимаем IP на интерфейсе сетевого бриджа вместо физического интерфейса. После чего запускаем:
xe pif-scan
Устанавливаем в Window паравиртуальные драйверы, которые можно загрузить следующим образом:
wget http://downloads.xen.org/XCP/debian/xs-tools-5.9.960.iso
mv xs-tools-5.9.960.iso /usr/lib/xen-common/xapi/packages/iso
|