XEN в Debian Lenny (ч.2) – Первоначальная настройка

Итак, 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 = debootstrap

size = 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.255

passwd = 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 = defaults

serial_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 = 1

sdl=0

Здесь все стандартно, за исключением того, что для подключения к рабочему столу нужно воспользоваться VNC. Да, и есть еще одна особенность, может и глюк, без опции “bridge” в секции vif HVM система не стартует. Но об этом чуть позже, а пока просто прописываем.

После чего запускаем виртуальную машину стандартным способом:

# xm create win01.cfg

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

Add Comment

Required fields are marked *. Your email address will not be published.