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

KVM

KVM (сокр. от англ. Kernel-based Virtual Machine, виртуальная машина на основе ядра) — это модуль ядра операционной системы Linux, реализующий аппаратно-ускоренную виртуализацию. KVM позволяет запускать на одном физическом сервере несколько изолированных виртуальных машин (гостевых систем) с различными операционными системами, используя аппаратные возможности процессоров (Intel VT-x и AMD-V). KVM является открытым программным обеспечением и входит в состав основного ядра Linux.

История

Разработка KVM началась в 2006 году израильской компанией Qumranet. Первая версия модуля была представлена в 2006 году, а в 2007 году код KVM был включён в основное ядро Linux (версия 2.6.20). Основной целью создания KVM было предоставление полноценной, высокопроизводительной платформы виртуализации, интегрированной непосредственно в ядро операционной системы, что обеспечивало более тесную интеграцию с системой и лучшую производительность по сравнению с решениями, работающими в пространстве пользователя.

В 2008 году компания Red Hat приобрела Qumranet, после чего KVM стал ключевым компонентом стратегии виртуализации Red Hat. В последующие годы KVM получил широкое распространение в корпоративной среде и в облачных инфраструктурах, став основой для многих коммерческих и открытых продуктов.

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

Модуль ядра

KVM реализован в виде загружаемого модуля ядра Linux (kvm.ko). Этот модуль предоставляет интерфейс для управления виртуальными машинами через специальные системные вызовы. KVM использует аппаратные возможности процессоров для ускорения операций виртуализации, таких как выполнение привилегированных инструкций гостевой системы и управление памятью.

Пространство пользователя

KVM сам по себе не предоставляет полной функциональности для создания и управления виртуальными машинами. Для этого используется утилита qemu-kvm (или просто QEMU), которая эмулирует устройства (например, диски, сетевые карты, графические адаптеры) и управляет жизненным циклом виртуальной машины. QEMU взаимодействует с модулем KVM через интерфейс /dev/kvm, передавая ему управление выполнением гостевого кода.

Процесс виртуализации

При запуске виртуальной машины QEMU создаёт процесс в пространстве пользователя. Этот процесс открывает устройство /dev/kvm и создаёт виртуальную машину. Затем QEMU выделяет память для гостевой системы и загружает в неё образ операционной системы. После этого управление передаётся модулю KVM, который переключает процессор в режим гостевой системы. Гостевая система выполняется непосредственно на физическом процессоре, но все привилегированные инструкции перехватываются модулем KVM и эмулируются в пространстве пользователя с помощью QEMU.

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

Аппаратная поддержка

KVM требует наличия процессора с поддержкой аппаратной виртуализации (Intel VT-x или AMD-V). Без этой поддержки работа KVM невозможна. Аппаратная виртуализация позволяет изолировать выполнение гостевых систем и минимизировать накладные расходы на эмуляцию.

Поддержка операционных систем

KVM поддерживает широкий спектр гостевых операционных систем, включая различные дистрибутивы Linux, Windows (начиная с Windows XP), FreeBSD, Solaris и другие. Для каждой гостевой системы может потребоваться установка драйверов (virtio) для повышения производительности ввода-вывода.

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

KVM использует аппаратную поддержку виртуализации памяти (EPT для Intel и NPT для AMD) для управления памятью гостевых систем. Это позволяет эффективно отображать виртуальные адреса гостевой системы на физическую память сервера.

Миграция

KVM поддерживает живую миграцию (live migration) — перемещение работающей виртуальной машины с одного физического сервера на другой без прерывания её работы. Это важная функция для обеспечения высокой доступности и балансировки нагрузки.

Управление и автоматизация

Для управления KVM используются различные инструменты, такие как virsh (часть библиотеки libvirt), virt-manager (графический интерфейс) и oVirt (платформа управления виртуализацией). Эти инструменты позволяют создавать, настраивать, запускать, останавливать и мигрировать виртуальные машины.

Применение

Серверная виртуализация

KVM широко используется для консолидации серверов. На одном физическом сервере можно запустить несколько десятков виртуальных машин, что позволяет эффективно использовать аппаратные ресурсы и снизить затраты на оборудование.

Облачные вычисления

KVM является основой для многих облачных платформ, включая OpenStack, Amazon Web Services (AWS) и Google Cloud Platform (GCP). В этих платформах KVM используется для создания и управления виртуальными машинами, предоставляемыми пользователям.

Разработка и тестирование

KVM используется разработчиками для создания изолированных сред для тестирования программного обеспечения. Виртуальные машины можно быстро создавать, настраивать и удалять, что ускоряет процесс разработки.

Образование и обучение

KVM применяется в учебных заведениях для обучения студентов основам виртуализации, администрирования операционных систем и сетевым технологиям.

Сравнение с другими решениями

KVM и VMware vSphere

VMware vSphere — коммерческая платформа виртуализации, которая предоставляет более широкий набор функций для управления и автоматизации, чем KVM. Однако KVM является открытым и бесплатным решением, что делает его привлекательным для организаций с ограниченным бюджетом.

KVM и Hyper-V

Hyper-V — гипервизор от Microsoft, встроенный в операционные системы Windows Server. Hyper-V хорошо интегрируется с экосистемой Microsoft, но KVM является более гибким и распространённым в среде Linux.

KVM и Xen

Xen — ещё один гипервизор с открытым исходным кодом. В отличие от KVM, Xen использует паравиртуализацию, которая требует модификации гостевых операционных систем. KVM, напротив, использует полную виртуализацию, что упрощает поддержку немодифицированных гостевых систем.

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

KVM обеспечивает высокий уровень изоляции между виртуальными машинами. Каждая гостевая система работает в собственном адресном пространстве и не имеет прямого доступа к ресурсам других виртуальных машин или хост-системы. Однако, как и любая система виртуализации, KVM может быть подвержен атакам, направленным на выход из гостевой системы (escape). Разработчики KVM постоянно работают над устранением уязвимостей и улучшением безопасности.

Недостатки и ограничения

Интересные факты

Источники

  1. Документация ядра Linux: KVM.
  2. Официальный сайт проекта KVM.
  3. Книга «Virtualization with KVM» (Red Hat).
  4. Статья «KVM: Kernel-based Virtual Machine» (Linux Foundation).

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

На главную BFOmetr →