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 поддерживает:
- запуск гостевых ОС: Linux, Windows, BSD, Solaris и других;
- live-миграцию виртуальных машин между хостами без прерывания работы;
- снапшоты (снимки состояния) и клонирование ВМ;
- динамическое выделение памяти и горячее подключение устройств;
- паравиртуальные драйверы virtio для повышения производительности дисков и сети;
- вложенную виртуализацию (Nested Virtualization).
Производительность KVM близка к нативной: потери при вычислительных нагрузках обычно не превышают 2–5 %. Для изоляции гостевых систем используется аппаратная защита памяти и привилегированные инструкции, что обеспечивает высокий уровень безопасности.
¶Управление и инструменты
Для управления виртуальными машинами на базе KVM применяются:
- libvirt — библиотека и демон, предоставляющий унифицированный API;
- virt-manager — графический интерфейс;
- virsh — командная строка;
- oVirt — полноценная платформа управления виртуализацией корпоративного уровня;
- Proxmox VE — дистрибутив на базе Debian с веб-интерфейсом для управления 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 →


