Установка Xen в CentOS 6

Итак, попробуем развернуть гипервизор Xen в дистрибутиве CentOS 6. К сожалению, "из коробки" в CentOS 6 и CentOS 7 этот гипервизор отсутствует. Но для CentOS 7 ещё нет нужных сторонних репозитариев. Поэтому выбираем 6-ку.

Всё это дело для наглядности и простоты повтореия разворачиваю в виртуальной машине. Пытался всё проделать на VMware Player, но после установки Xen система больше не загружается. С Oracle VM VirtualBox всё работает хорошо, но есть один существенный минус - в установленной системе недоступна аппаратная виртуализация и, как следствие, в Xen доступна только паравиртуализация (Paravirtualization, PV), то есть можно устанавливать только операционные системы с одифицированным ядром (благо, мне это как раз и нужно было). Windows таким способом не установить. Это возможно только в продуктах VMware, когда профиксят баг с загрузкой.

Приступаем к установке. Запускаем Oracle VM VirtualBox и создаём новую виртуальную машину.
Установка Xen в CentOS 6 - создание виртуальной машины
Я выделяю 1.2 Гб оперативной памяти, так как по умолчанию в CentOS гипервизору выделяется 1 Гб и если вдруг выделенной памяти окажется меньше, то виртуалка будет выдавать ошибку при загрузке и автоматически уходить в ребут.

Установка Xen в CentOS 6 - задание объёма оперативной памяти для новой виртуальной машины
Далее я создаю виртуальный диск объёмом 120 Гб (тоже с запасом).

Установка Xen в CentOS 6 - задание объёма виртуального диска
Всё остальное можно не трогать. Далее, далее, далее и в итоге - создать виртуальную машину.

Далее, переходим в настройки VM:
Установка Xen в CentOS 6 - указываем количество доступных ядер процессора для виртуальной машины
Установка Xen в CentOS 6 - включение аппаратной виртуализации
Сеть на свой вкус настраиваем. Я обычно выбираю тип полключения "сетевой мост".

Установка Xen в CentOS 6 - настройка сети в VirtualBox, указание типа соединения сетевой мост
Монтируем нужный закгрузочный образ.

Установка Xen в CentOS 6 - монтируем образ CentOS 6 в виртуальный привод

И запускаем виртуальную машину.
Установка Xen в CentOS 6 - первый запуск виртуальнйо машины, меню grub
Процесс установки очень прост. Далее, далее, далее без каких-то особых настроек. Разве что, в настройках сети лучше поставить галочку на "Connect automatically" как на скриншоте:
Установка Xen в CentOS 6 - настройка сети, выбор Connect automatically
И устанавливаем CentOS.
Установка Xen в CentOS 6 - установка CentOS
Перегружаем VM после установки.
Установка Xen в CentOS 6 - первая загрузка виртуальной машины CentOS
Установка Xen в CentOS 6 - окно логина

Логинимся и с помощью 'ifconfig' узнаём наш ip-адрес, если он получался по DHCP, а не вводился вручную.
Установка Xen в CentOS 6 - вывод ifconfig
Для удобства лучше подулючиться по ssh по полученному ip. После чего устанавливаем нужный набор программного обеспечения:

<br>yum install -y centos-release-xen<br>yum install -y xen<br>/usr/bin/grub-bootxen.sh<br>

Установка Xen в CentOS 6 - yum xen
Для удобства рекомендую установить mc:

<br>yum install -y mc<br>


Потом правим /boot/grub/grub.conf, а именно в сроке:

<br>kernel /xen.gz dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all<br>


я меняю 1024 на 530:

<br>kernel /xen.gz dom0_mem=530M,max:530M loglvl=all guest_loglvl=all<br>


ибо, считаю, 1024 - это слишком много для гипервизора (Dom0).

Далее, в файле /etc/xen/ находим строку

<br>#(vnc-listen '127.0.0.1')<br>


расскомментируем её и адрес меняем на '0.0.0.0', то есть приводим к виду:

<br>(vnc-listen '0.0.0.0')<br>


Отключаем SElinux:

<br>sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config<br>setenforce 0<br>


Переходим к растройки сети.

