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

Аппаратная виртуализация

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

Аппаратная виртуализация — технология создания виртуальных машин с поддержкой процессора: расширения Intel VT-x и AMD-V позволяют гипервизору изолировать гостевые ОС без эмуляции каждой инструкции, обеспечивая производительность близкую к «голому железу».

Аппаратная виртуализация — метод виртуализации, при котором процессор физически поддерживает создание изолированных окружений для гостевых ОС. Ключевое отличие от программной виртуализации: не нужна трансляция каждой привилегированной инструкции гостевой ОС — процессор делает это аппаратно, быстро и безопасно.

Как работает аппаратная виртуализация

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 секции веб-интерфейса.

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