Паравиртуализация¶
Паравиртуализация — это технология виртуализации, при которой гостевая операционная система (ОС) модифицируется для работы в изолированной среде (виртуальной машине) и взаимодействует с гипервизором напрямую через специальный программный интерфейс (гипервызовы), а не эмулирует полный набор аппаратного обеспечения. В отличие от полной виртуализации, паравиртуализация не требует эмуляции физических устройств, что позволяет достичь более высокой производительности за счёт снижения накладных расходов, но требует внесения изменений в ядро гостевой ОС.
¶История
Концепция паравиртуализации была впервые предложена и реализована в начале 2000-х годов исследователями из Кембриджского университета в рамках проекта Xen. Первая версия гипервизора Xen (Xen 1.0) была выпущена в 2003 году. Основной целью разработчиков было создание системы, которая могла бы эффективно использовать ресурсы физического сервера, особенно в условиях, когда аппаратная поддержка виртуализации (Intel VT-x и AMD-V) ещё не была широко распространена или отсутствовала.
Паравиртуализация стала популярной альтернативой полной виртуализации, так как позволяла запускать несколько операционных систем на одном физическом оборудовании с производительностью, близкой к нативной. В 2005 году проект Xen был передан под управление XenSource, Inc., а позже, в 2007 году, компания была приобретена корпорацией Citrix Systems. В 2008 году Xen был принят в Linux Foundation.
С появлением аппаратной виртуализации (Intel VT-x и AMD-V) в середине 2000-х годов популярность паравиртуализации снизилась, так как полная виртуализация перестала требовать эмуляции устройств на уровне программного обеспечения и могла использовать аппаратные ускорители. Однако паравиртуализация остаётся востребованной в специализированных сценариях, например, в облачных вычислениях и при работе с операционными системами, которые не поддерживают аппаратную виртуализацию.
¶Принцип работы
В основе паравиртуализации лежит модификация гостевой операционной системы. Вместо того чтобы выполнять привилегированные инструкции (которые в обычных условиях может выполнять только ядро ОС) и получать отказ от процессора, модифицированная гостевая ОС отправляет запросы гипервизору через специальный интерфейс — гипервызовы (hypercalls). Гипервизор, в свою очередь, выполняет эти запросы от имени гостевой ОС, управляя доступом к аппаратным ресурсам.
¶Отличие от полной виртуализации
- Полная виртуализация (например, VMware Workstation, VirtualBox) эмулирует полный набор аппаратных устройств (процессор, память, диски, сетевые карты). Гостевая ОС не подозревает, что работает в виртуальной среде, и выполняет все инструкции так, как если бы они были на реальном оборудовании. Гипервизор перехватывает привилегированные инструкции и эмулирует их.
- Паравиртуализация (Xen, ранние версии KVM) не эмулирует аппаратуру. Вместо этого гостевая ОС «знает», что работает в виртуальной среде, и использует гипервызовы для выполнения операций, требующих привилегий. Это снижает накладные расходы, так как не требуется эмуляция каждого аппаратного действия.
¶Гипервызовы
Гипервызов — это аналог системного вызова (syscall), но предназначенный для взаимодействия гостевой ОС с гипервизором. Через гипервызовы гостевая ОС может:
- управлять памятью (выделение, освобождение, маппинг страниц);
- обрабатывать прерывания;
- выполнять операции ввода-вывода (диски, сеть);
- синхронизировать время.
¶Классификация
Паравиртуализацию можно классифицировать по нескольким признакам:
¶По типу гипервизора
- Гипервизор типа 1 (bare-metal) — работает непосредственно на аппаратном обеспечении, без базовой ОС. Пример: Xen, Microsoft Hyper-V (в режиме паравиртуализации).
- Гипервизор типа 2 (hosted) — работает поверх операционной системы хоста. Пример: KVM (Kernel-based Virtual Machine) — использует паравиртуализацию для драйверов устройств (virtio).
¶По степени модификации гостевой ОС
- Полная паравиртуализация — требуется значительная модификация ядра гостевой ОС, включая замену всех привилегированных инструкций на гипервызовы. Используется в Xen для гостевых ОС, которые имеют специальные «паравиртуализированные» драйверы.
- Частичная паравиртуализация — модифицируются только драйверы устройств (например, virtio в KVM), а ядро ОС остаётся неизменным. Это позволяет сочетать преимущества паравиртуализации (высокая производительность ввода-вывода) с совместимостью с немодифицированными гостевыми ОС.
¶По типу гостевой ОС
- Паравиртуализированные гостевые ОС — операционные системы, которые были специально модифицированы для работы с гипервизором (например, Linux с поддержкой Xen, Windows с драйверами Hyper-V).
- Немодифицированные гостевые ОС — операционные системы, которые не поддерживают паравиртуализацию и могут работать только в режиме полной виртуализации или с использованием аппаратной виртуализации.
¶Устройство и характеристики
¶Архитектура
В паравиртуализированной системе можно выделить три основных компонента:
- Гипервизор — программное обеспечение, которое управляет доступом к физическим ресурсам (процессор, память, устройства ввода-вывода). Он работает в самом привилегированном режиме (ring 0).
- Гостевая ОС — модифицированная операционная система, которая работает в менее привилегированном режиме (ring 1 или ring 3) и взаимодействует с гипервизором через гипервызовы.
- Драйверы устройств — специальные драйверы (например, netfront, blkfront в Xen), которые обеспечивают доступ к виртуальным устройствам через гипервызовы.
¶Производительность
Паравиртуализация обеспечивает более высокую производительность по сравнению с полной виртуализацией без аппаратной поддержки, особенно в операциях ввода-вывода. По данным исследований (например, работы по Xen), производительность паравиртуализированных систем может достигать 90–95% от производительности нативной системы. Однако с появлением аппаратной виртуализации разрыв в производительности между паравиртуализацией и полной виртуализацией сократился.
¶Ограничения
- Требование модификации ОС — не все операционные системы могут быть модифицированы для паравиртуализации. Например, закрытые проприетарные ОС (Windows, macOS) не поддерживают паравиртуализацию без специальных драйверов от производителя гипервизора.
- Сложность поддержки — модификация ядра ОС требует постоянного обновления драйверов и адаптации к новым версиям гипервизора.
- Зависимость от гипервизора — гостевая ОС, модифицированная для одного гипервизора (например, Xen), не сможет работать с другим гипервизором (например, KVM) без дополнительной адаптации.
¶Применение
Паравиртуализация нашла применение в следующих областях:
- Облачные вычисления — многие облачные платформы (например, Amazon Web Services, Rackspace) исторически использовали Xen для изоляции виртуальных машин. Паравиртуализация позволяла эффективно использовать ресурсы физических серверов.
- Виртуализация серверов — в корпоративных средах, где требуется высокая производительность и изоляция, паравиртуализация применялась для консолидации серверов.
- Разработка и тестирование — паравиртуализированные среды позволяют разработчикам запускать несколько операционных систем на одном компьютере с минимальными накладными расходами.
- Встраиваемые системы — в системах с ограниченными ресурсами (например, в автомобильной электронике или промышленных контроллерах) паравиртуализация позволяет запускать несколько ОС на одном процессоре.
¶Примеры гипервизоров, использующих паравиртуализацию
- Xen — один из первых и наиболее известных гипервизоров, реализующих паравиртуализацию. Xen поддерживает паравиртуализированные гостевые ОС (Linux, FreeBSD, NetBSD) и немодифицированные гостевые ОС (Windows) с использованием аппаратной виртуализации.
- KVM (Kernel-based Virtual Machine) — модуль ядра Linux, который использует паравиртуализацию для драйверов устройств через интерфейс virtio. KVM позволяет запускать немодифицированные гостевые ОС с помощью аппаратной виртуализации, но для повышения производительности ввода-вывода рекомендует использовать паравиртуализированные драйверы.
- Microsoft Hyper-V — гипервизор от Microsoft, который поддерживает паравиртуализацию для гостевых ОС Windows и Linux через драйверы «Integration Services».
- VMware ESXi — хотя в основном использует полную виртуализацию, в некоторых версиях поддерживает паравиртуализированные драйверы (VMware Tools) для улучшения производительности.
¶Интересные факты
- Термин «паравиртуализация» (paravirtualization) был введён исследователями проекта Xen для обозначения технологии, при которой гостевая ОС «параллельно» (para-) взаимодействует с гипервизором, в отличие от полной виртуализации, где гостевая ОС «не знает» о виртуализации.
- В 2006 году компания Intel выпустила процессоры с поддержкой технологии Intel VT-x, что позволило реализовать полную виртуализацию без паравиртуализации. Однако паравиртуализация остаётся актуальной для систем, где требуется высокая производительность ввода-вывода, например, в базах данных и высоконагруженных веб-серверах.
- В 2018 году в ядро Linux была добавлена поддержка паравиртуализации для архитектуры RISC-V, что расширило сферу применения технологии на встраиваемые и мобильные устройства.
¶Источники
- Barham, P., Dragovic, B., Fraser, K., Hand, S., Harris, T., Ho, A., ... & Warfield, A. (2003). Xen and the art of virtualization. ACM SIGOPS Operating Systems Review, 37(5), 164-177.
- VMware, Inc. (2007). Understanding Full Virtualization, Paravirtualization, and Hardware Assist. VMware Technical White Paper.
- Ковалёв, А. В. (2010). Виртуализация: технологии и решения. М.: ДМК Пресс.
- Документация проекта Xen: Xen Paravirtualization (xenproject.org).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