Устанавливаем Bridge Utilities:

<br>yum -y install bridge-utils<br>


Копируем конфиг бриджа:

<br>cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0<br>


И правим оба файла. /etc/sysconfig/network-scripts/ifcfg-eth0 должен выглядеть примерно так:

<br>DEVICE="eth0"<br>NM_CONTROLLED="yes"<br>ONBOOT=yes<br>TYPE="Ethernet"<br>NAME="Ethernet Network eth0"<br>BRIDGE="br0"<br>


А /etc/sysconfig/network-scripts/ifcfg-br0 так:

<br>DEVICE="br0"<br>NM_CONTROLLED="yes"<br>ONBOOT="yes"<br>TYPE="Bridge"<br>BOOTPROTO="none"<br>IPADDR="192.168.0.100"<br>PREFIX="24"<br>GATEWAY="192.168.0.1"<br>DNS1="8.8.8.8"<br>DNS2="8.8.4.4"<br>DEFROUTE="yes"<br>NAME="Bridge Network br0"<br>


Достаточно лишь IPADDR и GATEWAY указать свои.

Всё, перегружаемся:

<br>reboot<br>


Проверяем, работает ли гипервизор:

<br>xl info<br>


Должно выглядеть примерно так:

<br>[root@centos65xen ~]# xl info<br>host                   : centos65xen.localdomain<br>release                : 3.10.43-11.el6.centos.alt.x86_64<br>version                : #1 SMP Mon Jun 16 14:22:02 UTC 2014<br>machine                : x86_64<br>nr_cpus                : 2<br>max_cpu_id             : 1<br>nr_nodes               : 1<br>cores_per_socket       : 2<br>threads_per_core       : 1<br>cpu_mhz                : 2984<br>hw_caps                : 178bfbff:28100800:00000000:00000140:00000201:00000000:00000001:00000000<br>virt_caps              :<br>total_memory           : 1199<br>free_memory            : 651<br>sharing_freed_memory   : 0<br>sharing_used_memory    : 0<br>free_cpus              : 0<br>xen_major              : 4<br>xen_minor              : 2<br>xen_extra              : .4-33.el6<br>xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p<br>xen_scheduler          : credit<br>xen_pagesize           : 4096<br>platform_params        : virt_start=0xffff800000000000<br>xen_changeset          : unavailable<br>xen_commandline        : dom0_mem=530M,max:530M loglvl=all guest_loglvl=all<br>cc_compiler            : gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)<br>cc_compile_by          : mockbuild<br>cc_compile_domain      : centos.org<br>cc_compile_date        : Mon Jun 16 17:22:14 UTC 2014<br>xend_config_format     : 4<br>


Также проверяем настройки сети:

<br>ifconfig<br>


У br0 должен быть наш ip, который мы прописывали (в примере это 172.23.12.3), а у eth0 всё должно быть пусто. Пример:

<br>[root@centos65xen ~]# ifconfig<br>br0       Link encap:Ethernet  HWaddr 08:00:27:17:4F:6A <br>          inet addr:172.23.12.3  Bcast:172.23.12.255  Mask:255.255.255.0<br>          inet6 addr: fe80::a00:27ff:fe17:4f6a/64 Scope:Link<br>          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br>          RX packets:219 errors:0 dropped:0 overruns:0 frame:0<br>          TX packets:70 errors:0 dropped:0 overruns:0 carrier:0<br>          collisions:0 txqueuelen:0<br>          RX bytes:19380 (18.9 KiB)  TX bytes:20656 (20.1 KiB)<br><br>eth0      Link encap:Ethernet  HWaddr 08:00:27:17:4F:6A <br>          inet6 addr: fe80::a00:27ff:fe17:4f6a/64 Scope:Link<br>          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br>          RX packets:259 errors:0 dropped:3 overruns:0 frame:0<br>          TX packets:79 errors:0 dropped:0 overruns:0 carrier:0<br>          collisions:0 txqueuelen:1000<br>          RX bytes:27086 (26.4 KiB)  TX bytes:24472 (23.8 KiB)<br>...<br>


Если всё в порядке, то установка и базовая настройка гипервизора xen в CentOS 6 завершена.