СÑÑлки - Auriga, Inc.
СÑÑлки - Auriga, Inc.
СÑÑлки - Auriga, Inc.
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/Гипервизор