Xen — это технология создания виртуальной среды доступная для ядра Linux™, при помощи которой вы можете устанавливать и тестировать обновления так, как будто вы запускаете их в существующем окружении, но без риска нанести вред исходной системе. Автор покажет вам, как установить Xen на примере Fedora Core, однако, после инсталляции Xen работает одинаково вне зависимости от используемого дистрибутива. Взгляните на виртуальную среду для Linux и вы не сможете не заметить очевидных преимуществ использования “песочницы” для тестирования нового программного обеспечения, а также игровой площадки для запуска множества виртуальных машин на одной Linux-машине.
Из-за постоянного потока обновлений и устранений ошибок в существующем программном обеспечении мир open source находится в постоянном движении. Попытки оставаться в курсе всех обновлений программного обеспечения могут отнять все рабочее время. Один из тонких моментов при обновлении вашего программного обеспечения — это то, что вы никогда не знаете, будут ли работать ваши приложения после завершения обновления. Большинство систем управления пакетами предлагают возможность возврата к предыдущему состоянию, но этого зачастую недостаточно; в идеале, вы хотите поиграть с новыми обновлениями в тестовом режиме и опробовать их в таком окружении, где они не смогут ничему повредить.
Подобно ребенку на детской площадке, вам хочется иметь собственную песочницу для игр, где вы могли бы навести беспорядок и не беспокоиться об уборке.
Виртуализация часто используется для изоляции приложений и систем от всего остального на одном и том же аппаратном оборудовании (сродни игре в “песочнице”). Linux поддерживает много различных форм виртуализации, начиная от эмуляторов оборудования до полной виртуализации аппаратного обеспечения. Одно из последних достижений в списке технологий виртуализации — это Xen, разработанный в Кембриджском университете (University of Cambridge). Xen заслуживает внимания благодаря своей беспрецедентной производительности и безопасности.
Что такое Xen
Разработанный в Кембриджском университете как исследовательский проект, Xen нашел большой отклик в сообществе open source. Xen — это паравиртуализирующий монитор виртуальной машины (paravirtualizing VMM), то есть операционная система изменяется в определенных областях для выполнения запросов к гипервизору, тогда как приложения, запускаемые под управлением этой операционной системы остаются неизменны. Для сравнения, другие системы виртуализации, подобные VMWare, предлагают полную виртуализацию (что означает, что им не требуется модификация запускаемой операционной системы), но при этом им необходимо выполнять преобразование машинного кода в режиме реального времени, что не может не повлиять на производительность.
Так как Xen требует преобразования операционной системы, то вы не можете просто взять ядро Linux и запустить его под гипервизором Xen, пока ядро не портировано для архитектуры Xen. Однако, если система может использовать новое ядро Linux, которое портировано для архитектуры Xen, то вы можете запустить существующую систему без изменений.
Рисунок 1. Простая иллюстрация архитектуры Xen
Исходный код Xen доступен на странице проекта, а если у вас уже установлен дистрибутив Linux, то возможно, вы сможете установить Xen при помощи установки/обновления пакетов. Вот основные дистрибутивы, в комплект которых входит Xen:
- Fedora Core.
- SUSE Linux.
- Debian.
- Экспериментальные e-build скрипты доступны на Gentoo’s bugzilla.
Проверьте ваш дистрибутив — если его нет в этом списке, вам, возможно, придется воспользоваться исходным кодом. За исключением зависящих от дистрибутива различий в процедурах инсталляции, Xen работает одинаково вне зависимости от используемого дистрибутива.
Использование Fedora Core
У меня есть работающая инсталляция Fedora Core 3, чтобы не раздувать статью, я расскажу, как запустить систему на Fedora Core.
Fedora уже привлекла внимание большого сообщества пользователей Xen, хотя пакеты только недавно были размещены на каналах разработки. Поскольку многие испытывают Xen на Fedora, вы, скорее всего, преуспеете в поиске интерактивной поддержки.
Инсталляция Xen
Для того чтобы помочь вам быстро и успешно начать работать с Xen, основное внимание в этом разделе уделено важным моментам руководства Quick Start Guide. Так как обновления Xen интегрированы в Fedora, то в Quick Start Guide скорее всего, со временем будут внесены изменения и, будем надеяться, эти изменения найдут свое отражение в Википедии.
Начните с установки минимального набора серверных функций для базовой системы. Базовая система — это ваш гипервизор и он не будет запускать ни одного серверного приложения. Вы сможете установить необходимые вам пакеты на серверах Xen, которые запускаются поверх этой системы, то есть, нет необходимости сразу инсталлировать приложения, которые вы хотите запустить.
Как только у вас будет запущена система, вам будет необходимо ее обновить до последней версии Fedora, называемой 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 |
Затем создайте фиктивную файловую систему, с которой будете работать.
Листинг 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 следующий шаг — это инсталляция пакетов, необходимых для запуска чего бы то ни было на них. Для запуска Web-сервера на ваших Xen серверах вам необходимо инсталлировать набор пакетов Web-сервера. (Предупреждение: это может занять некоторое время. Запустите yum и отправляйтесь погулять.)
Листинг 3. Инсталляция пакетов Xen-сервера
yum --installroot=/xen/base -y groupinstall web-server \ --enablerepo=base --disablerepo=development |
(В это время стоит прогуляться.)
Вы инсталлировали все необходимые пакеты, и теперь вам нужно добавить простой файл fstab, который укажет серверам Xen, что в качестве корневого они будут использовать устройство sda1. Это корневое устройство на самом деле является виртуальным (предоставляемым гипервизором) устройством, но вряд ли ваши серверы об этом узнают.
Листинг 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. Без нормальной инсталляции Fedora файл fstab не создастся. Скорее всего, в будущие версии Fedora будет включен инструмент для разрешения этой проблемы.
Наконец, вам необходимо выполнить рутинные действия для корректного запуска системы. На данный момент 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. Вы, вероятно, увидите гораздо больше информации чем обычно выводится на экран, а также получите ужасное сообщение о библиотеке 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 серверов. И что же вы имеете после всей этой тяжелой работы?
Теперь у вас есть две копии системы с одинаковыми ядрами, виртуализированные на одной машине. Если ваш BaseServer представляет из себя устойчивое окружение, в котором вы будете запускать вашу Web службу в штатном режиме, то TestSever может обеспечивать последние обновления, предоставляемые Fedora rawhide. Вы можете по желанию обновлять вашу систему TestSever, пробуя все новые версии обновлений программного обеспечения — и затем, когда вы почувствуете, что все достаточно стабильно, вы можете запустить TestSever как BaseServer.
Работа BaseServer — это подходящий момент изменить конфигурацию службы apache httpd, которую вы будете запускать. Вы, возможно, захотите отключить ssl, удалив файл ssl.conf из папки /etc/httpd/conf.d/; в противном случае, вам придется генерировать сертификаты для серверов. Также вам может потребоваться добавить в систему пользователя apache.
Гипервизор Xen автоматически предоставляет вам для работы виртуальное сетевое устройство. Если вы можете запустить dhcp на этом устройстве, просто запустите dhclient eth0
, после чего вы получите IP адрес для вашего BaseServer.
После того как вы сконфигурировали BaseServer, выключите его, запустив poweroff
из консоли BaseServer. Если вы уже вышли из консоли BaseServer, восстановите доступ к ней, используя xm console BaseServer
.
Теперь скопируйте базовый файл образа, используя cp /root/base.img /root/test.img
, тем самым вы получите дубликат копии файловой системы. Команда xm create -c test
запустит такой же сервер, как и BaseServer, но под названием TestServer. Войдите в TestServer и активируйте поддержку rawhide так, как вы делали в разделе Installing Xen, затем запустите yum update
.
Ваш TestServer сконфигурирован так же как и ваш BaseServer, но вы его обновили последними пакетами, предлагаемыми Fedora rawhide. Самое время развлечься тем, что посмотреть, работает ли еще ваш Web сайт.
Я надеюсь, эти короткие инструкции и простой пример помогут вам запустить Xen и поэкспериментировать с ним. Для того чтобы вы подружились с Xen как можно быстрее, я не стал рассказывать о том, как пользоваться такими вещами, как LVM и снэпшоты, или как реализовать миграцию Xen-сервера по сети от одной машины к другой.
Автор: Брайан Кларк, разработчик пользовательских интерфейсов, Red Hat