30.12.2014 Views

Ссылки - Auriga, Inc.

Ссылки - Auriga, Inc.

Ссылки - Auriga, Inc.

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Опубликовано в журнале «Мир Компьютерной Автоматизации: мир Встраиваемых Компьютерных Технологий», № 1 2009<br />

Сергей Зимин, <strong>Auriga</strong> <strong>Inc</strong>.<br />

Virtual Machine: проблема выбора<br />

Тема виртуализации является актуальной на протяжении, наверное, всего последнего<br />

десятилетия, а в последнее время она стала особенно популярной и охватывает уже не только<br />

сервера и ПК, но и мобильные устройства. На рынке существуют множество различных решений,<br />

покрывающих практически все аспекты виртуализации и возникает лишь проблема выбора<br />

наилучшего из возможных. В тоже время всегда находятся задачи, с несколько нестандартной<br />

постановкой проблемы, не покрытые в полной мере ни одним из существующих решений. В такой<br />

ситуации встает вопрос о выборе наиболее близкого решения с последующей его доработкой.<br />

Разумеется, специфика постановки задачи является ключевой при выборе подходящего базового<br />

решения. Это может быть метод виртуализации, список поддерживаемых Host и Guest OS и<br />

Hardware (включая CPU), различные тонкости с лицензиями и т.п. В ряде простых случаев для<br />

решения поставленной задачи достаточно лишь правильной настройки или небольших изменений<br />

в подходящем open source проекте. В более сложных случаях может потребоваться значительная<br />

переделка или даже реализация системы «с нуля».<br />

В данной статье рассмотрен некий абстрактный проект, целью которого является разработка<br />

виртуальной машины с нечетко сформулированными требованиями. Рассматриваются<br />

возможные вариации этих требований и приводятся рекомендации в отношении путей его<br />

реализации на базе имеющихся оpen source проектов.<br />

Термины<br />

Согласно [7], виртуализация (вообще) скрывает реальные характеристики<br />

вычислительной платформы, заменяя их другой абстрактной или<br />

эмулируемой платформой. A виртуальная машина (Virtual Machine, VM) –<br />

это программная реализация машины, которая исполняет программы<br />

также как и настоящая машина. Т.е. для абстрактной эмулируемой<br />

платформой является сама настоящая машина, на которой и запущена<br />

реализация VM.<br />

Мы будем использовать термин виртуальная машина несколько шире,<br />

допуская эмулируемой платформе отличаться от настоящей машины и<br />

понимая под ней некую платформу, существующую в реальном мире.<br />

Существует несколько разновидностей виртуальных машин. В данной<br />

статье рассматриваются машины, эмулирующие работу реальной<br />

компьютера (платформы) целиком; так называемая системная<br />

виртуальная машина (System Virtual Machine). При этом платформа, на<br />

которой запускается виртуальная машина, называется хозяйской, хост или<br />

Host, а эмулируемая платформа гостевой или Guest.<br />

На виртуальную машину, также как и на реальный компьютер, можно устанавливать операционную<br />

систему (Guest OS), у виртуальной машины обычно есть оперативная память, жёсткий диск, могут<br />

эмулироваться периферийные устройства (Guest Hardware). На одной хозяйской платформе может<br />

быть запущено несколько виртуальных машин.


Целостное состояние виртуальной машины называется слепок или VM Snapshot. Он включает<br />

состояние всех устройств виртуальной машины, а также OS и приложений, запущенных на<br />

виртуальной машине.<br />

Существует двойственность в использовании термина виртуальная машина. Это и программное<br />

обеспечение и эмулируемая им платформа. Чтоб избежать этой двойственности, в статье<br />

используются термин виртуализатор для определения программного обеспечения, эмулирующего<br />

гостевую виртуальную машину, и виртуальная машина в смысле виртуальная гостевая платформа.<br />

Постановка Задачи<br />

Рассмотрим некий проект, задачей которого является разработка (возможно даже просто<br />

минимальная модификация или настройка существующего) виртуализатора. Формальные требования<br />

к этому проекту изложены ниже. Как и в реальном проекте, некоторые из требований жесткие и не<br />

подлежат изменению, другие можно обсудить и возможно смягчить. Какие‐то требования совсем не<br />

указаны.<br />

Итак, виртуализатор должен удовлетворять следующим требованиям:<br />

1. Поддерживать несколько виртуальных машин.<br />

1. При этом виртуальные машины должны быть полностью изолированы друг от друга и<br />

контролируемо изолированы от реальной платформы.<br />

2. Предоставлять доступ виртуальных машин к реальному оборудованию через эмуляцию<br />

реального оборудования.<br />

1. Виртуальное оборудование Guest Hardware должно быть единообразным и не<br />

зависеть он реального оборудования.<br />

3. Интерфейс виртуального оборудования Guest Hardware не должен быть тесно связан с<br />

реальным оборудованием Host Hardware и быть одинаковым на любом Host Hardware,<br />

поддерживаемом Host OS.<br />

1. В некоторых случаях (прежде всего из соображений производительности)<br />

отступления от этого правила возможны. В частности, Guest Hardware может в<br />

реализации использовать акселерацию реального оборудования, однако это никак<br />

интерфейс Guest OS к Guest Hardware.<br />

4. Виртуальная машина должна поддерживать сохранение в и восстановление из слепка, т.е.<br />

должна иметь возможность стартовать VM не из начального состояния с последующей<br />

загрузкой и запуском Guest OS, а с некоторой стабильной точки сохраненной в виде VM<br />

Snapshot‐а, когда необходимые Guest OS и Applications уже загружены.<br />

1. VM Snapshot не должен быть специфичным для данной конкретной инсталляции<br />

виртуальной машины или Host Hardware. Любая виртуальная машина (с той же<br />

конфигурацией Guest Hardware) на любом Host Hardware должна быть в состоянии<br />

загрузиться из слепка VM Snapshot, который мог быть скопирован, передан по сети<br />

или подвергнуться архивации.<br />

5. Метод виртуализации, используемый виртуализатором, не задан<br />

1. В то же время, метод виртуализации является основным критерием<br />

производительности, требование к которой должно соблюдаться.<br />

6. Прочие требования:<br />

1. Host Hardware<br />

1. CPU<br />

1. x86 compatible (Intel или AMD)<br />

2. Поддержка Symmetric Multi Processing (SMP)<br />

2. Прочее оборудование<br />

1. Любое, поддерживаемое Host OS для эмулирования Guest Hardware


2. Host OS<br />

1. Linux<br />

2. Другие<br />

3. Guest Hardware<br />

1. CPU<br />

1. То же, что и для Host Hardware<br />

2. Поддержка Symmetric Multi Processing (SMP)<br />

2. Прочее оборудование<br />

1. Минимум, необходимый для работы популярных OS<br />

4. Guest OS<br />

1. Любая OS или firmware, запускаемая на Guest Hardware<br />

5. Производительность<br />

1. Скорость исполнения OS и приложений на виртуальной машине должна<br />

быть близка к скорости их исполнения на реальной платформе. Т.е. потери<br />

вследствие виртуализации должны быть минимальными (близкими к нулю).<br />

6. Лицензии<br />

1. За основу может быть взят любой open source виртуализатор, выпущенный<br />

под любой свободной лицензией<br />

На первый взгляд может показаться, что требования достаточно стандартны и найдется множество<br />

виртуализаторов, способных покрыть их или уж точно подходящих за основу для будущего решения,<br />

а вариации же требований незначительны и могут быть легко устранены небольшими<br />

модификациями. На самом деле это не так и ниже будет показано, что «тонкости» являются<br />

ключевыми для выбора подходящей основы.<br />

Вариации требований<br />

В требованиях, приведенных выше, курсив использовался для требований, которые могут быть<br />

смягчены и жирный шрифт и () вопросительный знак для требований не полностью определенных, в<br />

некоторых случаях являющихся предположениями. Они то и являются основным местом вариации<br />

требований.<br />

Метод Виртуализации<br />

