Xen: установка, настройка, маленькие хитрости

В начале марта в моем зоопарке завелся первый настоящий сервер на Supermicro X7DB. Вообще мое руководство предпочитает особо не тратиться и собирать сервера из десктопного железа, поэтому первый свой настоящий сервер я покупал себе сам.

Ну и раз это моя машина, я могу делать на ней что угодно — я решил «пощупать» технологии виртуализации, конкретно xen.

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

Xen умеет работать в 2 режимах:

PV (паравиртуализация) — использует специально подготовленное для работы в виртуальной среде ядро ОС, позволяет достичь производительности, сопоставимой с работой на реальном железе. Подходит для большинства линукс-систем, богатые залежи модифицированных ядер есть здесь

HVM (аппаратная виртуализация) — с помощью QEMU эмулирует «железо», виртуальная машина «не знает», что она работает в виртуальной среде. Подходит для Windows — систем или линуксов, в которых по какой-то причине нельзя использовать модифицированное ядро.

Управляющий домен (dom0) — виртуальная машина, всегда стартующая при запуске xen, которая отличается от гостевых доменов (domU) наличием прав на управление гипервизором. В нашем случае Ubuntu, на которую мы устанавливали xen, является dom0, и именно в ней мы разворачиваем все средства управления гипервизором.

Собственно, управлять domU можно несколькими способами:

  • С помощью toolstack-а XL
  • С помощью утилит xen-tools
  • С помощью библиотеки libvirt

Остальные способы (графический virt-manager, web-gui) так или иначе использует для работы libvirt.

Итак, исходная конфигурация платформы, на которой мы будем проводить опыты:

  • MB: Supermicro X7DB
  • CPU: 2x Intel Xeon E5320
  • RAM: 4Gb PC-5300 ECC
  • HDD: 6x SCSI Seagate Cheetah ST3300007LC
  • RAID: Adaptec 2020zcr

Основную систему (dom0) решил устанавливать на RAID5 — «вдруг чего», чтобы при «выпадании» 1 из винтов система продолжала работать. По спецификации RAID5 требует 3 и более дисков, вот 3 ему и отдадим. Остальные разобьем (пока) как отдельные тома и даже создавать точки монтирования при установке dom0 не будем.

Разбивка производится через встроенную в контроллер утилиту (интерфейс интуитивно понятен, увидел — прослезился, уж очень он похож на Ontrack Disk  Manager из моего сопливого детства)

При создании массива предпочтительно выбирать метод создания Build / Verify, будет быстрее (подробнее о методах создания массивов — здесь)

В качестве управляющего домена (dom0) использую Ubuntu server 14.04, описывать процесс ее установки не имеет смысла, инструкций вагон. Начнем с момента, когда у нас стоит «чистая» система, готовая к дальнейшим издевательствам.

Установка гипервизора.

Подробнее »

В последних версиях убунты гипервизор устанавливается 1 коммандой:

apt-get install xen-hypervisor-amd64 xen-tools

Все, установили. Ксен прописался в grub и доступен при загрузке. НО, почему-то по дефолту загружается не он, а обычное ядро убунты.

Исправим эту досадную оплошность:

mv /etc/grub.d/10_linux /etc/grub.d/20_linux && mv /etc/grub.d/20_linux_xen /etc/grub.d/10_linux_xen

 

И обновим груб:

update-grub

Все, теперь xen запускается при загрузке автоматически.

Перезагружаемся, проверяем:

root@xen:/etc/archipel# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   769     8     r-----    8871.3

Значит, все работает.

Замечание:

При установке из пакетов в Ubuntu 14.04 устанавливается Xen 4.4, утилитой управления в котором является xl, в то время как большинство манов (и как оказалось — приложений) написано под 4.1, где утилитой является xm.  В 4.4 xm  вроде как deprecated, однако если необходимо — можно вернуть его в качестве дефолтного тулстака. Для этого правим /etc/default/xen:

TOOLSTACK=xm

и перезагружаемся либо перезапускаем демон xen

/etc/init.d/xen restart

 Установка и настройка libvirt

Подробнее »

Сегодня в завтрашний день не все могут смотреть. Но мы-то можем, поэтому, заглянув немного вперед, мы сразу установим то, что нам пригодится в будущем — библиотеки Libvirt.

Libvirt — библиотека для управления виртуализацией, которая поддерживает большинство современных гипервизоров. Нам она пригодится в будущем для работы «обвеса» и свистоперделок в виде веб-интерфейса управления.

apt-get install python-libvirt libvirt-bin libvirt0 python-imaging python-numpy virtinst

Установка потянет за собой еще ряд зависимостей,  установим, пригодятся в будущем.

Укажем libvirt на то, что по умолчанию он должен работать с xen:

mcedit /etc/libvirt/libvirt.conf

Раскомментируем строку uri_default  и приведем его к следующему виду:

uri_default = "xen:///system"

Многие советуют добавить исключение в apparmor:

ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
/etc/init.d/apparmor restart

Можно перезапускать службу и начинать учится рулить

/etc/init.d/libvirt-bin restart

Проверяем:

virsh list

 ID    Имя                         Статус
----------------------------------------------------

тут dom0 не отображается, так и надо

Предстартовая подготовка

Подробнее »

Сеть

Чтобы иметь возможность пробрасывать сеть в гостевые ОС, необходимо настроить сетевой интерфейс на работу в режиме бриджа:

apt-get install bridge-utils

/etc/network/interfaces приводим к следующему виду:

auto lo eth0 xenbr0
iface lo inet loopback

iface eth0 inet manual

iface xenbr0 inet static
    bridge_ports eth0
    bridge_maxwait 0
    address xxx.xxx.xxx.xxx
    netmask 255.255.255.0
    gateway xxx.xxx.xxx.xxx
    broadcast xxx.xxx.xxx.xxx
    dns-nameserver 8.8.8.8

После этого перезапускаем сервер, дабы убедиться что все работает корректно.

Можно и не перезапускать, а выполнить команду

ifdown eth0 && ifup xenbr0 && ifup eth0

но я рекомендую все же перезапустить машину — лучше определить наличие каких-либо граблей на этом этапе, чем позже.

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

Диски

Xen позволяет использовать в качестве дискового хранилища виртуальных машин как образы, так и lvm-разделы.

Что из них лучше — четкого ответа нет, по-моему, и по сей день. Тут как вам удобно — можно создат папку /vm и складывать туда образы, создавая их коммандой

dd if=/dev/zero of=/vm/domU-disk.img bs=1024k count=<размер_в_MB>
mkfs.ext4 domU-disk.img

А можно как я -делать LVM-разделы.

1 из 3 оставшихся после создания RAID5 винтов я отвел под виртуальные машины, он у меня /dev/sdb. Создаю на нем LVM размером в 10 гиг:

lvs
pvcreate /dev/sdb1
vgcreate vg /dev/sdb1
lvcreate -L10240M -n linux vg

Все, раздел для установки гостевой Linux-системы готов.

Больше информации по разбивке дисков и установке гостевых ОС можно добыть здесь.

На этом установка и предварительная настройка xen завершена, система готова принимать в себя гостевые виртуальные машины.

В следующей статье мы научимся создавать гостевые машины различными консольными утилитами, а в дальнейшем осилим и WEB-интерфейс.

 

Сцылки:

Установка xen в ubuntu.

Установка xen 4.4 в ubuntu для любителей собирать самому

Если не стартует xen после установки

Libvirt. Установка и не только.

 

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

Войти с помощью: