XEN в CentOS

tux-3В общих чертах про установку XEN и вирутальных машин под CentOS.
Начнем с того, поддерживает ли процессор виртуализацию:
если у Вас Интел (VT-x), то
# grep -i vmx /proc/cpuinfo
если АМД (SVM), то
# grep -i svm /proc/cpuinfo


ну и наконец, на предмет HVM, уже после того как загрузились с ядром XEN
# grep -i hvm /sys/hypervisor/properties/capabilities

Если поддержка есть, то можно использовать полноценную виртуализацию, если нет, не отчаивайтесь, можно использовать паравиртуализацию.

И так, приступим.

Устанавливаем XEN-новское ядро и сам XEN
# yum install kernel-xen xen

правим /boot/grub/menu.lst на предмет того, чтоб грузилось именно XEN-новское ядро (можно и руками конечно выбрать при загрузке).

ставим всю группу виртуализации (необязательно)
# yum groupinstall «Virtualization»

ставим QEMU
# yum install qemu

перезагружаемся с новым ядром. при выводе uname -r, должны получить примерно такое 2.6.18-164.el5xen.

теперь посмотрим xm list , получим следующее:
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1398     2 r-----   1048.5

Создадим папку для имеджей виртуальных машин
# mkdir /vm
Можно использовать не файлы имиджей , а LVM тома.

Теперь можно переходить к установке виртуальной машины. Сначала будем устанавливать машину с CentOS в режиме паравиртуализации. Установка будет по сети.

# virt-install
и отвечаем на вопросы, примерно так

Would you like a fully virtualized guest (yes or no)? This will allow you to run unmodified operating systems. <— no (отказываемся от полной виртуализации)

What is the name of your virtual machine? <— v1 (имя виртуальной машины) How much RAM should be allocated (in megabytes)? <— 384 (количество памяти)

What would you like to use as the disk (file path)? <— /vm/v1.img (файл имиджа на диске или LVM-том)

How large would you like the disk (/vm/v1.img) to be (in gigabytes)? <— 10 (размер диска в Гб)

Would you like to enable graphics support? (yes or no) <— no (поддержка графического режима) What is the virtual CD image, CD device or install location? <— http://mirror.centos.org/centos/5.3/os/i386 (откуда собственно будем ставить)

Если нет у вас хороший, то ждать придеться не очень долго, в противном случае запаситесь терпением, заминка на stage2 (чуть больше 100 Мб)

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

Выйти из консоли данной машины можно по Ctrl-], а попасть обратно

xm console v1

Следует заметить, что при такой установке, сетевая карта в создаваемой машине садиться бриджем на ваш первый интерфейс, можно поменять настройки в файле /etc/xen/xend-config.sxp
например , мне нужно было, что б виртуальные машины были бриджом не с eth0, а с eth1, правим параметр
(network-script ‘network-bridge netdev=eth1’)

Вообще в этом файле много интересных настроек, так что, внимательно читаем примеры.

После того как машина установилась, перезагружаемся (имею ввиду виртуальную машину), и если вы при установке правильно настроили сеть, можем зайти на нее уже по ssh. В противном случае, заходим в консоль
# xm console v1
заходим рутом, настраиваем сеть.

# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1398     2 r-----   1052.3
v1                                        42      384     2 r-----      2.3

Наша машина запущена и работает. Советую посмотреть вывод команды xm -h, тогда вы будете знать как запустить и остановить виртуальную машину 🙂

В принципе, ничего сложного, все должно получиться без проблем.
Мы установили гостевую машину в режиме паравиртуализации. Теперь приступим к установке машины в режиме полной виртуализации, а это значит, что можно установить даже винду :), но это только в том случае, если ваш процессор поддерживает это (см. начало статьи).

Подготовим iso-образ инсталяционного диска w2k3, положим его в /root/w2k3.iso
Нам понадобиться так же vncviewer (у каждого на свой вкус и цвет). Я настраивал все это на удаленной машине, а на локальной для подключение во vnc использовал Vinagre.
Правим файл /etc/xen/xend-config.sxp на предмет:
(vnc-listen ‘0.0.0.0’) — чтоб слушало на всех интерфейсах, по дефолту 127.0.0.1
(vncpasswd ‘pipec_parol’) — пароль
запускаем установку:
# virt-install —noautoconsole —cdrom /root/w2k3.iso
отвечаем на вопросы:

Would you like a fully virtualized guest (yes or no)? 
This will allow you to run unmodified operating systems. <-- yes 
What is the name of your virtual machine? <-- w2k (имя виртуальной машины)
How much RAM should be allocated (in megabytes)? <-- 768 (количество памяти)
What would you like to use as the disk (file path)? <-- /vm/w2k.img
How large would you like the disk (/vm/v1.img) to be (in gigabytes)? <-- 10
Would you like to enable graphics support? (yes or no) <-- yes (графический режим)

Начнеться установка. Теперь надо подключиться к этому процесу по vnc. порты назначаються на первый свободный начиная с 5900, можно посмотреть, какой порт слушает родительсткая машина по netstat.

Подключаемся, видем процесс установки, отвечаем на вопросы, разбиваем диск и т.д. Начнеться копирование файлов, после которого будет перезагрузка и ….. не стоит отчаиваться все ни так уже и плохо, во первых просто поменялся порт vnc на +1 (опять таки посмотреть можно по netstat), во вторых винда сказала, что мля нет диска в cdrom и она не может продолжить установку. Не беда. Останавливаем машину
# xm shutdown w2k
правим файл /etc/xen/w2k

было: disk = [ «file:/vm/w2k.img,hda,w», «,hdc:cdrom,r» ]
стало: disk = [ «file:/vm/w2k.img,hda,w», «file:/root/w2k3.iso,hdc:cdrom,r» ]

и запускам машину опять
# xm create w2k
подключаемся по vnc и продолжаем установку.
После удачной установки, настраиваем сеть, ставим на винду радмин или разрешаем терминальный доступ, кому как удобно. Выключаем машину. Возвращаем на место:

было: disk = [ «file:/vm/w2k.img,hda,w», «file:/root/w2k3.iso,hdc:cdrom,r» ] — вы теперь занете как подключить к винде iso-образ
стало: disk = [ «file:/vm/w2k.img,hda,w», «,hdc:cdrom,r» ]

комментируем
# vnc = 1
# vncunused = 1
нам не понадобиться больше vnc
Запускаем машину
# xm create w2k
Подключаемся к ней терминалкой или радмином.
Чтоб виртуальные машины автоматически загружались, при загрузке родительской, создаем символические ссылки:

# ln -s /etc/xen/w2k /etc/xen/auto/
# ln -s /etc/xen/v1 /etc/xen/auto/

Вот и все. Удачи в настройках.
© shadow_alone