Итак, Xen установлен. Теперь нужно настроить. Вообще говоря в общем случае достаточно настроить лишь сеть.
Есть 3 варианта подключения сети:
- bridge (машина имеет свой собственный внешний IP);
- nat (машина не имеет внешнего адреса и может подключаться к внешней сети через NAT файерволла);
- route (машина не имеет внешнего адреса, но можно сделать редирект с внешней сети на определенные порты (сервисы) гостевой ОС ).
Так как у меня случай, когда внешний IP адрес один, то режим настройки, который будем рассматривать – route.
Исправим файл конфигурации “/etc/xen/xend-config.sxp“: закомментируем строки “(network-script network-dummy)” и “(vif-script vif-bridge)“, а затем добавим (чуть ниже закомментированной “(vif-script…)”:
[...] (network-script 'network-route netdev=eth0') (vif-script vif-route) [...]
ПАРАВИРТУАЛИЗАЦИЯ.
Ранее мы установили пакет xen-tools, он очень помогает, если нужно быстро разворачивать дистрибутивы Linux на виртуальных машинах xen.
Рассмотрим простой случай, когда на виртуальной машине будет развернут Debian в режиме паравиртуализации.
Мой файл “/etc/xen-tools/xen-tools.conf” выглядит так:
kernel = /boot/vmlinuz-`uname -r`
dir = /home/xen
install-method = debootstrapsize = 5Gb # Disk image size.
memory = 256Mb # Memory size
swap = 256Mb # Swap size
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = lenny # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.gateway = 192.168.255.1
netmask = 255.255.255.0
broadcast = 192.168.255.255passwd = 1
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`arch=i386
mirror = http://ftp.ru.debian.org/debian/
ext3_options = noatime,nodiratime,errors=remount-ro
ext2_options = noatime,nodiratime,errors=remount-ro
xfs_options = defaults
reiser_options = defaultsserial_device = hvc0 #default
disk_device = xvda #default
Теперь поправим наш sysctl.conf:
net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.proxy_arp=1
Ну и перезагрузим сервер со сделанными настройками:
# shutdown -r now
Собственно создаем нашу виртуальную машину:
# xen-create-image --hostname=test --ip=192.168.255.2 --role=udev
По окончании процесса в папке /etc/xen появиться файл test.cfg с настройками созданной виртуальной машины.
Запускаем:
# xm create test.cfg Using config file "./test.cfg". Started domain test
Ну вот. Наш виртуальный сервер стартанул. Теперь можно войти в гостевую ОСь:
# xm console test
Все нормально логиниться, осталось последнее – настроить наттинг, чтобы пустить гостевую ось в сеть. В качестве временного решения создадим правило для iptables. Но для начала разлогинимся из гостя и выйдем из консоли нажав CTRL+].
# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.255.0/24 -j MASQUERADE
Ну вот и все. Теперь паравиртуальная машина может работать с интернетом.
ПОЛНАЯ ВИРТУАЛИЗАЦИЯ (HVM)
Теперь рассмотрим другой вариант работы XEN для операционных систем с немодифицированным ядром, например Windows XP.
В первую очередь, для установки Windows XP, как и любой другой не портированной на Xen системы, необходима поддержка центральным процессором технологии виртуализации Intel®Virtualization Technology (VT) или Pacifica (AMD). Поддержка аппаратной виртуализации должна быть и у Xen.
Убедиться в наличии поддержки VMX можно так:
для процессоров Intel:
# xm dmesg | grep VMX (XEN) VMX: Supported advanced features: (XEN) HVM: VMX enabled
для процессоров AMD:
# xm dmesg | grep -i svm (XEN) AMD SVM Extension is enabled for cpu 0. (XEN) AMD SVM Extension is enabled for cpu 1.
В общем случае:
# xm info | grep caps hw_caps : bfebfbff:20000000:00000000:00000940:0400e3bd:00000000:00000001:00000000 virt_caps : hvm xen_caps : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
hvm-3.0-x86_32 говорит о том, что XEN успешно обнаружил процессор, который поддерживает технологии Intel VT или AMD-V.
Если у вас другое сообщение, но вы уверены, что у процессора есть архитектурные расширения виртуализации, то проверьте настройки BIOS и, если вы этого ещё не сделали, задействуйте поддержку VT.
Что ж, после того, как мы выяснили и настроили железо на аппаратную виртуализацию, нам необходимо установить саму операционную систему (в нашем случае Windows XP). Но для начала нам нужно скачать или создать образ диска с ней.
Создать образ можно так:
# cat /dev/cdrom > /home/ISO/winxp.iso
После того, как образ готов, выделяем место, где будет размещаться ОС. Я выделил под это дело LVM раздел:
1) Создаем физический том:
# pvcreate /dev/sda5 /dev/sdb5
2) Теперь создаем группу томов:
# vgcreate XEN /dev/sda5 /dev/sdb5
3) Создаем логический том размером в 20Гб:
# lvcreate -L20G -n vol0 XEN
Таким образом, мы подготовили “посадочное место” для гостевой HVM системы. Далее нам необходимо создать конфигурационный файл этой системы для XEN. У меня он называется /etc/xen/win01.cfg и выглядит примерно так:
kernel = ‘/usr/lib/xen/boot/hvmloader’
builder = ‘hvm’
device_model = ‘/usr/lib/xen/bin/qemu-dm’memory = ‘1024’
vcpus = ‘2’disk = [ ‘phy:/dev/XEN/vol0,ioemu:hda,w’, ‘file:/home/ISO/winxp.iso,hdb:cdrom,r’ ]
name = ‘win01’
vif = [‘type=ioemu, vifname=vif1.0, ip=192.168.255.3, bridge=eth0’]
boot = ‘d’vnc = 1
vncviewer = 1sdl=0
Здесь все стандартно, за исключением того, что для подключения к рабочему столу нужно воспользоваться VNC. Да, и есть еще одна особенность, может и глюк, без опции “bridge” в секции vif HVM система не стартует. Но об этом чуть позже, а пока просто прописываем.
После чего запускаем виртуальную машину стандартным способом:
# xm create win01.cfg
Сеть для раздачи интернета настраивается посложнее и об этом поговорим в следующей статье, в которой также рассмотрим как сделать постоянный доступ виртуальной машины во внешнюю сеть и как к ней пробросить порты.