Введение

Техника виртуализации

В вычислительной технике паравиртуализация — это техника виртуализации, которая предоставляет виртуальным машинам программный интерфейс, похожий, но не идентичный базовому аппаратно-программному интерфейсу. Цель модифицированного интерфейса — уменьшить часть времени выполнения гостевой системы, затрачиваемого на операции, которые значительно сложнее выполнять в виртуальной среде по сравнению с не виртуализированной. Паравиртуализация предоставляет специально определенные "хуки", позволяющие гостевой системе и хосту запрашивать и подтверждать выполнение этих задач, которые в противном случае выполнялись бы в виртуальном домене (где производительность хуже). Успешная паравиртуализированная платформа может упростить виртуальный монитор машины (VMM) (путем переноса выполнения критически важных задач из виртуального домена в хост-домен) и/или уменьшить общее снижение производительности выполнения гостевой системы внутри виртуальной машины. Паравиртуализация требует явной адаптации гостевой операционной системы к пара-API — обычный дистрибутив ОС, не поддерживающий паравиртуализацию, не может работать поверх паравиртуализирующего VMM. Однако даже в тех случаях, когда операционную систему нельзя изменить, могут быть доступны компоненты, обеспечивающие значительные преимущества паравиртуализации в плане производительности. Например, проект Xen Windows GPLPV предоставляет набор драйверов устройств, предназначенных для установки в виртуальную гостевую систему Microsoft Windows, работающую на гипервизоре Xen. Такие приложения обычно доступны через среду интерфейса паравиртуальной машины. Это обеспечивает совместимость режимов работы с различными моделями алгоритмов шифрования, позволяя бесшовную интеграцию в паравиртуальную среду.

История

Паравиртуализация – это новый термин для старой идеи. Операционная система IBM VM предлагает такую возможность с 1972 года (и ранее как CP 67). В мире виртуальных машин это называется "кодом диагностики", поскольку она использует код инструкции, который обычно используется только программным обеспечением для обслуживания оборудования и, следовательно, не определен. Операционная система Parallels Workstation называет свой эквивалент "гипервызовом". Все они представляют собой одно и то же: системный вызов к гипервизору нижнего уровня. Такие вызовы требуют поддержки в "гостевой" операционной системе, которая должна содержать код, специфичный для гипервизора, для выполнения таких вызовов. Термин "паравиртуализация" впервые был использован в научной литературе в связи с Denali Virtual Machine Manager. Этот термин также используется для описания гипервизоров Xen, L4, TRANGO, VMware, Wind River и XtratuM. Все эти проекты используют или могут использовать методы паравиртуализации для поддержки высокопроизводительных виртуальных машин на x86-аппаратном обеспечении, реализуя виртуальную машину, которая не реализует трудновиртуализируемые части фактического набора инструкций x86. Гипервизор обеспечивает виртуализацию базовой компьютерной системы. При полной виртуализации гостевая операционная система работает в неизменном виде на гипервизоре. Однако повышение производительности и эффективности достигается за счет взаимодействия гостевой операционной системы с гипервизором. Позволяя гостевой операционной системе сообщать о своих намерениях гипервизору, обе системы могут сотрудничать для достижения более высокой производительности при работе в виртуальной машине. Этот тип взаимодействия называется паравиртуализацией. В 2005 году VMware предложила интерфейс паравиртуализации – интерфейс виртуальной машины (VMI) – в качестве механизма связи между гостевой операционной системой и гипервизором. Этот интерфейс обеспечивал прозрачную паравиртуализацию, при которой одна двоичная версия операционной системы может работать либо на аппаратном обеспечении, либо на гипервизоре в паравиртуализированном режиме.

Поддержка оборудования

По мере того как процессоры AMD и Intel приобрели поддержку более эффективной аппаратной помощи виртуализации, стандарт устарел, и поддержка VMI была удалена из ядра Linux версии 2.6.37 и из продуктов VMware в 2011 году.

Поддержка операционной системы

В 2008 году Red Hat представила паравиртуализацию VirtIO для KVM и Linux, а также доступен драйвер VirtIO для Microsoft Windows. В 2008 году Microsoft представила паравиртуализацию Hyper-V.

Линукс

Первое появление поддержки паравиртуализации в Linux произошло с объединением порта ppc64 в 2002 году, который обеспечивал запуск Linux как паравиртуализированной гостевой системы на аппаратном обеспечении IBM pSeries (RS/6000) и iSeries (AS/400). На конференции USENIX в 2006 году в Бостоне, штат Массачусетс, несколько компаний, занимающихся разработкой Linux (включая IBM, VMware, Xen и Red Hat), совместно работали над альтернативной формой паравиртуализации, первоначально разработанной группой Xen, под названием "paravirt ops". Код paravirt ops (часто сокращаемый до pv ops) был включен в основное ядро Linux начиная с версии 2.6.23 и предоставляет гипервизор-независимый интерфейс между гипервизором и гостевыми ядрами. Поддержка pv ops гостевых ядер в дистрибутивах появилась, начиная с Ubuntu 7.04 и Red Hat 9. Гипервизоры Xen, основанные на ядре версии 2.6.24 или более поздней, поддерживают гостевые системы pv ops, как и продукт VMware Workstation, начиная с версии 6.

Поддержка программного обеспечения

VirtualBox также поддерживает это, начиная с версии 5.0.