Основы Xen


Xen — это технология по созданию виртуальной среды, доступная для ядра Linux™. При помощи Xen вы можете устанавливать и тестировать обновления приложений так, как будто вы запускаете их в уже существующем окружении. При этом вы не рискуете  нанести вред исходной системе. Из этой статьи вы узнаете, как установить Xen (в Fedora Core Linux). Хотелось бы отметить, что после инсталляции Xen работает одинаково вне зависимости от того какой дистрибутив вы используете. Взгляните на эту виртуальную среду для OC Linux и вы не сможете не заметить весьма очевидных преимуществ использования "песочницы" для тестирования нового программного обеспечения, а также как площадки для запуска множества виртуальных машин на одном Linux-сервере.
Из-за постоянного потока обновлений ОС и приложений,  устранений ошибок в существующем программном обеспечении мир Linux и «open source» находится в непрерывном движении. Попытки оставаться в курсе абсолютно всех обновлений системного и прикладного  программного обеспечения могут отнять все рабочее время. Один из очень тонких моментов во время обновлении программного обеспечения — это то, что вы не знаете, будут ли работать все ваши приложения после обновления. Подавляющее большинство систем управления пакетами предлагают возможность возврата к предыдущей версии программного обеспечения. Однако, этого подчас недостаточно; в идеале, вы хотите попробовать обновления в тестовом режиме и опробовать их в окружении, где они не смогут ничему и никому повредить.
Виртуализация очень часто используется для изоляции приложений и операционных систем от всех других операционных систем и приложений на одном и том же аппаратном обеспечении. Linux поддерживает множество форм виртуализации, начиная от эмуляторов операционных систем,  и до полной виртуализации аппаратного обеспечения. Одно из последних и очень важных достижений в списке технологий виртуализации —  Xen, разработанный в Кембриджском университете. Xen заслуживает внимания благодаря своей безопасности и производительности.
Что такое Xen?
Разработанный в университете  Кембриджа, как исключительно исследовательский проект, Xen быстро нашел отклик в сообществе «open source». Xen — паравиртуализирующий монитор виртуальной машины (paravirtualizing VMM). Операционная система изменяется в определенных областях памяти, для выполнения запросов к гипервизору, тогда как программы, запускаемые под управлением этой ОС остаются неизменны. Другие системы виртуализации, например VMWare, предлагают полную виртуализацию ( им совсем не требуется модификация запускаемой операционной системы и приложений). Однако, при этом им необходимо выполнить преобразование машинного кода (и это в режиме реального времени), что не может не повлиять на производительность (причем не в лучшую сторону).
В связи с тем, что Xen требует изменения операционной системы, вы не можете просто взять ядро ОС Linux и запустить его под управлением гипервизора Xen (до тех пор, пока ядро Linux не портировано для Xen).В случае, когда операционная система может использовать новое ядро Linux, которое портировано для архитектуры Xen, вы можете запустить существующую операционную систему без изменений.

Рисунок 1. Простая иллюстрация архитектуры Xen
Рисунок 1. Простая иллюстрация архитектуры  Xen
Где найти Xen?
Xen (в исходных кодах) доступен для скачивания на странице проекта. Если у вас уже установлен какой либо Linux, то вполне  возможно, вы сможете установить виртуализатор Xen при помощи системы установки пакетов. Вот перечень дистрибутивов, в комплект которых входит Xen:

Если вашего  дистрибутива его нет в этом списке,  то вам, может быть , придется воспользоваться исходным кодом. За исключением небольших, зависящих от конкретного  дистрибутива различий в процедурах инсталляции, Xen работает одинаково вне зависимости от используемого дистрибутива Linux.
Использование Fedora Core Linux
Fedora Core Linux уже привлекла внимание сообщества пользователей среды Xen, хотя пакеты недавно были размещены на каналах разработки. Так как многие пробуют установить Xen на Fedora, вы, скорее всего, преуспеете в поиске интерактивной поддержки на форумах посвященных этому дистрибутиву.

 
 

 

Инсталляция среды Xen.
Установите минимальный набор серверных функций для базовой операционной системы. Базовая система — это будущий гипервизор и он не будет запускать ни одного приложения. Вы сможете установить необходимые вам пакеты программных продуктов на серверах (виртуальных средах) Xen, которые будут запущены поверх этой системы. Нет необходимости сразу инсталлировать приложения, которые вы хотите запустить.
Как только у вас будет запущена операционная система Linux (Fedora Core в нашем случае), вам необходимо ее обновить до самой последней версии, которая  называется rawhide. Сделать это можно задав для всех элементов каталога /etc/yum.repos.d/ enabled=0 (кроме fedora-devel.repo, для которого должно быть enabled=1).
После настройки вашего yum репозитория, необходимо произвести полное обновление операционной системы до rawhide, после чего вы можете запустить самый последний релиз виртуализатора Xen.

Листинг 1. Обновление FC3 для rawhide и инсталляция пакетов Xen

yum update 
yum install xen kernel-xen0 kernel-xenU

Создайте фиктивную (fake) файловую систему, с которой будете работать.
Листинг 2. Форматирование и настройка файловых систем Xen-сервера

mkdir -p /xen/base
dd if=/dev/zero of=/root/base.img bs=1M count=1 seek=1024
mkfs.ext3 /root/base.img
mount -o loop /root/base.img /xen/base

