Виртуализация на Linux с Xen, система, ядро, помощни програми, статии, библиотека на Linux Center, -
[Kris Buytaert. Превод: Сгибнев Михаил (www.dreamcatcher.ru)]
Виртуализация с Xen на Linux
от Kris Buytaert 26.01.2006
Превод: Сгибнев Михаил
Xen е сравнително нов продукт на пазара за виртуализация, но подобренията в производителността за Linux и Apache далеч надхвърлят всичко, наблюдавано преди. Xen първоначално е проектиран като неразделна част от платформата Xenoserver за разпределени изчисления. Ян Прат, главен изследовател по проекта Xenoserver в компютърната лаборатория на университета в Кеймбридж, ръководи екипа за разработка.
Xen вече е повече от част от този проект. Много дистрибуции на Linux и производители на хардуер вече включват поддръжка на Xen в своите продукти. Подобно на много проекти с отворен код, Xen има собствена компания Xensource, която предоставя търговска подкрепа и корпоративно обслужване на клиенти. Днес Xen има всички шансове да се превърне в основен играч в бранша.
В X-Tend основният проблем беше липсата на машини за тестване на нови дистрибуции и приложения. Поради финансови ограничения не беше възможно да се предостави на клиентите достатъчен брой тестови стендове. Склонен съм да мисля, че половината човечество има такива проблеми.
Преди много време използвахме UserModeLinux, но съвременните потребители го намират за твърде сложен. След това изтеглихме изображенията Qemu от централен сървър. Проработи. Единствената трудност беше, че в случай на прекъсване на електрозахранването настройките бяха загубени и всичко трябваше да започне отначало. Необходимо беше нещо до краен предел, автоматизирано, написано по сценарий и без X.
Ето как Xen промени живота ни.
Какво е Xen?
Xen е монитор за виртуална машина за платформата x86 и поддържа едновременно изпълнение на множество гостуващи операционни системи с висока производителност и изолиране на ресурси. Xen е с отворен код и лицензиран под общия публичен лиценз на GNU.
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.
Ако xend стартира по време на зареждане, можете да използвате командата xm списък:
Създаване на виртуални домейни
Следващата ни стъпка е да създадем виртуална машина. Най-лесният начин да направите това е или да заредите изображение на съществуваща дистрибуция в съществуващ chroot, или да го изградите сами. Xen поддържа защитени с файлове устройства за виртуални блокове (dd, ако =/dev/нула от = vmdisk bs = 1k търси 2048k брой = 1), физически устройства (като/dev/hda9), LVM томове (phy: VolumeGroup/root_volume) или NFS корен за вашите виртуални машини. Предпочитам да използвам логически томове, тъй като те осигуряват голяма гъвкавост. На съществуващия ми диск / dev/sda5 Създадох логически томове за последващото им използване под дяловете на виртуални машини: Обикновено създавам директория в моя dom0 / vhosts, където монтирам дяловете си. Оттам изписвам първите пакети на ядрото FC4 към действителното бъдещо коренно устройство. Нека направим няколко малки поправки: Почти сме готови. Сега трябва да създадете файл за конфигурация на виртуална машина. Повечето от конфигурационните файлове на Xen се намират в директорията / и т.н./xen, и всеки виртуален домейн се нуждае от собствен конфигурационен файл. Те изглеждат по следния начин: Xen дистрибуцията съдържа примерни файлове, така че не би трябвало да ви е твърде трудно да промените конфигурацията за себе си. Сега стартирайте вашата виртуална машина с командата xm създайте config_file_name. Ако желаете, добавете параметъра -° С, за да се свържете с конзолата на този домейн за гости. След няколко секунди трябва да получите подкана за вход.
Ако направите символна връзка към / etc/xen/auto, тогава виртуалната машина ще се стартира по време на зареждане (ако приемем, че скриптът xendomains работи)
Самосглобяване на виртуален домейн
Преди това направихме домейн за гости на Fedora на основния домейн на Fedora, а сега ще получим Debian на Fedora. За това имаме нужда debootstrap, които могат да бъдат намерени в RPM, но ако искате да инсталирате правилно, ще ви е необходим актуализиран конфигурационен скрипт за Sarge. Сега нека конфигурираме обема на LVM, монтираме и използваме debootstrap да инсталирате Debian: Конфигурационният файл за Debian изглежда така:
Работа в мрежа във виртуален домейн
Много е вероятно да се изкушите да свържете виртуални машини към мрежата. Първо, нека разгледаме помощната програма brctl, която ви позволява да създадете мрежов мост между главния и гост домейните. Xen предоставя един или повече виртуални мрежови интерфейси за домейни за гости, но това изисква няколко промени в мрежовата конфигурация на Domain0.
За всеки интерфейс, дефиниран във виртуалната машина, Xen ще създаде интерфейс vifx.y, където x е идентификаторът на домейна, а y е номерът на интерфейса във вашата виртуална машина. Например, vif1.1 се отнася до eth1 в домейн ID 1.