Паравиртуализация — что это и чем отличается от HVM | Глоссарий FREEHOSTING

Паравиртуализация

Paravirtualization
Паравиртуализация — Паравиртуализация — метод виртуализации, при котором гостевая ОС модифицируется для взаимодействия с гипервизором напрямую через специальный API (hypercall), что снижает накладные расходы на эмуляцию оборудования.

Определение простыми словами

Паравиртуализация — это подход к виртуализации, при котором гостевая операционная система знает, что работает в виртуальной среде, и взаимодействует с гипервизором через специальный облегчённый интерфейс — hypercall API. В отличие от полной аппаратной виртуализации, где гостевая ОС «думает», что работает на реальном железе, здесь ядро ОС переписывается или патчится так, чтобы заменить привилегированные инструкции прямыми вызовами гипервизора.

Исторически паравиртуализация была разработана для платформы Xen в начале 2000-х, когда процессоры Intel и AMD ещё не поддерживали аппаратные расширения VT-x/AMD-V. Сегодня чистая паравиртуализация используется реже, но её элементы (паравиртуализированные драйверы) остаются стандартом де-факто даже в средах с аппаратной виртуализацией.

Сравнение

Параметр Паравиртуализация (PV) Полная виртуализация (HVM) Аппаратная виртуализация + PV-драйверы (HVM+PV)
Модификация гостевой ОС Требуется (патч ядра) Не требуется Частично (только драйверы)
Поддержка Windows-гостей Нет Да Да
Накладные расходы на I/O Минимальные Высокие без PV-драйверов Минимальные
Требования к CPU Не нужны VT-x/AMD-V Обязательны VT-x/AMD-V Обязательны VT-x/AMD-V
Производительность CPU Близкая к нативной До 10-30% потерь без IOMMU Близкая к нативной

Кейсы использования

  • VPS на базе Xen PV — классические Linux-хосты с патчем ядра. До сих пор встречаются у ряда провайдеров; отличаются предсказуемой задержкой диска и сети.
  • Паравиртуализированные драйверы virtio — в среде KVM гостевой Linux или Windows с драйверами virtio-blk, virtio-net получает пропускную способность диска до 2–3 раз выше, чем при эмуляции IDE/e1000.
  • Гибридный режим HVM+PVH в Xen — современный компромисс: аппаратная виртуализация для CPU, паравиртуализированные пути для I/O. Используется в AWS Nitro и Xen 4.x.
  • Контейнерная паравиртуализация — технологии вроде Firecracker используют минimalистичный гипервизор с паравиртуализированными устройствами для запуска Lambda-функций с накладными расходами менее 5 мс на старт.

Негативный пример: попытка запустить Windows Server 2019 в режиме чистой паравиртуализации (Xen PV) невозможна — Microsoft не выпускает патчи ядра под Xen PV API. Для Windows обязателен HVM-режим с установкой PV-драйверов Xen Tools отдельным пакетом.

Технические детали

В ядре Linux поддержка паравиртуализации Xen включена начиная с версии 2.6.23. Для KVM-среды паравиртуализированные устройства реализованы через протокол virtio. Проверить тип виртуализации и наличие PV-драйверов можно следующими командами:

systemd-detect-virt
dmesg | grep -i 'xen|kvm|virtio'
lspci | grep -i virtio
ls /sys/bus/virtio/drivers/

Установка virtio-драйверов в Ubuntu/Debian (если не установлены):

apt-get install linux-image-virtual
modprobe virtio_blk
modprobe virtio_net
modprobe virtio_balloon

Проверка скорости паравиртуализированного диска по сравнению с эмулированным:

fio --name=seq-read --rw=read --bs=128k --size=1G --filename=/dev/vda --direct=1 --numjobs=1 --iodepth=32

Частые вопросы

Чем паравиртуализация отличается от полной виртуализации?

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

Используется ли паравиртуализация в современных KVM-серверах?

Да, но в виде паравиртуализированных драйверов virtio, а не чистого PV-режима. Драйверы virtio-net и virtio-blk обеспечивают пропускную способность, близкую к нативной, при этом не требуя патча всего ядра — только загрузки соответствующих модулей.

Можно ли запустить Windows в режиме паравиртуализации?

Чистый PV-режим (Xen PV API) Windows не поддерживает. Для Windows используется HVM с дополнительно установленными PV-драйверами — Xen Tools для Xen или virtio-win для KVM, что даёт сопоставимый прирост производительности I/O.

Как проверить, какой тип виртуализации используется на моём VPS?

Выполните команду systemd-detect-virt — она вернёт kvm, xen, lxc или другой тип. Для детального анализа используйте dmesg | grep -i 'xen|kvm|virtio', чтобы увидеть загруженные PV-драйверы.