Выбор метода виртуализации, вероятно, является одним из самых важных решений в разработке<br />

виртуализатор. Безусловно, на его выбор накладывают ограничения Host, а иногда и Guest<br />

платформы.<br />

Существует несколько методов виртуализации, имеющих различные свойства и особенности.<br />

Полная виртуализация обеспечивает полную имитацию гостевой платформы и позволяет любому<br />

программному обеспечению, работающему на реальном аппаратном обеспечении (эквиваленте<br />

гостевой платформы), работать и под управлением виртуальной машины. Ни ОС, ни приложения не<br />

нуждаются в изменениях. Для поддержания полной виртуализации поведение устройств гостевой<br />

платформы эмулируется.<br />

Особое место занимает эмуляция CPU, т.к. это определяет производительность всей виртуальной<br />

машины. Продвинутые виртуализаторы используют метод динамической трансляции. Данный метом<br />

позволяет получить производительность близкую к скорости реальной платформы.<br />

В некоторых случаях (наиболее интересных с практической точки зрения) поддержка виртуализации<br />

обеспечивается аппаратным обеспечением, что упрощает процесс виртуализации и позволяет<br />

достичь производительности, мало отличающейся от скорости работы реальной машины.


Альтернативу полной виртуализации составляет паравиртуализация, которая не имитирует реальное<br />

аппаратное обеспечение полностью, а предоставляет некую среду исполнения, похожую на<br />

эмулируемую машину, но требующую от гостевого кода кооперации для осуществления<br />

определенных действий внутри виртуальной машины. Как следствие, паравиртуализация не<br />

позволяет исполнять гостевой код без изменений. Обычно, эти изменения касаются лишь Guest OS, в<br />

то время как приложения могут быть запущены без изменений.<br />

По сравнению с полной виртуализацией, паравиртуализация обладает лучшей производительностью,<br />

т.к. виртуализатор не эмулирует работу CPU, а за счет кооперации с гостевой ОС, просто позволяет<br />

ему исполнять гостевой код.<br />

При паравиртуализации Guest OS обычно не взаимодействует с аппаратурой напрямую.<br />

Программные запросы на такие операции переправляются в Host OS, которая и осуществляет<br />

взаимодействие с Hardware от лица Guest OS. В некоторых случаях виртуализаторы позволяют Guest<br />

OS взаимодействовать напрямую с Host Hardware.<br />

Следует отметить, что на современных процессорах, обладающих аппаратной поддержкой<br />

виртуализации, разница в производительности при паравиртуализации и полной виртуализации не<br />

значительна. Однако, если аппаратной поддержки нет, то выигрыш весьма ощутим.<br />

Итак, не смотря на то, что паравиртуализационный подход не позволяет удовлетворить некоторые из<br />

формальных требований, он может дать значительный прирост производительности, что может стать<br />

весомым аргументом в пользу пересмотра требований.<br />

Поэтому, первый вопрос, который должен быть уточнен ‐ допустима ли паравиртуализация или<br />

полноценная виртуализация является жестким требованием<br />

Кстати, полная виртуализация может не конкурировать, а дополнять паравиртуализацию. Т.е. в<br />

случае, когда Guest OS не имеет поддержки, требуемой для паравиртуализации, полная<br />

виртуализация может быть использована.<br />

Такой смешанный подход может быть «третьим» решением, беря все лучшее от паравиртуализации,<br />

но не ограничиваясь ей.<br />

Поддерживаемое Host Hardware и Host OS<br />

Требования к поддержке Host платформы являются теми параметрами, которые определяют выбор<br />

решения. Например, может оказаться, что решение, идеально подходящее по функциональности, но<br />

не предназначенное для данного Host CPU будет абсолютно неприемлемо, а его портирование (если<br />

это вообще возможно) по трудоемкости будет сопоставимо с написанием виртуализатора «с нуля».<br />

Применительно к рассматриваемому проекту, необходимо определить ‐ Является ли платформа x86<br />

единственной, на которой должна работать виртуальная машина Требуется ли поддержка 64‐bit<br />

Должна ли осуществляться поддержка Symmetric Multi Processing (SMP)<br />

Как уже отмечалось, некоторые современные процессоры обладают аппаратной поддержкой<br />

виртуализации. Такая поддержка есть в современных x86 процессорах от Intel (технология Intel VT) и<br />

AMD (AMD‐V). Есть подобная поддержка и для архитектуры PowerPC и некоторых других.<br />

В связи с этим важно выяснить, можно ли полагаться на то, что процессоры, которые будут<br />

исполнять код виртуальной машины, будут обладать поддержкой виртуализации на аппаратном<br />

уровне


Список Host OS влияет на выбор виртуализатора не меньше, чем Host Hardware. Виртуализаторы<br />

тесно интегрированы с Host OS. Они могут иметь код, исполняемый на уровне ядра или в<br />

значительной степени полагаться на поведение системы.<br />

В связи с этим вопрос о том, какие Host OS нужно поддержать – является очень важным. Очевидно,<br />

что в отличие от списка Guest OS, этот список должен быть ограниченным.<br />

Наиболее «поддержанной» платформой является Linux, следующая по популярности платформа ‐<br />

Windows. Найти виртуализатор с поддержкой VxWorks или QNX может быть нетривиальной задачей.<br />

Поддерживаемое Guest Hardware и Guest OS<br />

В целом, вопросы относительно поддерживаемой гостевой платформы не столь значительны.<br />

Пожалуй, по настоящему важным являться только один – Может ли процессорная архитектура Guest<br />

ОS отличаться от архитектурой Host OS<br />

В этом случае обычно речь идет о полной виртуализации гостевой платформы и, как правило, без<br />

поддержки со стороны аппаратного обеспечений, т.е., виртуализация, по сути является кроссплатформенной<br />

эмуляцией.<br />

Остальные вопросы, которые следует уточнить:<br />

Какие устройства должны быть поддержаны в рамках Guest Hardware Должна ли быть поддержка<br />

Symmetric Multi Processing (SMP) Может ли количество доступных процессоров быть больше чем<br />

на Host Hardware<br />

Наиболее важными из них являются два последних. В случае, если ответ на них утвердительный, то<br />

решение, которое будет взято за основу должно подходить по этим параметрам, т.к. добавление<br />

эмуляции многопроцессорности затрагивает ядро виртуализатора и может быть ресурсоемким.<br />

Рассматривая влияние списка поддерживаемых Guest OS, следует разделять случаи полной<br />

виртуализации и паравиртуализации. В случае полной виртуализации любая Guest OS будет работать<br />

автоматически, поэтому список Guest OS (который может быть вообще не ограничен) никак не влияет<br />

на выбор виртуализатора.<br />

Говоря о паравиртуализации, список Guest OS является серьезным параметром, определяющим<br />

выбор виртуализатора. Разумно выбирать тот из них, кооперация с которым уже поддержана в<br />

большинстве требуемых Guest OS. В остальных Guest OS она должна быть добавлена в рамках<br />

проекта. Кстати, важно понимать, что для поддержки других OS, почти наверняка потребуются их<br />

исходные тексты всех Guest OS.<br />

Допустимые лицензии<br />

В настоящее время доступно большое количество виртуальных машин с самыми разными<br />

лицензиями, которые могут быть взяты за основу данного проекта ([4]). Некоторые с открытым<br />

кодом, другие коммерческие.<br />

Важно выяснить ‐ можно ли пользоваться кодом, выпущенным под open source лицензиями И<br />

какие из них являются допустимыми (LGPL/GPL v2/v3, BSD и т.п.)<br />

Другой путь – использование за основу коммерческого продукт. Некоторые open source продукты<br />

имеют несколько лицензий, что позволяет договориться об использовании решения в обход жестких<br />

open source лицензий.<br />

Обзор доступных решений


Ниже приводятся обзор доступных open source проектов с комментариями и рекомендациями. Это<br />

сделано в предположении, что и Host платформа – Intel x86/Linux, Guest платформа, не полностью<br />

