Открыть сервис

KVM: архитектура виртуализации Linux

KVM (Kernel-based Virtual Machine) — программное решение для полной виртуализации в операционной системе Linux, реализованное в виде модуля ядра. KVM позволяет превратить Linux-хост в гипервизор первого типа (bare-metal), предоставляя изолированные виртуальные машины (гостевые ОС) с аппаратным ускорением. Технология разработана израильской компанией Qumranet, в 2008 году поглощённой корпорацией Red Hat, и с 2007 года включена в основную ветку ядра Linux.

Архитектура и принцип работы

KVM использует аппаратные расширения виртуализации процессоров Intel VT-x и AMD-V. Модуль ядра kvm.ko загружается в пространство ядра и предоставляет интерфейс /dev/kvm, через который пользовательские программы управляют виртуальными машинами. При этом сам KVM не является полноценным гипервизором: он лишь добавляет в ядро Linux поддержку режима гостевого исполнения, а управление жизненным циклом ВМ берёт на себя внешняя утилита — QEMU.

Ключевая особенность архитектуры — использование стандартного планировщика задач Linux. Каждая виртуальная машина представляет собой обычный процесс (или набор потоков) на хосте, что позволяет применять к ВМ штатные механизмы управления ресурсами: cgroups, контрольные группы, изоляцию по CPU, управление памятью. Это упрощает интеграцию виртуализации в существующую инфраструктуру Linux.

Компоненты

  • Модуль ядра kvm.ko — базовый модуль, реализующий интерфейс виртуализации.
  • Архитектурно-зависимые модулиkvm-intel.ko и kvm-amd.ko для процессоров Intel и AMD соответственно.
  • QEMUэмулятор устройств и пользовательский интерфейс управления ВМ. QEMU работает в пространстве пользователя, эмулирует BIOS, контроллеры, сетевые карты и диски, а исполнение CPU-инструкций делегирует KVM.
  • libvirt — библиотека и набор инструментов для управления виртуализацией, предоставляющая единый API для KVM, Xen и других гипервизоров.
  • virt-managerграфический интерфейс управления ВМ на основе libvirt.

Режимы исполнения

KVM поддерживает два режима работы гостевых систем:

  • Аппаратная виртуализация (HV): гостевая ОС исполняется напрямую на CPU с использованием расширений VT-x/AMD-V. Большинство инструкций выполняется без участия гипервизора, что обеспечивает почти нативную производительность.
  • Паравиртуализация: для гостевыми ОС, поддерживающих специальные драйверы (virtio), обеспечивается ускоренный ввод-вывод. Драйверы virtio устанавливаются в гостевую систему и обеспечивают высокую пропускную способность сетевых операций и дисковых операций за счёт совместного использования очередей с хостом.

Управление памятью

KVM реализует механизм теневых страничных таблиц (shadow paging) и аппаратную трансляцию адресов второго уровня (EPT для Intel, NPT для AMD). Это позволяет избежать накладных расходов на эмуляцию MMU. Гостевая физическая память выделяется из оперативной памяти хоста, поддерживается перераспределение памяти (memory ballooning) через драйвер virtio-balloon, что позволяет динамически изменять объём памяти ВМ.

Сетевая подсистема

Для сетевого взаимодействия KVM использует виртуальные мосты (Linux bridge), сетевые устройства TAP, а также технологию магистральных сетей (macvtap). Поддерживается изоляция сетей через VLAN, создание виртуальных маршрутизаторов и межсетевых экранов средствами iptables/nftables. Благодаря интеграции с ядром Linux, KVM может использовать все штатные сетевые возможности хоста.

Производительность и область применения

KVM обеспечивает производительность, близкую к нативной, для вычислительных нагрузок. По данным тестов SPECvirt и Phoronix, потери составляют 3–10% в зависимости от типа нагрузки. Технология широко применяется в облачных платформах (OpenStack, Proxmox VE), при создании частных и публичных облаков, для серверной виртуализации в корпоративных ЦОД. KVM поддерживает live-миграцию (перенос работающей ВМ между хостами без остановки), снапшоты, клонирование и вложенную виртуализацию (Nested Virtualization).

Ограничения

KVM требует наличия аппаратной поддержки виртуализации в процессоре, что исключает работу на устаревших CPU. Графическое ускорение в гостевых системах реализуется через технологии virtio-gpu или проброс PCI-устройств (VFIO), что требует дополнительной настройки. Для работы с Windows-гостями необходимы проприетарные драйверы VirtIO от Red Hat, распространяемые под лицензией GPL.

Сравнение с альтернативами

В отличие от Xen, KVM является частью ядра Linux и не требует отдельного домена управления (dom0). По сравнению с VMware ESXi, KVM полностью бесплатен и открыт, но требует более глубоких знаний администратора для конфигурирования. В тестах производительности KVM сопоставим с Hyper-V от Microsoft, а по показателям масштабируемости превосходит его в сценариях с большим количеством ВМ на одном хосте.

Лицензирование и развитие

KVM распространяется под лицензией GNU GPL v2. Разработка координируется сообществом и компаниями Red Hat, IBM, Google, Oracle. Начиная с ядра 3.9, KVM поддерживает технологии защиты памяти (KASLR), а в новых версиях ядра добавлена поддержка виртуализации для архитектур ARM64 и RISC-V.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →