KVM — гипервизор в ядре Linux, на котором работают публичные облака и большинство российских платформ виртуализации. Разбираем, из чего состоит KVM-виртуализация, какие операционные системы в ней работают и где проходит граница между ядром KVM и сервисами платформы.
Что такое KVM
KVM (Kernel-based Virtual Machine) — модуль ядра Linux, который превращает его в гипервизор первого типа. Сервер с Linux и загруженным KVM запускает виртуальные машины непосредственно на оборудовании: каждая машина — отдельный процесс, которому ядро выделяет процессорное время и память.
KVM опирается на аппаратную виртуализацию процессора — расширения Intel VT-x и AMD-V. Виртуальная машина выполняет инструкции напрямую на процессоре, гипервизор вмешивается только в привилегированные операции. Подробно этот механизм разобран в статье Что такое гипервизор.
Из чего состоит KVM-виртуализация
Под «KVM» часто понимают связку из трёх разных компонентов:
| Компонент | Что делает |
|---|---|
| KVM | Модуль ядра: виртуализация процессора и памяти, изоляция машин |
| QEMU | Эмуляция устройств: диски, сетевые адаптеры, USB, видеоадаптер, прошивка |
| libvirt | Слой управления: API и утилиты для запуска и настройки машин |
Ядро — только KVM. QEMU и libvirt — обвязка вокруг него, и именно её чаще всего дорабатывают или заменяют разработчики платформ. Поэтому два продукта «на KVM» могут заметно отличаться по возможностям: ядро у них общее, слой управления — разный.
Для производительности в гостевые системы ставятся паравиртуальные драйверы VirtIO: с ними диск и сеть работают не через эмуляцию физического устройства, а через прямой канал с гипервизором.
Какие операционные системы работают в KVM
KVM — система виртуализации на Linux, но гостевые операционные системы могут быть любыми, для которых есть драйверы: Windows и Windows Server, дистрибутивы Linux, включая российские — Astra Linux, RED OS, Альт, ROSA. На одном сервере одновременно работают машины с разными ОС.
В платформе Inscale в качестве гостевых поддерживаются Windows начиная с Windows 7 и Linux-системы, включая Astra Linux 1.7.6 и выше; для Windows драйверы VirtIO и гостевой агент устанавливаются из встроенного мастера.
Почему промышленные платформы строят на KVM
- Ядро развивает весь мир. Над KVM работают сообщество Linux и крупнейшие ИТ-компании: уязвимости закрываются быстро, поддержка новых процессоров и оборудования появляется сразу.
- Совместимость с оборудованием. Серверы, сетевые карты, системы хранения сотен производителей поддерживаются на уровне ядра Linux.
- Проверено масштабом. На KVM построены публичные облака; для ядра гипервизора это главный тест надёжности.
Писать собственное ядро гипервизора заново — годы работы и постоянная гонка за поддержкой нового оборудования. Поэтому вопрос к российской платформе виртуализации звучит не «KVM или своё ядро», а «что построено поверх KVM».
Российский гипервизор Inscale: что в основе и что развивает команда
Inscale — гипервизор первого типа в составе Debian-дистрибутива. Он устанавливается на «голое железо» с ISO-образа и сразу разворачивает серверную виртуализацию и VDI. В основе слоя виртуализации — KVM/QEMU с доработками команды. Поверх него Inscale развивает собственные сервисы управления, сеть и протокол доставки рабочих столов:
- Работа с устройствами. Подключение дисков и сетей, проброс USB, автообнаружение томов на iSCSI и Fibre Channel, добавление дисков, процессора и памяти без остановки машины.
- Уровень управления. Центральный сервер — оркестратор, через который идут все команды к гипервизору. Управляющий слой хранит историю событий (Event Sourcing): по ней восстанавливается состояние управления, ведётся аудит изменений, незавершённая операция возвращается к исходному состоянию. Центральный сервер работает в нескольких экземплярах с кворумом.
- Host-контроллер. Службы на каждом сервере, отвечающие за низкоуровневую работу с виртуализацией: запуск машин, диски, сеть, диагностика.
- Отказоустойчивость. При отказе сервера его виртуальные машины автоматически перезапускаются на доступных узлах кластера; для этого нужны общее хранилище и запас ресурсов на оставшихся узлах.
- Балансировка. Размещение машин по серверам в двух режимах — максимальной производительности и максимальной плотности.
- VDI. Протокол доставки рабочих столов и встроенный шлюз внешнего доступа с аутентификацией и политиками подключения.
Все службы платформы выведены в интерфейс: администратор видит их состояние, читает журналы и перезапускает службу сам. Работа начинается с одного сервера с локальными дисками; серверы в кластере могут быть разной конфигурации. Из чего состоит платформа целиком — в статье Российская система виртуализации и в документации.
Перенос виртуальных машин в KVM из других гипервизоров
Формат дисков у гипервизоров разный, но машины переносимы. В Inscale диск из другой платформы виртуализации загружается при создании или изменении виртуальной машины: платформа конвертирует его в свой формат и подключает к машине. Так переносят в первую очередь золотые образы VDI, чтобы не настраивать их заново. Порядок переезда — в статьях Миграция с VMware и Миграция с Hyper-V.
Итог
KVM-виртуализация — это гипервизор в ядре Linux плюс обвязка для устройств и управления. Ядро общее у большинства платформ, а отличаются они тем, что построено поверх: уровнем управления, отказоустойчивостью, работой с устройствами и удобством эксплуатации. В Inscale в основе — KVM/QEMU с доработками команды, а сервисы управления, сеть и протокол доставки рабочих столов — собственные.
Хотите оценить платформу на своей инфраструктуре — запросите демо.
Гипервизор Inscale на базе KVM.