hostprofi.ru
Подобрать хостинг
Термин·буква П

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

краткое определение

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

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

Как работает

При паравиртуализации ядро гостевой ОС модифицируется: привилегированные инструкции заменяются вызовами гипервизора (hypercalls). Вместо эмуляции реального сетевого адаптера или диска гостевая ОС использует паравиртуальные драйверы — virtio для дисков и сети, xen-netfront/xen-blkfront для Xen.

Паравиртуальные драйверы работают значительно быстрее эмулируемых: latency дисковых операций снижается в 2–3 раза, пропускная способность сети увеличивается. Поэтому даже при использовании KVM (который по умолчанию — аппаратная виртуализация) рекомендуется включать virtio-драйверы для дисков и сети.

Классическая паравиртуализация Xen PV требует патченного ядра Linux. Современный подход — HVM + PV-драйверы (Xen HVM с virtio): гостевая ОС не требует модификации, но использует паравиртуальные драйверы для производительности.

История

Паравиртуализация разработана командой Xen в Кембриджском университете в 2003 году. Xen 1.0 выпущен в 2003 году, Xen 2.0 — в 2004-м. До появления Intel VT-x (2005) и AMD-V (2006) паравиртуализация была единственным способом достичь приемлемой производительности. После появления аппаратных расширений HVM стала доминирующей, но PV-драйверы (virtio) остались в активном использовании.

На что обращать внимание

В контексте современного хостинга паравиртуализация почти всегда означает использование virtio-драйверов в KVM. Убедитесь, что в вашей ВМ установлены пакеты virtio-net и virtio-blk — это ускорит работу диска и сети. В Ubuntu/Debian они включены в ядро по умолчанию начиная с версии 16.04.

Virtio: практическое применение в KVM

В современном KVM-хостинге паравиртуализация реализована через virtio-драйверы. Virtio-net обеспечивает производительность до 10 Гбит/с. Virtio-blk снижает latency дисковых операций с 5–15 мс до 0.1–1 мс. В Ubuntu 16.04+ virtio-драйверы активируются автоматически.

Сравнение PV, HVM и HVM+PV

РежимЯдро гостевой ОСПроизводительностьПоддержка ОС
PV (Xen)ПатченноеБлизко к bare-metalТолько Linux
HVM (KVM, Xen HVM)СтандартноеЧуть ниже PV без virtioЛюбая ОС
HVM+PV-драйверыСтандартное+virtioБлизко к PVLinux, Windows

Проверка активности virtio

Проверить: lspci | grep -i virtio. ls /sys/bus/virtio/devices/ — список активных устройств. Если вывод пустой на KVM-хостинге — сервер использует эмулируемые устройства, что снижает производительность VDS.

Паравиртуализация в QEMU/KVM

Балуны-устройства virtio-balloon для динамического изменения памяти. virtio-scsi вместо virtio-blk для большего числа дисков. Установка гостевых агентов: apt install qemu-guest-agent в гостевой ОС — обеспечивает graceful shutdown и снапшоты.

Другие термины