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

KVM: технология аппаратной виртуализации

KVM (Kernel-based Virtual Machine, «виртуальная машина на основе ядра») — технология аппаратной виртуализации для операционной системы Linux, которая позволяет запускать несколько изолированных виртуальных машин (гостевых ОС) на одном физическом сервере. KVM реализован в виде загружаемого модуля ядра и превращает Linux в гипервизор первого типа (bare-metal), при этом сохраняя все возможности обычной операционной системы.

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

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

Ключевые компоненты:

  • модуль ядра kvm.ko — базовая часть, обеспечивающая виртуализацию;
  • модуль kvm-intel.ko или kvm-amd.koподдержка конкретной архитектуры процессора;
  • QEMU — пользовательский процесс, эмулирующий устройства ввода-вывода, BIOS и периферию.

История

Технология была разработана израильской компанией Qumranet и впервые представлена в 2006 году. В феврале 2007 года KVM был включён в основное ядро Linux (версия 2.6.20). В 2008 году Qumranet была приобретена корпорацией Red Hat, которая сделала KVM основой своего продукта Red Hat Enterprise Virtualization. С 2009 года KVM стал одним из основных гипервизоров в экосистеме Linux, наряду с Xen.

Возможности и характеристики

KVM поддерживает:

Производительность KVM близка к нативной: потери при вычислительных нагрузках обычно не превышают 2–5 %. Для изоляции гостевых систем используется аппаратная защита памяти и привилегированные инструкции, что обеспечивает высокий уровень безопасности.

Управление и инструменты

Для управления виртуальными машинами на базе KVM применяются:

Применение

KVM широко используется в дата-центрах, облачных платформах и корпоративной инфраструктуре. Он является основой таких публичных облачных сервисов, как OpenStack (в конфигурации с Nova Compute), и применяется в сервисах хостинга виртуальных серверов (VPS/VDS). Благодаря тому, что KVM встроен в ядро Linux, он не требует отдельной установки гипервизора и поддерживается практически всеми современными дистрибутивами: RHEL, CentOS, Ubuntu, Debian, SUSE и другими.

Преимущества и ограничения

Преимущества KVM: открытый исходный код, нулевая стоимость лицензий, тесная интеграция с ядром Linux, активная разработка и поддержка сообщества, высокая масштабируемость (до 288 виртуальных процессоров и 4 ТБ памяти на одну ВМ в современных версиях).

Ограничения: KVM работает только на Linux-хостах (в отличие от гипервизоров VMware ESXi или Microsoft Hyper-V), требует процессоров с аппаратной виртуализацией, а для управления в корпоративной среде часто необходимы дополнительные инструменты автоматизации.

Безопасность

Изоляция виртуальных машин обеспечивается аппаратными механизмами процессора. Для защиты от уязвимостей (например, Spectre и Meltdown) применяются патчи ядра и дополнительные параметры запуска. В средах с высокими требованиями к безопасности рекомендуется использовать sVirt (расширение SELinux для KVM), которое ограничивает доступ виртуальных машин к ресурсам хоста.

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

На главную BFOmetr →