Паравиртуализация (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 | Близко к PV | Linux, 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 и снапшоты.