XEN в CentOS
В общих чертах про установку 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