Время Xen: Виртуализируйте Linux, чтобы тестировать приложения (исходники)Источник: IBM developerWorks Россия Брайан Кларк,
Из-за постоянного потока обновлений и устранений ошибок в существующем программном обеспечении мир open source находится в постоянном движении. Попытки оставаться в курсе всех обновлений программного обеспечения могут отнять все рабочее время. Один из тонких моментов при обновлении вашего программного обеспечения -- это то, что вы никогда не знаете, будут ли работать ваши приложения после завершения обновления. Большинство систем управления пакетами предлагают возможность возврата к предыдущему состоянию, но этого зачастую недостаточно; в идеале, вы хотите поиграть с новыми обновлениями в тестовом режиме и опробовать их в таком окружении, где они не смогут ничему повредить. Подобно ребенку на детской площадке, вам хочется иметь собственную песочницу для игр, где вы могли бы навести беспорядок и не беспокоиться об уборке. Виртуализация часто используется для изоляции приложений и систем от всего остального на одном и том же аппаратном оборудовании (сродни игре в "песочнице"). Linux поддерживает много различных форм виртуализации, начиная от эмуляторов оборудования до полной виртуализации аппаратного обеспечения. Одно из последних достижений в списке технологий виртуализации -- это Xen, разработанный в Кембриджском университете (University of Cambridge). Xen заслуживает внимания благодаря своей беспрецедентной производительности и безопасности. Разработанный в Кембриджском университете как исследовательский проект, Xen нашел большой отклик в сообществе open source. Xen -- это паравиртуализирующий монитор виртуальной машины (paravirtualizing VMM), то есть операционная система изменяется в определенных областях для выполнения запросов к гипервизору, тогда как приложения, запускаемые под управлением этой операционной системы остаются неизменны. Для сравнения, другие системы виртуализации, подобные VMWare, предлагают полную виртуализацию (что означает, что им не требуется модификация запускаемой операционной системы), но при этом им необходимо выполнять преобразование машинного кода в режиме реального времени, что не может не повлиять на производительность. Так как Xen требует преобразования операционной системы, то вы не можете просто взять ядро Linux и запустить его под гипервизором Xen, пока ядро не портировано для архитектуры Xen. Однако, если система может использовать новое ядро Linux, которое портировано для архитектуры Xen, то вы можете запустить существующую систему без изменений. Рисунок 1. Простая иллюстрация архитектуры Xen Исходный код Xen доступен на странице проекта (ищите ссылку в разделе Ресурсы), а если у вас уже установлен дистрибутив Linux, то возможно, вы сможете установить Xen при помощи установки/обновления пакетов. Вот основные дистрибутивы, в комплект которых входит Xen:
Проверьте ваш дистрибутив -- если его нет в этом списке, вам, возможно, придется воспользоваться исходным кодом. За исключением зависящих от дистрибутива различий в процедурах инсталляции, Xen работает одинаково вне зависимости от используемого дистрибутива. У меня есть работающая инсталляция Fedora Core 3, чтобы не раздувать статью, я расскажу, как запустить систему на Fedora Core. Fedora уже привлекла внимание большого сообщества пользователей Xen, хотя пакеты только недавно были размещены на каналах разработки. Поскольку многие испытывают Xen на Fedora, вы, скорее всего, преуспеете в поиске интерактивной поддержки. Для того чтобы помочь вам быстро и успешно начать работать с Xen, основное внимание в этом разделе уделено важным моментам руководства Quick Start Guide из раздела Ресурсы. Так как обновления Xen интегрированы в Fedora, то в Quick Start Guide скорее всего, со временем будут внесены изменения и, будем надеяться, эти изменения найдут свое отражение в Википедии. Начните с установки минимального набора серверных функций для базовой системы. Базовая система -- это ваш гипервизор и он не будет запускать ни одного серверного приложения. Вы сможете установить необходимые вам пакеты на серверах Xen, которые запускаются поверх этой системы, то есть, нет необходимости сразу инсталлировать приложения, которые вы хотите запустить. Как только у вас будет запущена система, вам будет необходимо ее обновить до последней версии Fedora, называемой rawhide . Вы можете это сделать, задав для всех элементов каталога /etc/yum.repos.d/ Теперь, после настройки вашего репозитория yum вам необходимо произвести обновление системы до rawhide, после чего вы можете запустить последний релиз Xen. Листинг 1. Обновление FC3 для rawhide и инсталляция пакетов Xen
Затем создайте фиктивную файловую систему, с которой будете работать. Листинг 2. Форматирование и настройка файловых систем Xen-сервера
После форматирования и монтирования файловых систем сервера Xen следующий шаг -- это инсталляция пакетов, необходимых для запуска чего бы то ни было на них. Для запуска Web-сервера на ваших Xen серверах вам необходимо инсталлировать набор пакетов Web-сервера. (Предупреждение: это может занять некоторое время . Запустите yum и отправляйтесь погулять.) Листинг 3. Инсталляция пакетов Xen-сервера
(В это время стоит прогуляться.) Вы инсталлировали все необходимые пакеты, и теперь вам нужно добавить простой файл fstab, который укажет серверам Xen, что в качестве корневого они будут использовать устройство sda1. Это корневое устройство на самом деле является виртуальным (предоставляемым гипервизором) устройством, но вряд ли ваши серверы об этом узнают. Листинг 4. Файл fstab сервера Xen
Сохраните этот файл как /xen/base/etc/fstab. Без нормальной инсталляции Fedora файл fstab не создастся. Скорее всего, в будущие версии Fedora будет включен инструмент для разрешения этой проблемы. Наконец, вам необходимо выполнить рутинные действия для корректного запуска системы. На данный момент Xen имеет некоторые разногласия с Листинг 5. Последняя доработка перед запуском
Теперь, когда вы с трудом вручную настроили ваши гостевые системы, вы можете перегрузить машину и стартовать, используя ядро Xen. Вы, вероятно, увидите гораздо больше информации чем обычно выводится на экран, а также получите ужасное сообщение о библиотеке TLS (которую вы, согласно предыдущему разделу, переместили в недоступное место). Xen требует конфигурационных файлов для каждого запускаемого сервера. Хотя вы можете создать один динамический конфигурационный файл для всех ваших серверов, я рекомендую создать два статических конфигурационных файла, по одному на каждый сервер. Как вы можете видеть, метка диска указывает серверам, что ваш образ -- это устройство sda1. Листинг 6. Конфигурационные файлы сервера Xen
Для запуска серверов с помощью команды Вы потратили некоторое время на изменение конфигураций и настройку вашей системы для запуска пары Xen серверов. И что же вы имеете после всей этой тяжелой работы? Теперь у вас есть две копии системы с одинаковыми ядрами, виртуализированные на одной машине. Если ваш BaseServer представляет из себя устойчивое окружение, в котором вы будете запускать вашу Web службу в штатном режиме, то TestSever может обеспечивать последние обновления, предоставляемые Fedora rawhide. Вы можете по желанию обновлять вашу систему TestSever, пробуя все новые версии обновлений программного обеспечения -- и затем, когда вы почувствуете, что все достаточно стабильно, вы можете запустить TestSever как BaseServer. Работа BaseServer -- это подходящий момент изменить конфигурацию службы apache httpd, которую вы будете запускать. Вы, возможно, захотите отключить ssl, удалив файл ssl.conf из папки /etc/httpd/conf.d/; в противном случае, вам придется генерировать сертификаты для серверов. Также вам может потребоваться добавить в систему пользователя apache. Гипервизор Xen автоматически предоставляет вам для работы виртуальное сетевое устройство. Если вы можете запустить dhcp на этом устройстве, просто запустите После того как вы сконфигурировали BaseServer, выключите его, запустив Теперь скопируйте базовый файл образа, используя Ваш TestServer сконфигурирован так же как и ваш BaseServer, но вы его обновили последними пакетами, предлагаемыми Fedora rawhide. Самое время развлечься тем, что посмотреть, работает ли еще ваш Web сайт. |