Kernel-based Virtual Machine¶
Kernel-based Virtual Machine (KVM) — это модуль операционной системы Linux, реализующий функции гипервизора (монитора виртуальных машин) и позволяющий запускать изолированные виртуальные машины (гостевые ОС) с использованием аппаратных средств виртуализации процессоров архитектуры x86, поддерживающих технологии Intel VT (VMX) и AMD-V (SVM). KVM является частью основного ядра Linux с 2007 года и представляет собой open-source решение, распространяемое под лицензией GPL v2.
¶История
Разработка KVM была начата израильской компанией Qumranet в 2006 году. Первый публичный анонс состоялся в октябре 2006 года, а в феврале 2007 года код модуля был включён в основную ветку ядра Linux (версия 2.6.20). В 2008 году компания Red Hat приобрела Qumranet, после чего KVM стал одним из ключевых компонентов стратегии Red Hat в области виртуализации. С этого момента развитие KVM осуществляется при активном участии сообщества разработчиков ядра Linux и компаний, таких как Red Hat, IBM, Google, Oracle и Canonical.
В 2008 году KVM был принят в качестве основного гипервизора для платформы Red Hat Enterprise Virtualization (RHEV). В 2012 году Red Hat объявила о прекращении поддержки собственного гипервизора Xen в пользу KVM. С тех пор KVM является стандартным гипервизором в дистрибутивах Red Hat Enterprise Linux, CentOS, Fedora, Ubuntu, Debian и многих других.
¶Архитектура и принцип работы
KVM не является полноценным гипервизором в классическом понимании, а представляет собой модуль ядра, который превращает Linux в гипервизор первого типа (bare-metal). В отличие от гипервизоров второго типа, работающих поверх операционной системы, KVM использует ядро Linux в качестве хостовой ОС, что позволяет использовать все возможности ядра — управление памятью, планировщик процессов, драйверы устройств, сетевой стек и файловые системы.
¶Компоненты
Архитектура KVM включает несколько ключевых компонентов:
- Модуль ядра kvm.ko — основной модуль, реализующий интерфейс управления виртуализацией через специальный символьный файл
/dev/kvm. Он предоставляет API для создания виртуальных машин, управления памятью и обработки прерываний. - Модуль kvm-intel.ko или kvm-amd.ko — платформозависимые модули, реализующие поддержку аппаратных расширений Intel VT и AMD-V соответственно.
- Пользовательское пространство — управление виртуальными машинами осуществляется через эмулятор QEMU (Quick Emulator), который работает в пользовательском пространстве. QEMU эмулирует устройства (диски, сетевые карты, видеокарты, контроллеры USB) и обрабатывает ввод-вывод гостевой ОС.
¶Процесс создания виртуальной машины
- Пользователь запускает процесс QEMU, который открывает файл
/dev/kvmи получает файловый дескриптор. - Через вызовы ioctl QEMU создаёт виртуальную машину (структуру
kvm_vm) и один или несколько виртуальных процессоров (структурыkvm_vcpu). - QEMU выделяет гостевую память с помощью системных вызовов mmap, а затем регистрирует её в KVM.
- Для каждого виртуального процессора KVM создаёт отдельный поток в ядре, который выполняет гостевой код непосредственно на физическом процессоре, используя аппаратные режимы VMX (Intel) или SVM (AMD).
- При возникновении событий, требующих вмешательства хоста (например, обращение к несуществующей памяти, прерывание от эмулируемого устройства), управление передаётся обратно в QEMU, которое обрабатывает событие.
¶Режимы выполнения
KVM поддерживает три режима выполнения гостевого кода:
- Гостевой режим (Guest mode) — процессор выполняет код гостевой ОС напрямую, без участия гипервизора. Это основной режим, обеспечивающий максимальную производительность.
- Режим ядра (Kernel mode) — при возникновении событий, требующих вмешательства гипервизора (например, обработка прерываний, управление памятью), управление передаётся модулю KVM, который работает в контексте ядра хоста.
- Пользовательский режим (User mode) — для операций, которые не могут быть выполнены в ядре (например, эмуляция сложных устройств), управление передаётся процессу QEMU в пользовательском пространстве.
¶Классификация и типы
KVM не имеет собственной классификации, но может быть классифицирован по типу гипервизора и способу использования:
- По типу гипервизора — гипервизор первого типа (bare-metal), так как работает непосредственно на аппаратном обеспечении, используя ядро Linux в качестве минимальной операционной системы.
- По способу управления — управляемый через QEMU (наиболее распространённый вариант), а также через специализированные инструменты, такие как libvirt, virt-manager, oVirt, OpenStack и другие.
- По поддерживаемым архитектурам — изначально разработан для x86, но впоследствии портирован на архитектуры ARM, PowerPC, MIPS, RISC-V и S390.
¶Характеристики и возможности
KVM поддерживает широкий набор функций, характерных для современных гипервизоров:
- Поддержка множества гостевых ОС — Linux, Windows (включая Windows 10/11 и Windows Server), FreeBSD, Solaris, Haiku, ReactOS и другие.
- Аппаратная поддержка виртуализации — использование Intel VT-x/EPT и AMD-V/RVI для ускорения операций с памятью и управления процессором.
- Виртуализация памяти — поддержка гостевой физической памяти, управляемой через EPT (Extended Page Tables) или NPT (Nested Page Tables), что позволяет избежать двойного преобразования адресов.
- Виртуализация устройств — эмуляция стандартных устройств (IDE, SATA, SCSI, virtio, e1000, rtl8139) через QEMU, а также паравиртуализация с помощью драйверов virtio для повышения производительности.
- Миграция на лету (Live Migration) — возможность перемещения работающей виртуальной машины между физическими хостами без прерывания её работы.
- Снапшоты (Snapshots) — создание точек сохранения состояния виртуальной машины (память, диски, состояние процессора) для последующего восстановления.
- Поддержка NUMA — оптимизация размещения гостевых процессоров и памяти для многопроцессорных систем с неоднородным доступом к памяти.
- Поддержка контейнеров — KVM может использоваться совместно с контейнерными технологиями (например, Kata Containers), обеспечивая изоляцию на уровне ядра.
¶Применение
KVM является одним из наиболее распространённых гипервизоров в мире, используемым в различных сферах:
- Корпоративные облачные платформы — KVM является основой для многих облачных инфраструктур, включая OpenStack, oVirt, Proxmox VE, а также коммерческие продукты Red Hat OpenStack Platform и Red Hat Virtualization.
- Виртуализация серверов — в дата-центрах KVM используется для консолидации серверов, снижения энергопотребления и упрощения управления инфраструктурой. По данным отчётов, KVM занимает значительную долю рынка виртуализации серверов, уступая только VMware vSphere.
- Разработка и тестирование — разработчики используют KVM для создания изолированных сред для тестирования программного обеспечения, отладки ядер и эмуляции различных конфигураций.
- Образовательные цели — KVM применяется в учебных заведениях для изучения операционных систем, сетевых технологий и администрирования.
- Домашние и малые серверы — благодаря бесплатности и интеграции с Linux, KVM популярен среди энтузиастов и владельцев небольших серверов.
¶Критика и ограничения
Несмотря на широкое распространение, KVM имеет определённые ограничения и подвергается критике:
- Зависимость от аппаратной поддержки — KVM требует наличия аппаратных расширений виртуализации (Intel VT или AMD-V) на процессоре хоста. На системах без такой поддержки (например, старые процессоры или некоторые ARM-устройства) KVM не работает.
- Производительность ввода-вывода — при использовании эмуляции устройств через QEMU производительность ввода-вывода может быть ниже, чем у гипервизоров с собственными драйверами (например, VMware ESXi). Однако использование паравиртуализации virtio значительно снижает этот недостаток.
- Сложность конфигурации — настройка KVM вручную (без использования инструментов управления) требует глубоких знаний архитектуры Linux и виртуализации, что может быть сложно для начинающих администраторов.
- Отсутствие встроенного управления — KVM не предоставляет собственного графического интерфейса или панели управления; для этого используются сторонние инструменты, такие как virt-manager, oVirt или OpenStack.
¶Интересные факты
- KVM является одним из немногих гипервизоров, полностью интегрированных в ядро основной операционной системы, что позволяет использовать все возможности Linux без дополнительных накладных расходов.
- В 2018 году KVM был сертифицирован для работы с операционной системой Windows 10 и Windows Server 2019 в рамках программы Microsoft Windows Server Virtualization Validation Program (SVVP).
- KVM используется в проекте Google Compute Engine — облачной платформе Google, которая предоставляет виртуальные машины на базе KVM.
- В 2020 году компания Red Hat выпустила Red Hat Enterprise Linux 8, в котором KVM стал единственным поддерживаемым гипервизором.
¶Источники
- Red Hat. «KVM Virtualization in Red Hat Enterprise Linux 8». Red Hat Customer Portal, 2020.
- Linux Kernel Organization. «KVM — Kernel-based Virtual Machine». The Linux Kernel Documentation, 2023.
- QEMU Project. «QEMU User Documentation». QEMU Official Website, 2023.
- OpenStack Foundation. «KVM Hypervisor Support». OpenStack Documentation, 2023.
- IBM. «KVM for IBM z Systems». IBM Knowledge Center, 2022.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


