Виртуализация с помощью Xen в Linux

Xen - достаточно новый продукт на рынке средств виртуализации, но прирост производительности Linux и Apache значительно превосходит все виденное ранее. Изначально Xen разрабатывался как составная часть платформы Xenoserver, преднозначенной для организации распределенных вычислений. Иан Пратт, основной исследователь проекта Xenoserver в компьютерной лаборатории Кембриджского Университета возглавляет команду разработчиков.

В настоящее время Xen уже является нечто большим, чем часть этого проекта. Теперь многие дистрибутивы Linux и производители оборудования включают поддержку Xen в свои изделия. Как и многие проеты с открытым исходным кодом, у Xen имеется своя компания Xensource, которая занимается поддержкой коммерческих версий и обслуживанием корпоративных клиентов. На сегодняшний день Xen имеет все шансы стать крупным игроком в промышленности.

В компании X-Tend основной проблемой был недостаток машин для проверки новых дистрибутивов и приложений. Из-за финансовых трудностей не было возможности обеспечить клиентов достаточным количеством испытательных стендов. Я склоняюсь к мысли, что половина человечества имеет такие пролемы.

Давным-давно, мы использовали UserModeLinux, но современные пользователи находят этот механизм слишком сложным. Затем мы загружали образы Qemu с центрального сервера. Это работало. Единственной сложностью было то, что в случае отключения питания терялись настройки и все приходилось начинать с начала. Необходимо было что-то до предела автоматизированное, скриптованное и без X.

Сейчас мы расскажем о том, как Xen изменил нашу жизнь.

Что такое Xen?

Xen является монитором виртуальных машин для платформы x86 и поддерживает одновременное выполнение нескольких гостевых операционных систем с высокой производительностью и изоляцией ресурсов. Xen является продуктом с отккрытым исходным кодом и распространяется по GNU General Public License.

Xen стал одной из самых популярных платформ виртуализации за последние шесть месяцев. Хотя это достаточно небольшой срок, в корпоративной среде Xen вполне может составить конкуренцию VMWare.

Установив Xen вы из обычной x86 получите совершенно иную платформу. Это больше не x86. Это машина Xen. Имеющееся разнообразие операционных систем не будет работать с вашей x86, они должны работать именно с Xen, хотя для конечного пользователя и приложений, которые работают на платформе, портированной на Xen, нет почти никакого различия.

После активизации Xen необходимо загрузить его первую виртуальную машину - Domain0. Domain0 имеет больше привилегий чем другие виртуальные машины и обычно используется только для того, чтобы управлять другими (менее привилегированными) виртуальными машинами. Domain0 также управляет аппаратным обеспечением. Портирование платформы на Xen практически не изменяет драйверы устройств, что означает, что большинство драйверов, поддерживаемых в традиционных ядрах Linux также будут работать в Xen.

В пределах Domain0 управлением виртуальных машин занимается демон xend. В свою очередь, он управляется утилитой командной строки xm.

С помощью нее вы можете управлять виртуальными доменами и создавать новые.

Xen и различные дистрибутивы

Мы запускали Xen на различных дистрибутивах, начиная от "антикварной" Suse 8.2 с ядром 2.4, до Debian и Fedora Core 4 со свежим ядром 2.6. В отличие от некоторых других проектов, Xen в настоящее время позволяет работать и с ядрами 2.4 и ядрами версии 2.6. В будущем, очевидно, поддержка ядер 2.4 будет исключена. Хотя люди утверждают, что установка Xen сложна, это все относительно. Начать лучше всего с GetXen.org, там можно взять tarball с необходимыми бинарными файлами и инструментарием, демонстрационный CD и ссылки на исходный код. На момент написания статьи, стабильной версией Xen была 2.0.7, но большинство использует бета-версии 3.0.

Установка очень проста. Сейчас мы развернем ядро Debian на Fedora Core 4. FC4 была установлена в минимальной установке. Xen мы инсталлировали и обновили следующими нехитрыми командами:

$ yum update  
$ yum install xen  
$ yum install kernel-xen0  
$ yum install kernel-xenU

