Если поддержка есть, то можно использовать полноценную виртуализацию,
если нет, не отчаивайтесь, можно использовать паравиртуализацию.
И так, приступим.
Устанавливаем 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') - пароль
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
Подключаемся к ней терминалкой или радмином.
Чтоб виртуальные машины автоматически загружались, при загрузке
родительской, создаем символические ссылки: