logo search
5

5.6.2.1. Виртуализация платформ

В зависимости от степени виртуализации аппаратных ресурсов, виртуализацию платформ делят на следующие виды:

− виртуализация серверов;

− виртуализация на уровне ОС;

− виртуализация приложений;

− виртуализация представлений.

Виртуализация серверов сводится к:

− полной эмуляции (симуляции);

− частичной эмуляции (нативной или встроенной виртуализации);

− частичной виртуализации;

− паравиртуализация.

 Полная эмуляция (симуляция). Этот вид виртуализации построен на основе полной эмуляции всего аппаратного обеспечения определенной платформы. Такой подход позволяет эмулировать различные аппаратные архитектуры. Например, на платформе x86 это позволяет запустить операционную систему, разработанную для процессоров IBM PowerPC.

Главным и основным минусом такого подхода является очень низкое быстродействие гостевой системы (в 100—1000 раз меньше, чем физического компьютера), так как происходит полная эмуляция всех инструкций виртуального процессора, а инструкции физического процессора совсем не используются.

Полная эмуляция используется исключительно при разработке системного программного обеспечения и в образовательных целях. Например, при разработке программного обеспечения под процессоры, которые еще не реализованы физически; для низкоуровневой отладки операционных систем, так как симуляция позволяют отслеживать все инструкции виртуального процессора, что нельзя сделать в системах, которые частично или полностью используют реальный процессор.

Программные платформы симуляции: VMware Workstation, VMware Server, VMware ESX Server, Virtual Iron, Microsoft Hyper-V Server, Microsoft Virtual PC, Sun VirtualBox, Parallels Desktop и другие.

Частичная эмуляция (нативная виртуализация) базируется на принципе эмуляции только необходимого количества ресурсов, чтобы виртуальная машина могла быть запущена изолировано. Например, при полной эмуляции различных архитектур, гостевая система работает с определенной специфической системой команд процессора, отличной от системы команд процессора хостовой системы. Каждую команду процессору гостевой системы нужно транслировать в соответствующую команду хостовой системы, что невероятно уменьшает быстродействие. При использовании нативной виртуализации никакой трансляции команд не происходит, так как гостевая операционная система разработана под ту же архитектуру, на которой работает хостовая система. Это позволяет значительно повысить быстродействие гостевой системы и максимально приблизить его к быстродействию реальной системы.

Для повышения быстродействия нативной виртуализации применяется специализированная программная прослойка – гипервизор. Гипервизор является посредником между гостевой операционной системой и физическим аппаратным обеспечением. Он позволяет гостевой системе напрямую обращаться к аппаратным ресурсам, что и является секретом высокого быстродействия данного вида виртуализации.

Частичная эмуляция является самым распространенным видом виртуализации в наше время. Основным ее недостатком является зависимость виртуальных машин от конкретной аппаратной архитектуры.

Платформы нативной виртуализации: VMware Workstation, VMware Server, VMware ESX Server, Virtual Iron, Virtual PC, VirtualBox, Parallels Desktop и другие.

Частичная виртуализация и виртуализация адресного пространства

Подход частичной виртуализации заключается в симулировании нескольких экземпляров аппаратного обеспечения (особенно часто используется виртуализация адресного пространства). Это позволяет совместно использовать ресурсы и изолировать процессы, но не позволяет создавать экземпляры гостевых систем. Т.е. при частичной виртуализации виртуальные машины не создаются, а происходит изоляция некоторых ресурсов и процессов на уровне хостовой операционной системы. Каждая гостевая система является приложением, запущенным как процесс внутри изолированного адресного пространства.

Недостатком частичной виртуализации является невозможность разделить гостевую и хостовую системы, так как они выполняются внутри ядра хостовой системы.

Платформы частичной виртуализации: UML (User-mode Linux), при котором гостевое ядро запускается внутри основного ядра и выполняется в его контексте.

Паравиртуализация. Этот метод не вынуждает эмулировать аппаратное обеспечение, однако требует от гостевой системы наличия специального программного интерфейса для взаимодействия с хостовой системой. Такой подход требует значительной модификации ядра гостевой, так как все взаимодействие ее с аппаратным обеспечением сводится к совершению специальных вызовов (гипервызововов) к хостовой системе. При этом хостовая система должна иметь гипервизор, который принимает и обрабатывает гипервызовы из гостевой системы. Быстродействие гостевых систем с паравиртуализацией считается максимальным. В отличие от нативной виртуализации, в случае паравиртуализации нет нужды эмулировать BIOS, процессор, жесткие диски и другие устройства. Это и дает выигрыш в производительности паравиртуализированых систем на уровне 5-15% по сравнению с нативными. За такой прирост производительности нужно расплачиваться понижением гибкости (не всегда найдется нужная модифицированная операционная система) и безопасности (в следствии близости гостевых систем к аппаратному уровню могут возникать различные коллизии) таких решений.

С ростом популярности виртуализации, появлением в современных процессорах встроенной поддержки технологий виртуализации Intel VT-x) и AMD-V, решений для паравиртуализации в чистом виде практически не осталось.

Платформы паравиртуализации: VMware ESX Server, Xen, Microsoft Hyper-V. Эти продукты поддерживают паравиртуализацию, частичную виртуализацию и их смесь.

− Виртуализация на уровне ядра операционной системы (ОС). Данный метод позволяет в рамках одной ОС выделить ресурсы для выполнения независимых гостевых ОС. Каждая гостевая система имеет изолированную от хостовой системы среду выполнения, что обеспечивает достаточную безопасность. Данный метод позволяет разбить физические ресурсы компьютера на независимые разделы (контейнеры или песочницами), средствами операционной системы. Такая виртуализация используется при организации систем для хостинга, когда в рамках одной операционной системы необходимо предоставлять клиентам несколько виртуальных серверов.

Платформы виртуализации: Linux-VServer, OpenVZ, Virtuozzo, FreeBSD Jails, Solaris Containers.

− Виртуализация приложений значительно отличается от всех остальных видов. Целевое приложение (а не вся операционная система) помещается в специальный контейнер, которой эмулирует работу операционной системы с данным приложением. Контейнер содержит все необходимые приложению ресурсы: системные файлы, файлы реестра и конфигурационные файлы. При этом в контейнер помещаются исключительно файлы, необходимые для нормальной работы целевого приложения, что делает размеры контейнера минимальными. Использование изолированного контейнера позволяет решать конфликты несовместимости программ между собой или между операционными системами. Например, благодаря виртуализации приложений становится возможным установить и запустить несколько экземпляров одной программы разных версий. Microsoft Office 2003 и Microsoft Office 2007 могут одновременно работать без каких-либо конфликтов, Adobe Photoshop CS2 может работать рядом с Adobe Photoshop CS4. Данный метод также позволяет запускать программные продукты, предназначенные для более поздних версий операционной системы в более ранних версиях с сохранением полной совместимости. Например, программу для Windows Vista становится возможным запустить в Windows 2000.

Платформы виртуализации приложений: Microsoft SoftGrid, VMware ThinApp, Altiris Software Virtualization Solution.