определена, а open source код, выпущенный под любой лицензией, может быть использован.<br />

Xen<br />

Пожалуй, наиболее подходящим проектом, является Xen ([1]). Он создан специально для требований<br />

подобного проекта, он очень хорошо поддерживается и широко используется (в том числе и<br />

крупными компаниям, такими как Sun Microsystems, RedHat, HP, Fujitsu, Dell, Intel, AMD) и фактически<br />

является основной платформой в индустрии для виртуализации x86 архитектуры.<br />

Методы виртуализации: Паравиртуализация, Полная виртуализация (требует аппаратной поддержки)<br />

Тип: Гипервизор<br />

Host CPU / OS: x86, x86‐64, IA‐64, PowerPC, SMP поддержан / Linux<br />

Guest CPU / OS: Идентичное Host CPU, SMP поддержан /<br />

Лицензия: GPL<br />

Паравиртуализация: NetBSD, Linux, Windows<br />

Полная виртуализация: любая ОС<br />

Одним из ярких использований Xen является Amazon EC2, достаточное количество информации по<br />

которому доступно в сети ([5]).<br />

Изначально Xen был разработан как монитор виртуальных машин или гипервизор ([10]),<br />

поддерживающий исключительно паравиртуализацию. После того как аппаратная поддержка<br />

виртуализации была добавлена в процессоры Intel и AMD, поддержка полной виртуализация была<br />

добавлена в Xen. В настоящее время Xen комбинирует оба метода.<br />

Архитектурно, Xen несколько отличается от обычного виртуализатора. Xen является гипервизором,<br />

который распределяет ресурсы и процессорное время между виртуальными машинами (доменами) и<br />

контролирует их работу. Один из доменов domain 0 является выделенным. Xen взаимодействует с<br />

ним для обеспечения работы остальным доменов<br />

(domU).<br />

На domain 0 запущена модифицированная версия ядра<br />

ОС Linux (Host OS), которая имеет специальные права<br />

доступа к оборудованию и которая может<br />

взаимодействовать с другими доменами. Она является<br />

неотъемлемой частью Xen и нужна для<br />

функционирования системы в целом.<br />

Виртуальные машины, поддерживаемые Xen, бывают двух типов – это гостевые машины с<br />

паравиртуализацией (domU PV) и машины с полной виртуализацией (domU HVM). Операционные<br />

системы, запущенные на domU PV, имеют модификации необходимые для кооперативной работы с<br />

Xen. Системы, работающие в domU HVM, могут быть запущены без модификаций.<br />

Доступ виртуальных машин к ресурсам контролируется гипервизором. Виртуальные машины не<br />

имеют прямого доступа к разделяемым ресурсам (таким как диск или сеть). Доступ осуществляется<br />

только из dom0, по явному запросу domU PV или неявному от dom HVM. В последнем случае dom0<br />

приходится эмулировать поведение Guest Hardware. Виртуальные<br />

машины могут иметь<br />

эксклюзивный прямой доступ к некоторым устройствам.


Xen удовлетворяет практически все требованиям со следующими комментариями:<br />

1. Xen реализует два метода виртуализации (паравиртуализация и полная виртуализация,<br />

требующая аппаратуры). В случае, если требуется эмуляция (например, процессорная<br />

архитектура Guest Hardware – x86 или используется Host процессор без поддержки<br />

виртуализации), Xen не может быть использован.<br />

2. В добавлении требуемой x86 процессорной архитектуре Xen поддерживает архитектуры<br />

x86_64, IA64, PowerPC. Поддержка других платформ очень ресурсоемка и иногда даже не<br />

возможна в требуемом объеме. Рекомендация, не использовать Xen в таком случае.<br />

3. В качестве Host OS, Xen поддерживает Linux, NetBSD и Solaris. Поддержка остальных ОС может<br />

быть добавлена, однако требуемые изменения могут быть значительными.<br />

4. В режиме полной виртуализации, эмулируется фиксированный небольшой набор устройств. В<br />

случае если этого набора не достаточно, эмуляцию устройств необходимо будет добавить.<br />