Разве можно сделать более просто? Теперь просмотрите файл конфигурации grub.conf на предмет наличия строк типа:


title Xen 2.0 / XenLinux 2.6.9
kernel /boot/xen.gz dom0_mem=131072
module /boot/vmlinuz-2.6.9-xen0 root=/dev/hda1 ro console=tty0

У вас номер версии может отличаться. Если такие строки вы обнаружили, то самое время перезагрузиться. Вуаля, первая виртуальная машина загружена и прекрасно работает. Хотя вам кажется, что вы работаете на обычной машине x86, управляет всеми делами именно Xen.

Если xend стартовал во время начальной загрузки, то вы можете воспользоваться командой xm list:

HOSTA:/etc/xen/scripts # xm list
Name Id Mem(MB) CPU State Time(s) Console
Domain-0 0 123 0 r---- 41.2

Создание виртуальных доменов

Наш следующий шаг заключается в создании виртуальной машины. Самый простой способ сделать это состоит в том, чтобы или загрузить в сушествующий chroot образ существующего дистрибутива или собрать его самостоятельно. Xen поддерживает виртуальные блочные устройства (file-backed virtual block devices) (dd if=/dev/zero of=vmdisk bs=1k seek 2048k count=1), физические устройства (такие как /dev/hda9), LVM тома (phy:VolumeGroup/root_volume) или NFS root для ваших виртуальных машин. Я предпочитаю использовать логические тома, так как они предоставляют большую гибкость. На существующем у меня диске /dev/sda5 я создал логические тома для последующего их использования под разделы виртуальных машин:

$ pvcreate /dev/sda5  
$ vgcreate vm_volumes /dev/sda5  
$ vgchange -a y vm_volumes  
$ lvcreate -L4096 -nroot.dokeos vm_volumes  
$ lvcreate -L2048 -nvar.dokeos vm_volumes  
$ lvcreate -L256 -nswap.dokeos vm_volumes  
$ lvcreate -L1024 -nwww.dokeos vm_volumes  
Обычно, я в своем dom0 создаю каталог /vhosts, где я монтирую мои разделы. 
Оттуда, я устанавливаю первые пакеты ядра FC4 в chroot на фактическом будущем устройство root.   

$ yum --installroot=/vhosts/root.dokeos/ -y groupinstall Base Сделаем несколько маленьких исправлений:

$ MAKEDEV -d /path/dev -x console  $ MAKEDEV -d /path/dev -x null  $ MAKEDEV -d /path/dev -x zer  

Почти все готово. Теперь необходимо создать файл конфигурации виртуальной машины. Большинство конфигурационных файлов Xen находится в каталоге /etc/xen, причем каждый виртуальный домен нуждается в собственном файле конфигурации. Выглядят они примерно следующим образом:

[[email protected] xen]# cat dokeos.x-tend.be  
kernel = "/boot/vmlinuz-2.6.11-1.1366_FC4xenU"  
memory = 128  
name   = "dokeos.x-tend.be"  
nics   = 1  
extra  = "selinux=0  3"    
vif    = ['ip = "10.0.11.13", bridge=xen-br0']    
disk   = 
['phy:vm_volumes/root.dokeos,sda1,w'           
,'phy:vm_volumes/var.dokeos,sda3,w'           
,'phy:vm_volumes/www.dokeos,sda4,w'           
,'phy:vm_volumes/swap.dokeos,sda2,w'           
]    
root   = "/dev/sda1 ro"  

Дистрибутив Xen содержит файлы примеров, поэтому для вас не должно составить большого труда изменить конфигурацию "под себя". Теперь запустите вашу виртуальную машину командой xm create config_file_name. Если есть желание, добавьте параметр -c, для того, чтобы подключиться к консоли этого гостевого домена. Через несколько секунд вы должны будете получить приглашение системы на вход.

Если вы сделаете символическую ссылку на /etc/xen/auto, то виртуальная машина будет стартовать во время начальной загрузки (при условии, что выполняется скрипт xendomains).

Источник

free-templates.ru