KVM — стандарт виртуализации в Linux, встроенный в ядро начиная с версии 2.6.20 (2007). Технически KVM превращает Linux-хост в гипервизор Type 2 с характеристиками Type 1: ядро хоста само управляет ВМ без дополнительного гипервизора-прослойки. Каждая ВМ работает как изолированный процесс с доступом к аппаратному ускорению Intel VT-x / AMD-V.
Как работает
KVM состоит из двух компонентов: модуля ядра kvm.ko (общая логика) и процессорно-специфичного модуля kvm-intel.ko или kvm-amd.ko. Эти модули активируют режим VMX/SVM на процессоре, который позволяет выполнять гостевой код напрямую без транзакции через гипервизор.
Для управления ВМ используется QEMU — эмулятор, который предоставляет виртуальные устройства (диски, сетевые карты, BIOS). KVM обеспечивает аппаратное ускорение процессора и памяти, QEMU — эмуляцию периферии. Паравиртуальные драйверы virtio ускоряют ввод-вывод. Управляющим слоем служит libvirt с утилитами virsh, virt-manager.
Каждая ВМ получает изолированную память, виртуальные CPU (vCPU), диск (vDisk) и сетевые адаптеры (vNIC). Снапшоты (snapshot), live migration между хостами и балунинг памяти — стандартные возможности KVM.
История
KVM разработан Avi Kivity (Qumranet) и принят в ядро Linux в феврале 2007 года (версия 2.6.20). Red Hat приобрела Qumranet в 2008 году и стала главным спонсором разработки KVM. С 2010-х KVM — доминирующий гипервизор для Linux-серверов и облачных платформ (OpenStack, AWS Nitro, Google Cloud GCE).
Ключевые отличия от похожих терминов
KVM-виртуализация даёт полную изоляцию ядра ОС, в отличие от OpenVZ где все ВМ разделяют одно ядро хоста. KVM медленнее OpenVZ для контейнерных задач, но безопаснее и гибче. VMware ESXi — коммерческий аналог с более развитыми инструментами управления корпоративного уровня.
Конфигурация KVM-хоста
Стандартная конфигурация: Ubuntu 22.04 или Debian 12, пакеты qemu-kvm libvirt-daemon-system virtinst, управление через libvirt. Для дисков ВМ — LVM-тома (производительнее) или qcow2-образы (удобнее для снапшотов). Proxmox VE — популярная оболочка над KVM.
KVM vs OpenVZ
OpenVZ — контейнерная виртуализация с общим ядром: меньше накладных расходов, но нет изоляции ядра. KVM — полная аппаратная виртуализация: каждая ВМ получает своё ядро, может запускать Docker и менять параметры ядра. Для production-серверов и Docker выбирайте KVM.
Производительность KVM
С virtio-драйверами производительность достигает 90–98% от bare-metal. CPU pinning снижает NUMA-накладные расходы для latency-sensitive приложений. Оверкоммит позволяет выделить ВМ больше ресурсов, чем есть физически.
Инструменты управления KVM
virsh — CLI для libvirt. virt-manager — GUI для рабочих станций. Proxmox VE — полноценная веб-панель с HA и кластером. oVirt — enterprise-платформа на базе KVM. Для хостинг-провайдеров: SolusVM или собственный API поверх libvirt.