XEN

Это старая версия документа.


XEN — это монитор виртуальных машин или гипервизор с поддержкой паравиртуализации (para-virtualization) для процессоров x86 архитектуры, распространяющийся с открытым исходным кодом. Xen может организовать совместное безопасное исполнение нескольких виртуальных машин на одной физической системе с производительностью близкой к непосредственной (native).

Ubuntu ориентирована на использование KVM вместо Xen. KVM считается более перспективным, но ещё немного сырым продуктом. Его активно развивает Red Hat, которая тоже перешла на него с Xen в RHEL6. Единственное преимущество Xen над KVM состоит в поддержке паравиртуализации (т. е. виртуализации с внесением изменений в гостевую систему). Стоит заметить, что преимущество это довольно весомое, и часто позволяет получить производительность намного большую, чем полная (аппаратная) виртуализация. Кроме того, паравиртуализация возможна на любом процессоре.

Ссылки

Xen on Ubuntu (11.10) step by step

Первоначальная установка

# Проще настройку производить под админом
sudo -i

# Сразу стоит настроить сеть
nano /etc/network/interfaces
/etc/init.d/networking restart

# И удалить манагер
# Иначе он помешает корректной работе сети
apt-get purge network-manager

# Ставим пакеты
apt-get install \
xen-hypervisor-4.1-amd64 \
xen-hypervisor-4.1-i386 \
xen-utils-4.1 \
xenwatch \
xen-tools \
xen-utils-common \
xenstore-utils 

# Правим конфиг
nano /etc/xen/xend-config.sxp
#открываем /etc/xen/xend-config.sxp и раскомментим
#(network-script network-bridge)

# Так-же необходимо внести измения в груб

# Увеличиваем кол-во loop
# правим /etc/default/grub
# GRUB_CMDLINE_LINUX="max_loop=64"

# Переименовываем 10_linix_xen в 09_linix_xen
mv /etc/grub.d/10_linix_xen /etc/grub.d/09_linix_xen

# И обновляем grub
update-grub
 
# Перезагружаем систему
reboot
 
# Проверяем
sudo xm info
# Должна выдать информацию о нашем xen

# Проверяем наши бриджи
sudo brctl show

Настрока xen-tools

Создаем Image-Based Virtual Machines

Правим /etc/xen-tools/xen-tools.conf

# Все параметры могут быть изменены флагами командной строки
# Расположение файлов xen
dir = /mnt/xen 
 
# Метод установки
install-method = debootstrap
 
# Размер диска поумолчанию
size = 2Gb
 
# Размер памяти поумолчанию
memory = 256Mb
 
# Размер Swap
swap = 256Mb
 
# Тип файловой системы
fs = ext3
 
# Дистрибутив поумолчанию
dist = lenny
# dist = `xt-guess-suite-and-mirror --suite`
 
# Тип имиджа (может быть full с файловой таблицей)
image = sparse
 
# Настройки сети
gateway = 192.168.1.1
netmask = 255.255.255.0
broadcast = 192.168.1.255
 
# Ядро
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
 
# Адрес Репы
mirror = http://mirror.yandex.ru/ubuntu/
 
# Параметры к дисковым системам
ext3_options = noatime,nodiratime,errors=remount-ro
ext2_options = noatime,nodiratime,errors=remount-ro
xfs_options = defaults
reiserfs_options = defaults
btrfs_options = defaults
 
serial_device = hvc0 #default
 
# Наименование диска
disk_device = xvda
 
# Генерировать случайный пароль root или нет
genpass=0

Правим кривоЖопый /usr/bin/xen-create-image

В процедуре exportEnvironment комментим строчку:

# $CONFIG{ 'mirror' } = $CONFIG{ $distMirror };

Это делается для того, чтоб bootstrap не игнорировал –mirror. Иначе он начинает пробовать ставить из репов, из которых ставился dom0.

Скрипты инициализации для xen-tools

Хранятся в /usr/lib/xen-tools. Особенно интересныйм будет /usr/lib/xen-tools/lenny.d/20-setup-apt.

В /usr/lib/xen-tools/lenny.d/20-setup-apt можно добавить что-нить типа:

deb ${mirror} ${dist}-backports main multiverse restricted universe
deb ${mirror} ${dist}-proposed main multiverse restricted universe
deb ${mirror} ${dist}-security main multiverse restricted universe
deb ${mirror} ${dist}-updates main multiverse restricted universe
deb ${mirror} ${dist} main multiverse restricted universe

В /usr/lib/xen-tools/squeeze.d/20-setup-apt можно добавить что-нить типа:

deb ${mirror} ${dist}-proposed-updates contrib main non-free
deb ${mirror} ${dist}-updates contrib main non-free
deb ${mirror} ${dist} contrib main non-free

Создаем структуру каталогов

mkdir -p /mnt/xen/cfg /mnt/xen/domains /mnt/xen/skel

Создаем нашу первую виртуалочку

xen-create-image --pygrub \
--password="123456" \
--hostname=testServer \
--size=4G \
--swap=256Mb \
--ip=192.168.1.155 \
--memory=512Mb \
--arch=amd64 \
--role=udev \
--dist=lenny \
--mirror="http://mirror.yandex.ru/ubuntu"

mv /etc/xen/testServer.cfg /mnt/xen/cfg/
xm create /mnt/xen/cfg/testServer.cfg
xm console testServer

Как мы видим: в коммандной строчке копируются параметры из /etc/xen-tools/xen-tools.conf. Сделала это специально, чтоб указать что задавать оные можно и там и здесь. Приоритет имеют параметры из строки.

Управление

Управление виртуалками осуществляем через xm.

# Например
xm list
xm destroy vitDom11
xm create /mnt/xen/cfg/virtDom111.cfg
xm console virtDom111