С выходом 6-ого релиза RedHat отказался от развития одновременно двух технологий визуализации Xen и KVM, таким образом CentOS/RHEL 6 поставляются теперь без поддержки Xen. Одна из особенностей притягивающая людей к Xen – умение работать на оборудовании без наличия аппаратной визуализации vmx (Intel) или svm (AMD), такой режим работы называется пара-виртуализация. В этом режиме возможен запуск различных операционных систем Linux, FreeBSD, OpenBSD – практически всех, кроме Microsoft Windows. Главным минусом пара-виртуализации является необходимость внесения изменений в ядро системы или использования специального ядра с поддержкой Xen.

В статье используется операционная система CentOS 5.6 i386.

1. Установка

Устанавливаем необходимые пакеты:

[root@localhost ~]# yum install kernel-xen xen

Открываем для редактирования /boot/grub/grub.conf, параметр default задает номер ядра в списке с которым система загружается по умолчанию, при этом первая запись обозначается как 0. По логике скрипта установки пакета xen-kernel, новое ядро встает на первое место, но загрузка все-равно идет со строго. Поэтому значение параметра default меняем на 0.

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-238.19.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-238.19.1.el5
        module /vmlinuz-2.6.18-238.19.1.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-238.19.1.el5xen.img
title CentOS (2.6.18-238.19.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-238.19.1.el5 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-238.19.1.el5.img

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

Перезапускаем систему:

[root@localhost ~]# shutdown -r now

После перезапуска проверяем с каким ядром мы загрузились, если видим приписку xen на конце значит все правильно:

[root@localhost ~]# uname -r
2.6.18-238.19.1.el5xen

Просматриваем список запущенных доменов (виртуальных машин).

[root@localhost ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1770     2 r-----     22.2

Как мы видим в списке уже есть 1 запись Domain-0, она создается автоматичиски и соответствует серверу с которым мы сейчас работаем.

2. Установка и клонирование виртуальных машин

Проверяем есть ли на нашем процессоре поддержка аппаратной виртуализации.

[root@localhost ~]# cat /proc/cpuinfo | egrep '(vmx|svm)'
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida tpr_shadow vnmi flexpriority ept vpid

Если мы видим вывод подобный приведенному выше – все отлично наш процессор поддерживает аппаратную виртуализацию. Если нет, то мы не можем установить Microsoft Windows,  использовать  виртуальный CD-ROM с образом ОС, и иметь еще рад приятных фьючерсов.

Для установки виртуальных машин я использую диски на LVM, но сама по себе работы с томами LVM несколько выходит за рамки этой статьи, поэтому для примера будем использовать, диски в файле-контейнере.

Установка пара-вирутальных гостевых систем.

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

Итак приступим:

[root@localhost ~]# virt-install -n vm01 -r 512 -p -l http://mirror.yandex.ru/centos/5.6/os/i386 -f /vmstore/vm01.img -s 10 --vnc --vncport=5901
 
Starting install...
Retrieving file .treeinfo...                                  |  412 B     00:00
Retrieving file vmlinuz...                                    | 2.2 MB     00:03
Retrieving file initrd.img...                                 | 7.4 MB     00:13
Creating storage file...                                      |  10 GB     00:00
Creating domain...                                            |    0 B     00:01

Немножко о параметрах запуска:

-n - имя виртуальной машины
-r - объем оперативной памяти
-p - указывает на то что ОС должна быть запущена в пара-виртуальном режиме.
-l - указываем путь к дистрибутиву для сетевой установки. В жизненных условиях я стараюсь пользоваться либо локальной копией установочного репозитория, либо чаще использовать клонирование виртуальных машин.
-f - расположение диска виртуальной машины - в нашем случае файла.
-s - размер создаваемого диска виртуальной машины в гигабайтах
--vnc - включаем возможность подключения к экрану виртуальной машины через VNC
--vncport - соответственно порт по которому можно подключиться.

Цель скрипта virt-install – создать конфигурацию виртуальной машины и запустить установку, дальше мы можем подключиться либо через vnc, что более подробно описано в 3-ей части, либо при помощи текстовой консоли:

[root@localhost ~]# xm console vm01

Как показывает практика для установки и последующего обслуживания совсем не обязательно иметь подключенный vnc дисплей.

Установка Windows

Для это нам понадобится аппаратная поддержка виртуализации.

[root@localhost ~]# virt-install -n vm02 -r 512 -v -c /vmstore/WinXPSP3.iso  -f /vmstore/vm02.img -s 10 --vnc --vncport=5902
 
Starting install...
Creating storage file...                                       |  10 GB     00:00
Creating domain...                                             |    0 B     00:00

Не так уж много всего изменилось по сравнению с установкой пара-виртуальных машин с ОС Linux.

-v клиенту необходима полная виртуализация
-c использовать в качестве установочного носителя CD или DVD образ

И я думаю вполне логичным будет отметить что установка MS Windows никак не может пройти без использования VNC подключения.

Клонирование

При помощи клонирования можно быстро размножить виртуальные машины. Я долгое время делал это копируя DiskDump-ом диск и исправляя настроечные файлы в директории /etc/xen. Но для выполнения этой процедуры есть готовый скрипт virt-clone. Предположим что нам нужно сделать копию виртуальной машины vm01:

[root@localhost ~]# virt-clone -o vm01 -n vm03 -f /vmstore/vm03.img
Cloning /vmstore/vm01.img    14% [======-           ] 136 MB/s | 1.5 GB 01:04 ETA

Параметры:

-о исходная виртуальная машина
-n имя новой машины
-f расположение диска для новой машины.

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

3. Подключение через VNC

По умолчанию xen открывает vnc порт на localhost, однако в жизни это может быть несколько неудобно, если мы конечно не находимся непосредственно пред экраном подключенным к серверу виртуализации, а сидим скажем так в соседней от него комнате или вообще находимся в другом городе.

[root@localhost ~]# netstat -ltn | grep 590
tcp        0      0 127.0.0.1:5901           0.0.0.0:*                LISTEN

Способ №1 – Прямое подключение

Открываем для редактирования файл /etc/xen/xend-config.sxp, раскоментируем параметр vnc-listen и меняем занчение 127.0.0.1 (слушать localhost) на 0.0.0.0:

(vnc-listen '0.0.0.0')

Также можно задать пароль на подключение который по умолчанию пустой:

(vncpasswd '')

Перезапускаем сервис xendomains, что бы применить новые настройки. Во время перезапуска будут остановлены с сохранением состояния все виртуальные машины, а потом восстановлены обратно.

[root@localhost ~]# service xendomains restart
Shutting down Xen domains: vm01(save).........
Restoring Xen domains: vm01.

Проверяем

[root@localhost ~]# netstat -ltn | grep 590
tcp        0      0 0.0.0.0:5901             0.0.0.0:*                LISTEN

Если нам позволят настройки файрвола – то мы вполне сможем подключится к экрану виртуальной машины по ip-адресу сервера виртуализации.

Способ №2 – Подключение через SSH-туннель

Другой способ подключения, пробросить удаленный порт через ssh. Предположим у нас есть ноутбук с установленным Ubuntu Linux, следующей командой мы открываем ssh-туннель к удаленному порту VNC:

alsigned@LinuxBook08:~$ ssh -N -f -L 5901:localhost:5901 root@xensrv.mydomain.local
root@xensrv.mydomain.local's password:

Запускаем стандартный VNC-клиент:

alsigned@LinuxBook08:~$ vinagre localhost:5901

4. Заключение

Для операций создания, клонирования, а также просмотра удаленных VNC-дисплеев виртуальных машин очень удобно использовать разработанный для графической среды Virtual Machine Manager (virt-manager), который без проблем может работать с удаленного хоста через ssh-туннель. Но я считаю, что прежде чем начинать пользоваться красивыми GUI-оболочками, не плохо разобраться как можно все это сделать через командную строку, по крайней мере находишь много ответов на интересующие вопросы.

Не смотря на отказ RedHat от использования Xen в 6-ой версии, технология все-равно никуда не уходит, ее поддержка в ветке RHEL 5 стабильно продлится еще до 2014 года. Если обратиться к XenSource то можно найти два развивающихся репозитория содержащие пакеты xen-4.0/4.1 для RHEL 6:

1. Репозиторий Майкла Юнга для EL6 http://xenbits.xen.org/people/mayoung/EL6.xen/

2. Репозиторий Gitco.de: http://www.gitco.de/linux/x86_64/centos/6/kernel-dom0/

Возможно в ближайшее время один из этих репозиториев вполне можно будет использовать.

7 Коммент. : “Установка Xen на CentOS 5.6”

  1. Fraer пишет:

    Напишите пожалуйста подробно установку Xen 4 на Ubuntu server или на Debian!

  2. Alsigned пишет:

    Привет, Fraer.

    Для меня установка Xen или KVM на CentOS или на Ubuntu имеет одинаковую сложность и разница тут не большая, последовательность действий однотипная.

    Поэтому если ты заинтересован в том что бы разобраться в вопросе и написать подробную статью про установку Xen на Debian или Ubuntu, готов приложить к этому усилия – пиши я помогу чем смогу.

  3. Fraer пишет:

    Alsigned
    спасибо!
    я виндовый человек (mstsc):-), но в linux вообще ничего понять не могу. xen устанавливаю для энтузиазма
    Ok поехали
    Как я понял можно пойти 2 путями:
    1. Скачать с xen.org архив, т.е. гипервизор, установить его и пересобрать ядро. Хорош тем, что версия последняя устанавливается.
    не получилось, якобы установил и то с ошибками, а уж ядро пересобрать – epic fail
    2. Скачать ядро из репозитариев
    инструкция сдесь
    http://wiki.debian.org/Xen

    ok! подумал я, поставил на Vmware workstation (железо отобрали, и я подумал в сторону паравиртуализации) Debian
    сделал по инструкции, и о чудо
    есть домен 0!
    а вот дальше ничего не выходит, непонятно есть ли какой-нибудь менеджер, желательно графический, чтобы создавать виртуалки.

    Что самое интересно, до отбора железа, делал всё тоже самое на железе (2 раза), т.е. загружал ядро из репозитариев, далее ребут Debian, но он напроч отказывался грузиться.
    вот такие новости

  4. Alsigned пишет:

    Для управления виртуалками через графическую среду есть Virtual Machine Manager (Virt-Manager) – это очень удобная штука, можно не заморачиваясь просматривать экраны виртуальных машин и редактировать некоторые параметы, работает правда только под Linux.

    Xen-вское ядро особенно “самосборное” часто не работает на нестандартном железе на котором может без труда работать обычное.

  5. Здравствуйте.
    Хочу установить XEN на CentOS, предположительно с HyperVM, нигде не могу найти как разбить правильнее винт.
    Покажите df -h если не сложно.

  6. Alsigned пишет:

    Привет, Андрей.

    Я думаю нет какой-то конкретной схемы разбиения жестких дисков, есть небольшой набор рекомендаций. Очень многое здесь зависит от того какое оборудование ты имеешь, два у тебя SATA винта в RAID1 или же это RAID1 под систему и RAID10 под виртуалки.

    В своих проектах я использую 20Гб под систему, раздел SWAP равный ОЗУ (можно и поменьше сделать), остальное LVM раздел для виртуалок.

    Если установка HyperVM одно из требований к системе, то важно определиться как он работает с системами храниения, какие типы разделов от поддерживает.

  7. В RAID1 пару винтов поставлю.. Больше в корпус не влезут.
    Буду эксперементировать..
    Спасибо!

Трекбеки/Пинги

  1. Статьи за неделю, не попавшие в ленту новостей (выпуск 153) - [...] «Установка Xen на CentOS 5.6«; [...]

Оставить комментарий