С выходом 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”
Трекбеки/Пинги
- Статьи за неделю, не попавшие в ленту новостей (выпуск 153) - [...] «Установка Xen на CentOS 5.6«; [...]
Напишите пожалуйста подробно установку Xen 4 на Ubuntu server или на Debian!
Привет, Fraer.
Для меня установка Xen или KVM на CentOS или на Ubuntu имеет одинаковую сложность и разница тут не большая, последовательность действий однотипная.
Поэтому если ты заинтересован в том что бы разобраться в вопросе и написать подробную статью про установку Xen на Debian или Ubuntu, готов приложить к этому усилия – пиши я помогу чем смогу.
Alsigned
спасибо!
я виндовый человек (mstsc):-), но в linux вообще ничего понять не могу. xen устанавливаю для энтузиазма
Ok поехали
Как я понял можно пойти 2 путями:
1. Скачать с xen.org архив, т.е. гипервизор, установить его и пересобрать ядро. Хорош тем, что версия последняя устанавливается.
не получилось, якобы установил и то с ошибками, а уж ядро пересобрать – epic fail
2. Скачать ядро из репозитариев
инструкция сдесь
http://wiki.debian.org/Xen
ok! подумал я, поставил на Vmware workstation (железо отобрали, и я подумал в сторону паравиртуализации) Debian
сделал по инструкции, и о чудо
есть домен 0!
а вот дальше ничего не выходит, непонятно есть ли какой-нибудь менеджер, желательно графический, чтобы создавать виртуалки.
Что самое интересно, до отбора железа, делал всё тоже самое на железе (2 раза), т.е. загружал ядро из репозитариев, далее ребут Debian, но он напроч отказывался грузиться.
вот такие новости
Для управления виртуалками через графическую среду есть Virtual Machine Manager (Virt-Manager) – это очень удобная штука, можно не заморачиваясь просматривать экраны виртуальных машин и редактировать некоторые параметы, работает правда только под Linux.
Xen-вское ядро особенно “самосборное” часто не работает на нестандартном железе на котором может без труда работать обычное.
Здравствуйте.
Хочу установить XEN на CentOS, предположительно с HyperVM, нигде не могу найти как разбить правильнее винт.
Покажите df -h если не сложно.
Привет, Андрей.
Я думаю нет какой-то конкретной схемы разбиения жестких дисков, есть небольшой набор рекомендаций. Очень многое здесь зависит от того какое оборудование ты имеешь, два у тебя SATA винта в RAID1 или же это RAID1 под систему и RAID10 под виртуалки.
В своих проектах я использую 20Гб под систему, раздел SWAP равный ОЗУ (можно и поменьше сделать), остальное LVM раздел для виртуалок.
Если установка HyperVM одно из требований к системе, то важно определиться как он работает с системами храниения, какие типы разделов от поддерживает.
В RAID1 пару винтов поставлю.. Больше в корпус не влезут.
Буду эксперементировать..
Спасибо!