5. Xen является лучшим решением, существующим в индустрии с точки зрения<br />

производительности при использовании паравиртуализации (потеря производительности<br />

лишь 0.1%‐5%). В случае с полноценной виртуализацией это может быть не так, но даже в<br />

этом случае показатели производительности очень хорошие.<br />

VirtualBox<br />

Другим интересным open source решением является проект VirtualBox, поддерживаемый Sun<br />

Microsystems.<br />

Методы виртуализации: Полная виртуализация<br />

Тип: Виртуальная машина (виртуализатор)<br />

Host CPU / OS: x86, x86‐64, SMP не поддержан / Linux, Mac OS X, OS/2 Warp, Windows и Solaris<br />

Guest CPU / OS: Идентичное Host CPU, SMP не поддержан / любая<br />

Лицензия: GPLv2<br />

VirtualBox предназначен для полной виртуализации x86 архитектуры на ней же. Он также как и Xen<br />

может использовать аппаратную поддержку виртуализации (Intel VT, AMD‐V) ([6]), если она имеется, а<br />

если нет, то выполняет эмуляцию платформы.<br />

Это преодолевает ограничения Xen, платой за что становится некоторая потеря производительности.<br />

Впрочем, она не значительная, так что производительность Guest платформы все еще близка к Host<br />

Hardware.<br />

VirtualBox, вероятно, является лучшим свободном средством эмуляции x86 платформы и вполне<br />

может конкурировать с платными продуктами от VmWare ([9]).<br />

В отличие от Xen, код VirtualBox работает в рамках Host OS. Для его работы запускается несколько<br />

процессов, которые используют процессорное время и ресурсы ОС. Процессы VirtualBox планируются<br />

и управляются также, как и все остальные процессы в система, что добавляет системе удобства и<br />

гибкости.<br />

Host OS практически не претерпевает изменений. Требуется лишь небольшой драйвер, работающий<br />

на уровне ядра (ring‐0), который:<br />

• Выделяет физическую память для VM<br />

• Управляет аппаратной поддержкой (Intel VT, AMD‐V)


• Выполняет переключение в Guest VM режим<br />

• Сохраняет и восстанавливает CPU регистры и таблицы дескрипторов, если прерывание<br />

произойдет в момент выполнения кода в Guest VM.<br />

Требования удовлетворяет требованиям со следующими комментариями:<br />

1. В качестве Host и Guest платформ VirtualBox поддерживает только x86 архитектуру, причем<br />

делает это максимально эффективно даже на оборудовании без аппаратной поддержки. Если<br />

требуется поддержка других Host или Guest платформ, то VirtualBox не стоит использовать.<br />

2. Большим недостатком является отсутствие поддержки SMP. В скором времени это должно<br />

быть исправлено.<br />

3. VirtualBox эмулирует широкий ряд устройств, однако, возможно, что требуемое Guest<br />

Hardware не поддерживается. В этом случае потребуется реализовать его эмуляцию.<br />

Qemu<br />

В случае, когда требуется реализовать полную виртуализацию средствами эмуляции на помощь<br />

приходит проект Qemu ([2]).<br />

Методы виртуализации: Полная виртуализация, эмуляция<br />

Тип: Эмулятор<br />

Host CPU / OS: x86, AMD64, IA‐64, PowerPC, Alpha, SPARC 32 и 64, ARM, S/390, M68k, SMP поддержан / Windows, Linux, Mac OS<br />

X, Solaris, FreeBSD, OpenBSD, BeOS<br />

Guest CPU / OS: x86, AMD64, ARM, SPARC 32 и 64, PowerPC, MIPS, SMP поддержан / любая<br />

Лицензия: GPL/LGPL<br />

Qemu эмулирует широкий круг Guest платформ (осуществляя в том числе кросс‐платформенную<br />

эмуляцию) средствами динамической трансляции. Этот подход позволяет достичь высокой<br />

производительность, а реализация Qemu позволяет облегчить портирование Qemu на другие Host<br />

