Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Искусство виртуализации

Евгений Зобнин aka j1m

Хакер, номер #089, стр. 089-094-1


(j1m@list.ru)

Используем эмуляторы в быту

Представь себе такую ситуацию: ты сидишь во FreeBSD и грепаешь логи своего личного домашнего ftp-сервера в надежде, что злобные хакеры не пролезли на машину через не залатанную дыру в ProFTPd. Закончив с этой процедурой и не заметив ничего подозрительного, ты, используя простую комбинацию клавиш, переключаешься в Slackware Linux, включаешь музыку и приступаешь к разбору пришедшей за ночь почты. За этим занятием ты вспоминаешь, что хотел обновить свой второй дистрибутив Linux, переключаешься в Gentoo, набираешь "emerge --sync" и возвращаешься обратно в Slackware. Сказка? Отнюдь, используя монитор виртуальных машин Xen, ты сможешь варьировать операционными системами не хуже, чем цирковой артист жонглирует теннисными мячами.

[xen: общие сведения]

Xen был разработан исследовательской группой Кембриджского Университета в рамках проекта Xenoserver, предназначенного для организации распределенных вычислений. Первая публичная версия (1.0) была выпущена в октябре 2003 года, текущая разрабатываемая версия - 3.0. Коммерческой поддержкой Xen занимается компания XenSource (www.xensource.com), а в число участников проекта входят такие гиганты, как Intel, AMD, IBM, HP, Novell и RedHat.

Мы рассмотрим особенности установки и использования Xen, но сперва, по традиции, немного теории.

[властелин колец]

В мире высоких технологий не редко можно наблюдать ситуацию, когда от возникновения идеи до начала ее массового применения проходит внушительный отрезок времени. Не стала исключением и идея монитора виртуальных машин, предложенная и реализованная более 30 лет назад компанией IBM в виде программного пакета VM/370. Создатели Xen повторили "подвиг" программистов из IBM. Вместо того чтобы реализовывать виртуальную машину поверх существующей ОС (яркие примеры: VMWare, qemu; подробнее о qemu читай ниже), они положили код виртуализации в основу самой ОС. Xen работает на "голом" железе, а все операционные системы запускаются поверх виртуальной машины, созданной им. Такая архитектура позволила достичь поистине уникальных характеристик быстродействия (по некоторым оценкам Linux, работающий поверх Xen, по скорости отстает от нэйтивного Linux всего на 3 процента!). Но как же удалось реализовать такое?

Думаю, ты в курсе, что процессоры архитектуры x86 (IA-32), работая в защищенном режиме, используют четыре уровня защиты памяти (так называемые кольца: rings 0-3). Современные операционные системы используют только два из них: ring 0 - самый привилегированный уровень, в нем запускается ОС, и ring 3 - наименее привилегированный, используемый для запуска программ уровня пользователя. Таким образом, код программ с уровня 3 не имеет прав доступа к адресному пространству уровня 0 и не может помешать работе ОС. Разработчики Xen пошли дальше, решив использовать уровни 1 и 2 для своих нужд.

Непосредственно Xen, называемый гипервизором (hypervisor), запускается на уровне 0, операционные системы теперь работают на уровне 1, а пользовательские программы, как и положено, на уровне 3. Кроме того, для работы Xen нужен так называемый супервизор (supervisor), операционная система, драйвера которой будут использовать гостевые ОС для доступа к железу. В этой же ОС будут работать пользовательские утилиты, предназначенные для управления гостевыми ОС. Для запуска каждой гостевой ОС Xen создает новую виртуальную машину, играющую роль изолированного (и фиктивного) окружения ОС в виде виртуального ПК. По принципу работы Xen можно сравнить с многозадачной ОС. Только в отличие от ОС, которая создает для каждого процесса изолированное адресное пространство и окружение, Xen делает то же самое не для процессов, а для других операционных систем. Одним словом, с помощью Xen можно легко превратить один физический ПК во множество виртуальных.

Содержание  Вперед на стр. 089-094-2