После того как вы отформатировали и монтировали файловые системы сервера Xen следующим шагом идёт инсталляция пакетов, которые необходимы для запуска виртуальных сред.Например, для запуска WWW сервера на Xen серверах необходимо инсталлировать набор пакетов Web-сервера.
Листинг 3. Инсталляция пакетов Xen-сервера

yum —installroot=/xen/base -y groupinstall web-server
—enablerepo=base —disablerepo=development

Вы инсталлировали необходимые пакеты программных продуктов, и теперь нужно добавить файл fstab, который укажет вашим серверам Xen, что в качестве root они будут использовать устройство sda1. Это устройство на самом деле является полностью виртуальным (созданным гипервизором) устройством. Ваши серверы об этом никогда не узнают. J
Листинг 4. Файл fstab сервера Xen

/dev/sda1              /              ext3    defaults       1 1
none                   /dev/pts       devpts  gid=5,mode=620 0 0
none                    /dev/shm        tmpfs   defaults     0 0
none                    /proc           proc    defaults     0 0
none                    /sys            sysfs   defaults     0 0

Сохраните файл как /xen/base/etc/fstab.
Далее, необходимо выполнить действия для корректного запуска операционной системы. На данный момент Xen имеет некоторые расхождения с initrd. Если вы хотите, чтобы система загрузилась, вам необходимо самостоятельно создать несколько устройств. После этого, чтобы все сработало нормально, будет полезно переместить библиотеки TLS (в данный момент они плохо взаимодействуют с Xen). Сделав это, можно отмонтировать файловую систему.
Листинг 5. Последняя доработка перед запуском

for i in console null zero ; do MAKEDEV -d /xen/base/dev -x $i ; done 
mv /lib/tls /lib/tls.disabled
mv /xen/base/lib/tls /xeb/base/lib/tls.disabled 
umount /xen/base/

Запускаем среду Xen
Теперь, когда вы настроили ваши гостевые системы, вы можете перегрузить машину и стартовать, используя ядро Xen. Вы, увидите гораздо больше информации чем обычно выводится на экран. Кроме того вы получите сообщение о библиотеке TLS (которую вы переместили в недоступное место).
Xen-у  требуется конфигурационные файлы для каждого запускаемого сервера. Вы можете создать один динамический конфигурационный файл для всех ваших серверов. Рекомендуем создать два или больше конфигурационных файла (по одному на каждый сервер). Как можно видеть далее, метка диска указывает серверам, что ваш образ — это устройство sda1.
Листинг 6. Конфигурационные файлы сервера Xen

/etc/xen/base
kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU"
memory = 64
name = "BaseServer"
nics = 1
disk = ['file:/root/base.img,sda1,w']
root = "/dev/sda1 ro"

/etc/xen/test
kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU"
memory = 64
name = "TestServer"
nics = 1
disk = ['file:/root/test.img,sda1,w']
root = "/dev/sda1 ro"

Для запуска ваших серверов, с помощью команды xend start запустите службу виртуализатора Xen. С помощью команды xm create base создайте ваш BaseServer (базовый сервер) из конфигурационного файла base. После всех этих действий вы попадете в гостевую консоль Xen, где сможете отследить процесс загрузки гостевой системы. Выйти из гостевой консоли и вернуться обратно в консоль гипервизора можно с помощью  Ctrl-].
Использование Xen
Итак, вы затратили время на изменение конфигураций и настройку системы для запуска пары Xen серверов. И что у вас есть после всей этой работы?
Теперь у вас есть две копии вашей операционной системы с оабсолютно одинаковыми ядрами (на одной физической машине). Если ваш BaseServer (Базовый сервер) представляет устойчивое окружение, в котором вы будете запускать вашу Web службу и другие приложения в штатном режиме, то среда TestSever (Тестовый Сервер) может обеспечивать последние обновления, которые предоставляются Fedora rawhide. Вы можете обновлять вашу систему тестовую систему, пробуя все новые версии программного обеспечения. А когда почувствуете, что всё стабильно, можете запустить TestSever как BaseServer.
Настройка BaseServer
Работа Базового Сервера — это весьма подходящий момент для изменения  конфигурации службы apache. Возможно, Вы захотите отключить службу ssl, удалив файл ssl.conf из папки /etc/httpd/conf.d/ (в противном случае, вам придется генерировать сертификаты безопасности для серверов). Кроме того, вам может потребоваться добавить в систему нового  пользователя — apache.
Гипервизор Xen предоставляет для работы виртуальное сетевое устройство. Если вы хотите запустить dhcp на этом устройстве, просто выполните команду dhclient eth0, и вы получите IP адрес для вашего BaseServer.
Настройка TestServer
После того как вы настроили  Базовый Сервер, выключите его (команда  poweroff из консоли). Если же вы уже вышли из консоли BaseServer, войдите в неё, используя xm console BaseServer.
Скопируйте файл образа, используя команду cp /root/base.img /root/test.img, и вы получите дубликат файловой системы. Команда xm create -c test запустит такой же сервер, как и BaseServer, но под новым названием TestServer. Войдите в Тестовый Сервер и активируйте поддержку rawhide так, как вы делали это ранее (в разделе Installing Xen). После этого  затем запустите команду yum update.
TestServer настроен точно так же как и ваш BaseServer, однако  вы его обновили последними версиями пакетов, предлагаемыми Fedora rawhide. Можете проверить, работает ли еще ваш Web сайт. Или уже нет.

Статья подготовлена с использованием материалов сайта www.ibm.com/developerworks

Оставьте комментарий