платформы. Наряду с полной эмуляцией платформ, Qemu может осуществлять виртуализацию<br />

приложений, позволяя запускать на x86 платформе приложения, собранные под Linux для ARM.<br />

В добавок к эмуляции, Qemu поддерживает акселерированный режим, позволяющий смешивать<br />

бинарную трансляцию с непосредственным запуском кода. Этот режим позволяет достичь очень<br />

высокой производительности сравнимой с VirtualBox или Xen.<br />

Qemu эмулирует широкий круг устройств, что позволяет без труда запускать большинство ОС.<br />

Процесс добавления новых устройств прост и при необходимости легко может быть осуществлен.<br />

Интересным является тот факт, что Xen, VirtualBox так или иначе используют различные части Qemu.<br />

Это динамический компилятор Qemu, эмуляции различных устройств и некоторые другие части.<br />

Как и VirtualBox, Qemu запускается в рамках обычного процесса под одной из множества<br />

поддерживаемых Host OS, который планируется и контролируется также как и прочие процессы<br />

системы. Для акселерации, специальный драйвер должен быть загружен в Host OS.<br />

Не смотря на то, что динамическая трансляция значительно более эффективна, чем интерпретация,<br />

производительность все же сильно страдает. В то же время, Qemu вероятно является наиболее<br />

эффективным эмулятором с открытыми исходными кодами.<br />

Покрытие требований:


1. Qemu поддерживает и эмулирует широкий круг процессоров, и если требуемое оборудование<br />

еще не поддержано, то Qemu является хорошей платформой для ее добавления. Важно все<br />

же понимать, что Qemu – это прежде всего эмулятор.<br />

2. За исключением акселерированного режима, производительность Guest платформы<br />

значительно ниже чем у Host платформы по понятным причинам. В акселерированном<br />

режиме скорость практически идентична.<br />

Заключение<br />

Итак, в статье был рассмотрены абстрактный проект виртуализации, обсуждены возможные вариации<br />

его требований и варианты его реализации его на основе доступных open source проектов. В центре<br />

рассмотрения была Linux/x86 платформе, являющаяся, вероятно, наиболее популярной платформой<br />

для виртуализации.<br />

Рекомендации вкратце можно сформулировать так:<br />

1. Проект Xen идеально подходит для создания виртуальных x86 серверов на реальной x86<br />

платформе. При этом либо паравиртуализация используется либо требуется аппаратная<br />

поддержка для полной виртуализации.<br />

2. VirtualBox идеален для полной виртуализации x86 платформы на ней же в качестве<br />

пользовательского приложения. Аппаратная поддержка виртуализации желательна, но не<br />

критична.<br />

3. Qemu следует использовать когда требуется кросс‐платформенная эмуляция.<br />

Подводя итог можно сказать, что в настоящее время имеется достаточное количество open source<br />

проектов, на базе которых можно построить широкий круг виртуализационных решения. Эти проекты<br />

без изменений покрывают наиболее востребованные задачи и могут быть легко модифицированы<br />

для покрытия многих остальных.<br />

Ссылки<br />

1. Xen ‐ http://xen.org/<br />

2. Qemu ‐ http://bellard.org/qemu/<br />

3. Sun VirtualBox ‐ http://www.virtualbox.org/<br />

4. Сравнение виртуальных машин ‐ http://ru.wikipedia.org/wiki/Сравнение_виртуальных_машин<br />

5. Amazon EC2 ‐ http://aws.amazon.com/ec2/<br />

6. x86 virtualization ‐ http://en.wikipedia.org/wiki/X86_virtualization<br />

7. Virtual machine ‐ http://en.wikipedia.org/wiki/Virtual_machine<br />

8. Xen Architecture Overview ‐<br />

http://wiki.xensource.com/xenwiki/XenArchitectureaction=AttachFile&do=get&target=Xen+Archit<br />

ecture_Q1+2008.pdf<br />

9. VmWare ‐ http://en.wikipedia.org/wiki/VMware<br />

10. Гипервизор ‐ http://ru.wikipedia.org/wiki/Гипервизор

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!