Аппаратная виртуализация — метод виртуализации, при котором процессор физически поддерживает создание изолированных окружений для гостевых ОС. Ключевое отличие от программной виртуализации: не нужна трансляция каждой привилегированной инструкции гостевой ОС — процессор делает это аппаратно, быстро и безопасно.
Как работает аппаратная виртуализация
Intel в 2005 году ввёл расширение VT-x (Virtualization Technology for IA-32 and Intel 64), AMD одновременно — AMD-V (AMD Virtualization, также известное как SVM). Эти расширения добавляют специальный режим процессора — VMX Root Mode (для гипервизора) и VMX Non-Root Mode (для гостевых ОС). Гостевая ОС выполняет привилегированные инструкции, процессор перехватывает их и передаёт гипервизору — это называется VM Exit. Гипервизор обрабатывает запрос и возвращает управление — VM Entry. Весь процесс занимает сотни наносекунд вместо микросекунд при программной эмуляции.
KVM, VMware ESXi, Hyper-V, Xen HVM — все они используют аппаратную виртуализацию. OpenVZ и LXC — нет, они используют контейнеризацию на уровне ядра ОС.
IOMMU и SR-IOV
Помимо VT-x/AMD-V, современные процессоры поддерживают IOMMU (Intel VT-d / AMD-Vi) — аппаратную виртуализацию ввода-вывода. IOMMU позволяет гостевой ВМ получить прямой доступ к физическому устройству (GPU, сетевой карте) без посредника — это называется PCI Passthrough. SR-IOV (Single Root I/O Virtualization) делает ещё шаг: одна физическая сетевая карта представляется как несколько виртуальных функций, каждая доступна отдельной ВМ напрямую.
Аппаратная vs программная виртуализация
Программная виртуализация (QEMU без KVM) эмулирует процессор инструкция за инструкцией — работает на любом железе, но в 10–50 раз медленнее. Аппаратная виртуализация требует VT-x/AMD-V, но обеспечивает накладные расходы 2–5% против «голого железа». Паравиртуализация (Xen PV) занимает промежуточное место: гостевая ОС модифицируется и сама вызывает гипервизор через hypercall, минуя VM Exit — даёт лучшую производительность ввода-вывода, но требует специально собранного ядра гостевой ОС.
История
Intel VT-x анонсирован в 2005 году, первые процессоры с его поддержкой — Pentium 4 660/670 и Xeon на архитектуре Prescott. AMD SVM появился одновременно в процессорах Athlon 64 X2 (Socket AM2, 2006). Первый гипервизор, использовавший аппаратную виртуализацию — Xen 3.0 с режимом HVM (2005). KVM интегрирован в ядро Linux 2.6.20 в 2007 году. До 2005 года виртуализация на x86 была либо медленной программной эмуляцией (QEMU), либо паравиртуализацией (Xen PV).
Вложенная виртуализация (Nested Virtualization)
Nested virtualization — запуск гипервизора внутри виртуальной машины. Требует явного включения (vmx-флаг в CPUID для Intel, svm для AMD). KVM поддерживает вложенную виртуализацию с ядра Linux 3.x. Применяется: тестирование гипервизоров, обучение, CI/CD с Docker-in-Docker при использовании Docker Desktop. Производительность снижается — каждый VM Exit проходит через два уровня гипервизора.
Практическое значение для VPS-хостинга
Аппаратная виртуализация делает возможным VPS-хостинг промышленного качества. Полная изоляция ВМ через KVM с VT-x гарантирует: компрометация одной ВМ не затрагивает соседей, каждой ВМ выделяется часть физических ресурсов через cgroups, гостевая ОС может быть Windows, FreeBSD, любой Linux. OpenVZ не использует аппаратную виртуализацию — это контейнеризация уровня ядра, дешевле, но с меньшей изоляцией и ограничением на Linux-гостей.
Для проверки поддержки VT-x на Linux: grep -m1 vmx /proc/cpuinfo (Intel) или grep -m1 svm /proc/cpuinfo (AMD). В Proxmox VE поддержка отображается в Hardware → CPU секции веб-интерфейса.