Виртуализация

Виртуализация — понятие, описывающее процесс скопления и объединения вычислительных ресурсов, обеспечивающий преимущества в сравнении с оригинальной конфигурацией. Виртуализированные ресурсы, как правило, состоят из вычислительных мощностей и главного хранилища данных.

Симметричные мультипроцессорные архитектуры с наличием более чем одного процессора можно назвать типичным примером "виртуализации". В таких случаях, операционные системы, как правило, устроены так, что несколько процессоров объединены в один единственный модуль. Данная конфигурация позволяет приложениям работать значительно быстрее и проще, поскольку отсутствует необходимость учитывать несколько процессорных конфигураций. Большинство программных приложений пишутся для одного виртуального вычислительного модуля, коим может быть и модуль, включающий в себя несколько отдельных процессоров.

Термин "виртуализация" - достаточно общий и абстрактный, вот почему его сложно обозначить конкретно. Он охватывает собой множество аспектов вычислений.

Существует несколько типов виртуализации:

  • Программная виртуализация;
  • Аппаратная виртуализация.

Программная виртуализация также включает в себя несколько подтипов:

  • Динамическая (бинарная) трансляция - процесс, при котором проблемные команды гостевой OC заменяются на безопасные.
  • Паравиртуализация — процесс, при котором гостевые ОС модифицируют свое ядро с целью функционирования в виртуализированной среде. ОС взаимодействует с гипервизором, который обеспечивает гостевой API. Таким образом, исключается использование таблицы страниц памяти. Паравиртуализация гарантирует более высокую производительность в сравнении с динамической трансляцией, однако она уместна лишь тогда, когда гостевые ОС имеют открытые исходные коды, либо же гипервизор и гостевая ОС - от одного производителя. Термин сформировался в рамках проекта Denali.
  • Встроенная виртуализация — новый метод, базирующийся на применении аппаратно-поддерживаемых возможностей виртуализации, что позволяет пользователям использовать любые версии ОС в сочетании с различными вариантами рабочих сред. По сути, встроенная виртуализация представляет собой полную виртуализацию, реализованную на аппаратном уровне. Данный подход был реализован в рамках проекта BlueStacks Multi-OS (MOS).

Достоинства программной виртуализации:

  • Доступность ресурсов (каталоги, принтеры и т.д. ) для обеих ОС;
  • Удобный интерфейс окон приложений;
  • При тонкой настройке аппаратной платформы производительность мало отличается от оригинальной ОС. Переключение между системами происходит менее чем за 1 сек.;
  • Простая процедура обновления гостевой ОС;
  • Двухсторонняя виртуализация (приложения одной системы запускаются в другой, и наоборот).

Аппаратная виртуализация

Аппаратная виртуализация — это процесс виртуализации, подкрепленный аппаратной поддержкой. Он не имеет принципиальных отличий от программной виртуализации. Аппаратная виртуализация обеспечивает производительность уровня невиртуализованной машины, благодаря чему она получила широкое практическое применение.

Достоинства:

  • Простота разработки программных платформ виртуализации, доступность аппаратных интерфейсов управления, поддержка виртуальных гостевых систем;
  • Увеличение быстродействия платформ виртуализации за счет использования гипервизора;
  • Защищенность, возможность переключения между несколькими запущенными независимыми платформами виртуализации. Каждая виртуальная машина работает независимо в своем пространстве аппаратных ресурсов. Полная изоляция, позволяющая устранить потери быстродействия на поддержание хостовой платформы;
  • Гостевая система не привязана к архитектуре хостовой платформы. Возможен запуск 64-битных гостевых ОС на 32-битных хостовых системах.

Технологии:

  • Режим виртуального 8086
  • Intel VT (VT-x)
  • AMD-V

Платформы, работающие на аппаратной виртуализации:

  • IBM LPAR
  • VMware
  • Hyper-V
  • Xen
  • KVM

Где применяется виртуализация?

В виртуализации выделено четыре области применения:

  • ОС;
  • Виртуальные машины;
  • Ресурсы;
  • Приложения.

Виртуализация уровня ОС

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

  • Solaris Containers/Zones
  • FreeBSD Jail
  • Linux-VServer (англ.)
  • FreeVPS (англ.)
  • OpenVZ
  • Virtuozzo
  • iCore Virtual Accounts

Виртуальные машины

Речь идет об окружении, представляемом для гостевой ОС. Оно инициализируется как аппаратное, но на самом деле, оно программное и эмулируется программным обеспечением хостовой системы. При использовании паравиртуализации, виртуальная машина не эмулирует аппаратное обеспечение, используется специальное API. Применяется в тестовых лабораториях, в качестве экспериментального средства.

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

Виртуализация сервера позволяет упростить процесс восстановления систем, вышедших из строя, вне зависимости от их конфигурации.

Виртуализация в данном случае применяется для размещения нескольких логических серверов на базе одного физического. Данный процесс называется консолидацией.

Также возможен и обратный процесс: объединение нескольких физических серверов в один логический. Примером такого процесса является Oracle Real Application Cluster. Также существует и ряд других:

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

Разделение одного физического сервера на несколько. Каждая отдельная часть отображается у пользователя как отдельный сервер. Данный метод осуществляется на уровне ядра ОС.

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

Примером реализации разделения ресурсов можно отнести проект OpenSolaris Network Virtualization and Resource Control, позволяющий создавать несколько виртуальных сетевых интерфейсов на основе одного физического.

Также данный процесс подразумевает агрегацию, распределение и объединение ресурсов. К примеру, симметричные мультипроцессорные системы объединяют множество процессоров; RAID и дисковые менеджеры объединяют множество дисков в один большой логический диск. Зачастую к данному подтипу также относятся сетевые файловые системы, абстрагированные от хранилищ данных на которых они построены (Vmware VMFS, Solaris/OpenSolaris ZFS, NetApp WAFL).

Виртуализация приложений

Результатом данного процесса является преобразованное из требующего установки в ОС приложения в не требующее установки, автономное приложение.

ПО виртуализатора определяет при установке виртуализуемого приложения, какие компоненты требуются ОС для работы приложения, и эмулирует их. В результате создается специализированная среда для конкретного виртуализируемого приложения, что обеспечивает полную изолированность работы запускаемого приложения. 

Чтобы создать виртуальное приложение, виртуализируемое помещается в специальную папку. При запуске виртуального приложения запускается виртуализируемое приложение и папка, являющаяся для него рабочей средой. Таким образом, образуется определенный промежуток между приложением и операционной системой, что позволяет избежать конфликтов между ПО и ОС. Виртуализацию приложений осуществляют такие программы, как: Citrix XenApp, SoftGrid и VMWare ThinApp.

Достоинства виртуализации приложений:

  • Изолированность приложений и ОС;
  • Отсутствие несовместимости и конфликтов ПО и ОС;
  • Не засоряется реестр, отсутствие конфигурационных файлов;
  • Низкие ресурсозатраты по сравнению с эмуляцией всей ОС.
#