Tilda Publishing
Привет, любопытный друг. Да, это Tilda. Потому что мы хотим быстро внедрять и управлять решением, а не ждать
в очереди разработчика. Контроль, предсказуемость и отказоустойчивость — наша главная идея.
Подберём типовое или произведем на заказ серверное оборудование, предоставим расчёт и поможем интегрировать в систему.

Заполните форму запроса слева или отправьте описание вашей задачи на почту get@work-system.ru

При отправке письма на почту укажите номер телефона вашего специалиста для обсуждения аналогов оборудования в случае необходимости

KVM-виртуализация в Linux: полный гайд по гипервизору, архитектуре и настройке

Архитектура QEMU-KVM, sizing, установка, сеть и хранилище, сравнение с VMware и Hyper-V, production-чек-лист и FAQ
KVM-виртуализация в Linux — базовая технология для построения серверов виртуализации, VPS-платформ и частных облаков на открытом ПО. Она позволяет запускать изолированные виртуальные машины на Linux-хосте с аппаратным ускорением CPU и памяти. По сути, это способ превратить один физический сервер в десятки независимых виртуальных — каждый со своей ОС, ресурсами и сетью.

Кратко: KVM — модуль ядра Linux, который превращает ОС в гипервизор. Вместе с QEMU и libvirt он образует стек для запуска виртуальных машин с выделенными vCPU, памятью, дисками и сетевыми интерфейсами. Подходит компаниям, которые готовы управлять Linux-инфраструктурой как инженерной платформой. Не подходит тем, кто ищет «коробочный» гипервизор с единым окном поддержки и без Linux-компетенций в команде.

Мы в Work System рассматриваем KVM не как «бесплатную замену» коммерческому гипервизору, а как полноценный инженерный стек: ядро Linux, QEMU, libvirt, сеть, хранилище, резервное копирование и платформа управления. Типичная ошибка возникает ещё на этапе закупки — выбирают сервер только по числу ядер, но не проверяют IOMMU, NUMA-топологию, дисковую подсистему и совместимость с целевой системой управления. А потом удивляются, что «железо мощное, а виртуалки тормозят».

Содержание

Что такое KVM-виртуализация и гипервизор KVM

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

Гипервизор KVM встроен в ядро Linux и задействует аппаратные расширения процессора для выполнения гостевых ОС. Архитектурно KVM часто относят к гипервизорам первого типа — управление гостевыми контекстами происходит на уровне ядра, а Linux-хост имеет прямой доступ к оборудованию. В документации ядра Linux раздел Documentation/virt/kvm/api.rst описывает KVM API как стабильный userspace-интерфейс для управления VM и vCPU, что подтверждает архитектурную позицию KVM как ядрового гипервизора.

Важно разделять термины. В строгом смысле гипервизор KVM — это ядровые модули kvm, kvm_intel или kvm_amd (в Linux модули отображаются именно с подчёркиванием). А вот на практике, когда говорят «KVM-виртуализация серверов», обычно имеют в виду полный стек: KVM в ядре, QEMU для виртуального оборудования, libvirt для управления и внешние инструменты администрирования.

KVM в Linux работает с виртуальными машинами как с обычными процессами хоста. Каждая virtual machine получает vCPU, память, диски, сетевые интерфейсы и набор устройств, но выполнение кода гостевой ОС ускоряется аппаратно. Именно это отличает виртуализацию на KVM от полной программной эмуляции, где CPU-инструкции гостя обрабатываются без прямого аппаратного ускорения — разница в производительности может составлять десятки раз.

В рамках этой статьи мы не приводим публичную долю KVM на рынке серверной виртуализации — ни Gartner, ни IDC не публикуют точный процент. Корректнее говорить не о долях рынка, а о факте широкого применения KVM в Linux-дистрибутивах, OpenStack, Proxmox VE, oVirt и корпоративных платформах на базе открытого ПО.
Можно ли использовать KVM без QEMU?
Технически — да. Модуль KVM предоставляет интерфейс /dev/kvm для любого userspace-процесса, способного создать VM через ioctl. Существуют альтернативные VMM — например, crosvm (Google) и Firecracker (AWS). Однако в production-сценариях серверной виртуализации QEMU остаётся стандартным userspace-компонентом: он поддерживает полный спектр эмулируемых устройств, live migration и совместим с libvirt.

Практический вывод: KVM подходит для сервера, если ваша команда готова проектировать не только гипервизор, но и весь слой управления виртуальными машинами — хранение, сеть, мониторинг и резервное копирование.

Как работает система виртуализации KVM в Linux

KVM работает через модули ядра Linux, которые используют аппаратные режимы виртуализации CPU и предоставляют интерфейс /dev/kvm для пользовательских процессов. Userspace-компонент — обычно QEMU — создаёт VM, vCPU, области памяти и запускает выполнение через ioctl-интерфейсы: KVM_CREATE_VM, KVM_CREATE_VCPU, KVM_SET_USER_MEMORY_REGION, KVM_RUN. По данным документации Linux Kernel на kernel.org, этот API считается стабильным и обратно совместимым — важный фактор для долгосрочных production-инсталляций.

Базовый модуль kvm.ko реализует общую инфраструктуру виртуализации. Для x86 загружается дополнительный модуль: kvm_intel для Intel VT-x или kvm_amd для AMD-V. Эти модули не эмулируют полноценный компьютер — они управляют переходами между хостом и гостевой ОС.

Механика работы KVM строится вокруг VM entry и VM exit. Когда vCPU запускается, процессор входит в гостевой режим (non-root mode) и выполняет код гостевой ОС напрямую. Если гость выполняет привилегированную операцию, обращается к устройству или вызывает исключение — происходит VM exit: процессор сохраняет состояние гостевого vCPU в VMCS (Intel) или VMCB (AMD) и передаёт управление обработчику KVM в хостовом ядре.

Зачем это знать администратору? Количество VM exit напрямую влияет на производительность. Чем реже гостевая ОС вызывает выход в хост, тем ниже overhead. Поэтому virtio-устройства, hugepages и NUMA-привязка важны не «в теории» — они конкретно уменьшают число переключений контекста. На практике разница между правильно и неправильно настроенной VM может достигать 15–30% по latency дисковых операций.

Распределение ресурсов выполняется средствами Linux. vCPU виртуальной машины — это потоки процесса QEMU, которые планировщик Linux размещает на физических ядрах. Память гостя отображается в память хоста, а ускорение трансляции адресов обеспечивают Intel EPT или AMD NPT (Nested Paging). Эти аппаратные функции устраняют необходимость «теневых» страничных таблиц и существенно снижают overhead при работе с памятью.

Типичная ошибка — считать, что установка KVM автоматически даёт предсказуемую производительность. Для нагруженных БД, ERP или VDI критичны NUMA-привязка, hugepages, тип виртуальных дисков, драйверы virtio и ограничения oversubscription по CPU/RAM. Без этих настроек даже мощный сервер вроде Dell PowerEdge R750xa или HPE ProLiant DL380 Gen11 не раскроет свой потенциал под KVM.
Связка QEMU-KVM: аппаратная эмуляция и виртуальные машины
QEMU-KVM — рабочая связка, где KVM ускоряет выполнение гостевого кода, а QEMU создаёт виртуальное оборудование для гостевой ОС. QEMU — user-space процесс, который управляет VM и эмулирует устройства. KVM — ядровой модуль для аппаратной виртуализации CPU и памяти. Вместе они формируют то, что принято называть «KVM-виртуализация» — хотя, строго говоря, это два разных компонента.

В типовой KVM virtual machine QEMU предоставляет дисковые контроллеры, сетевые карты, USB-контроллеры, VGA/display и другие устройства. Без QEMU у KVM не было бы полноценной «машины» с диском, сетью и устройствами ввода-вывода — только голый механизм исполнения кода.

Для снижения накладных расходов применяются virtio-драйверы — паравиртуализированные устройства, работающие через virtqueue. На практике virtio-net, virtio-blk и virtio-scsi уменьшают overhead по сравнению с полной эмуляцией e1000, IDE или других классических устройств. Причина проста: гостевой I/O проходит через shared memory ring buffer, а не через полную эмуляцию регистров PCI-устройства.
Virtio-драйвер
Назначение
Когда использовать
Когда не подходит
virtio-net
Сеть
Любые VM с Linux/Windows (с установленными virtio-драйверами)
Legacy-ОС без поддержки virtio
virtio-blk
Блочный диск
Простые сценарии с одним диском
Когда нужны SCSI-команды, multipath
virtio-scsi
SCSI-контроллер
Production: много дисков, SCSI-команды, TRIM/discard
Лабораторные стенды с одним диском
virtio-fs
Общий доступ к каталогам хоста
Обмен файлами хост-гость без NFS
Изолированные production-среды
Компонент
Где работает
Основная роль
KVM
Ядро Linux
Аппаратное выполнение гостевого кода, управление vCPU и памятью
QEMU
Пространство пользователя
Эмуляция устройств, запуск процесса VM, управление I/O
virtio
Гость + backend хоста
Паравиртуализированные диски, сеть и другие устройства
libvirt
Слой управления
Единый API и модель управления виртуальными машинами
Практический вывод: для производственной QEMU-KVM-виртуализации выбирайте virtio-драйверы везде, где их поддерживает гостевая ОС — особенно для сети и дисков. Использование эмулируемых e1000 или IDE вместо virtio — одна из самых частых ошибок, приводящих к лишнему overhead и жалобам пользователей на «медленные виртуалки».

Системные требования для сервера виртуализации на KVM

Сервер виртуализации на KVM требует процессор с аппаратной виртуализацией, достаточный объём RAM и дисковую подсистему, рассчитанную под профиль виртуальных машин. Минимумы установки RHEL — 2 GB RAM и 8 GB диска — это требования для установки ОС, а не для рабочего хоста виртуализации. Не путайте одно с другим. Sizing для KVM-хоста всегда считается от нагрузки.
Sizing: формулы и пример расчёта
Для сервера под виртуальными машинами ресурсы считают от нагрузки, а не от «рекомендаций на коробке». CPU выбирают по числу физических ядер, частоте, кешам, NUMA-топологии и поддержке расширений виртуализации памяти. RAM считают как сумму памяти гостевых ОС плюс резерв для хоста, сервисов управления и буферов. Диски проектируют по IOPS, latency, типу нагрузки и формату хранения. По данным Red Hat Enterprise Linux Virtualization Deployment Guide, рекомендуется закладывать не менее 2–4 GB RAM на хостовую ОС и сервисы управления сверх суммарного объёма памяти VM.
Формулы оценки ресурсов:
Параметр
Расчёт
Результат
RAM VM
10 VM × 4 GB
40 GB
RAM хоста + буфер
4 GB + 20% от 40
12 GB
Итого RAM
52 GB → 64 GB (ближайший стандартный объём)
vCPU
10 VM × 2 vCPU = 20 vCPU
При oversubscription 2:1 нужно 10 физических ядер
IOPS
10 VM × 50 IOPS × 1.3
~650 IOPS (NVMe закрывает с запасом)
Для офисных сервисов допустим oversubscription CPU 2:1–4:1. Для баз данных и VDI лучше начинать с 1:1–2:1 и проверять latency на пилоте. RAM overcommit в production мы не рекомендуем без тщательного мониторинга — ballooning и swap под нагрузкой приводят к деградации всех VM на хосте.
Проверка аппаратной виртуализации
Проверить поддержку аппаратной виртуализации можно стандартными командами Linux:
lscpu | grep Virtualization

grep -E 'vmx|svm' /proc/cpuinfo

virt-host-validate

kvm-ok    # Ubuntu, пакет cpu-checker
Флаг vmx означает Intel VT-x, флаг svm — AMD-V. Если они отсутствуют, нужно проверить BIOS/UEFI: поддержка может быть выключена на уровне настроек сервера. Бывает обидно — купили двухсокетный сервер, а виртуализация не включена в BIOS по умолчанию.

Если

virt-host-validateпоказывает ошибки по KVM acceleration, проверьте BIOS/UEFI: Intel VT-x/AMD-V и IOMMU могут быть отключены производителем сервера по умолчанию. На серверах HPE ProLiant, Dell PowerEdge и Lenovo ThinkSystem эти параметры находятся в разделах Security или Advanced → Processor Configuration.
IOMMU, PCI passthrough, SR-IOV
Для I/O-виртуализации и передачи устройств напрямую в VM важны Intel VT-d или AMD-Vi. Эти механизмы обеспечивают аппаратную изоляцию и трансляцию DMA, что необходимо для нескольких сценариев:

  • PCI passthrough — прямой доступ VM к GPU, HBA, NVMe-контроллеру
  • SR-IOV — разделение одного физического NIC на несколько виртуальных функций для разных VM с минимальным overhead
  • GPU passthrough — передача графического ускорителя для VDI, рендеринга или ML-задач
NUMA: правила привязки VM
Для серверов с несколькими процессорами критична NUMA-топология. Основное правило: не размазывайте крупные VM по нескольким NUMA-нодам без необходимости. Доступ к «удалённой» памяти другой NUMA-ноды может быть медленнее на 30–50% по сравнению с локальной — зависит от конкретной платформы и числа хопов между нодами. Для баз данных, 1С и VDI привязка VM к одной NUMA-ноде даёт заметное улучшение latency.
Hugepages
Hugepages (2 MB или 1 GB вместо стандартных 4 KB) снижают нагрузку на TLB и уменьшают overhead при работе с большими объёмами памяти VM. Рекомендуются для:
  • VM с 8 GB RAM и более
  • баз данных, ERP, VDI, high-frequency нагрузок

Но есть нюанс. Hugepages резервируются при старте хоста и недоступны для обычных процессов. Неправильный расчёт может привести к нехватке памяти для ОС хоста и сервисов управления.

В наших проектах построения кластеров виртуализации и хранения данных мы начинаем не с выбора гипервизора, а с профиля нагрузки и горизонта роста. Например, в проекте для промышленно-продовольственного кластера «Косино» (дочерняя компания ВТБ Недвижимости) задача была не «поставить гипервизор», а спроектировать платформу на 5 лет: виртуализация, резервное копирование, снапшоты, репликация, дедупликация, кластеризация, нарезка LUN. За 2 недели мы провели сравнительный анализ решений российских и зарубежных производителей и рекомендовали моновендорное решение на базе Huawei FusionServer, которое закрывало весь требуемый функционал — от виртуализации до бэкапов и коммутации. Такой подход снижает риск, что серверы KVM будут «упираться» не в CPU, а в хранилище или сеть.

Практический вывод: для KVM-сервера недостаточно флага VT-x/AMD-V. Проверяйте EPT/NPT, IOMMU, NUMA, сетевые адаптеры, совместимость Linux-драйверов и производительность СХД под реальной нагрузкой.

Быстрый старт: от проверки CPU до первой VM

Этот раздел даёт пошаговый сценарий для базового развёртывания KVM-хоста. Для production-кластеров потребуется дополнительная настройка сети, хранилища, HA и мониторинга — об этом ниже.
Шаг 1. Установка пакетов
Ubuntu/Debian:
sudo apt update

sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
RHEL/Rocky/Alma:
sudo dnf install -y qemu-kvm libvirt virt-install virt-viewer

sudo systemctl enable --now libvirtd
Для отечественных Linux-дистрибутивов — Astra Linux, Альт, РЕД ОС — имена пакетов могут отличаться. Проверяйте документацию конкретного дистрибутива и версии репозитория.
Шаг 2. Проверка модулей и сервисов
lsmod | grep kvm
Ожидаемый вывод: kvm_intel (или kvm_amd) и kvm.
systemctl status libvirtd
Для новых версий libvirt:
systemctl status virtqemud

virsh list --all
Должен показать пустой список VM — значит, всё работает.
Шаг 3. Добавление пользователя в группы
sudo usermod -aG libvirt $USER

sudo usermod -aG kvm $USER
Перелогиньтесь для применения изменений.
Шаг 4. Создание первой VM через virt-install
virt-install \

  --name ubuntu-test \

  --memory 4096 \

  --vcpus 2 \

  --cpu host-passthrough \

  --disk path=/var/lib/libvirt/images/ubuntu-test.qcow2,size=40,bus=virtio,format=qcow2 \

  --network bridge=br0,model=virtio \

  --os-variant ubuntu24.04 \

  --cdrom /iso/ubuntu-24.04-live-server-amd64.iso \

  --graphics vnc \

  --boot uefi
Параметр
Зачем нужен
--cpu host-passthrough
Передаёт гостю возможности CPU хоста; полезно для производительности, но требует осторожности при live migration между хостами с разными CPU
bus=virtio
Использует паравиртуализированный диск вместо эмулируемого IDE
bridge=br0
Подключает VM к сетевому bridge хоста для доступа в L2-сеть
format=qcow2
Удобен для снапшотов и thin provisioning, но может уступать raw по предсказуемости I/O под нагрузкой
Шаг 5. Базовое управление VM
virsh list --all
— список всех VM.

virsh start ubuntu-test
— запуск VM.

virsh autostart ubuntu-test
— автозапуск при загрузке хоста.

virsh dominfo ubuntu-test
— информация о VM.

virsh console ubuntu-test
— подключение к консоли.

virsh shutdown ubuntu-test
— штатное выключение.

virsh destroy ubuntu-test
— принудительная остановка (аналог выдёргивания кабеля питания).

virsh snapshot-create-as ubuntu-test snap1
— создание снапшота.
Типовые ошибки на этапе установки
Проблема
Причина
Решение
Нет /dev/kvm
Модуль не загружен или VT-x/AMD-V выключены в BIOS
modprobe kvm_intel и проверить BIOS
virt-host-validate выдаёт FAIL для IOMMU
IOMMU не включён
Включить VT-d/AMD-Vi в BIOS, добавить intel_iommu=on в GRUB
Permission denied при virsh
Пользователь не в группе libvirt
usermod -aG libvirt $USER
Bridge не виден
Не создан Linux bridge
Настроить br0 через netplan/nmcli

Сеть в KVM: NAT, bridge, VLAN, SR-IOV

Сеть — один из ключевых элементов KVM-инфраструктуры. И, вероятно, самый недооценённый. Неправильная настройка сети приводит к проблемам с доступностью VM, нестабильности live migration и узким местам в production.
Режим сети
Когда использовать
Ограничения
NAT (libvirt default)
Тестовые VM, лаборатории
VM не доступны из внешней сети напрямую без проброса портов
Linux bridge
Серверные VM в общей L2-сети
Требует настройки bridge на хосте; весь трафик проходит через CPU хоста
VLAN (802.1Q)
Сегментация production-сетей
Нужно согласование с коммутаторами; настройка sub-interfaces
Open vSwitch
Программно-определяемая сеть, OpenStack
Сложнее в эксплуатации, чем Linux bridge
SR-IOV
Высокая производительность сети, VPS-платформы
Требует IOMMU, поддержки NIC и аккуратной изоляции; ограничивает live migration
Базовые команды проверки:
virsh net-list --all
virsh net-info default

brctl show или bridge link show

Рекомендации для production:
  • Выделяйте отдельные сети: management, storage/replication, live migration, VM traffic.
  • Используйте bonding/LACP для отказоустойчивости — потеря одного линка не должна ронять кластер.
  • Для storage-сети рассмотрите jumbo frames (MTU 9000) при использовании iSCSI/NFS.
  • Мониторьте network drops и latency на каждом сегменте — проблемы с сетью часто маскируются под «тормоза дисков».

Хранилище для KVM: выбор storage backend

Выбор хранилища определяет производительность, отказоустойчивость и удобство эксплуатации KVM-кластера. Это тот случай, когда экономия на storage обходится дороже всего.
Backend
Когда выбирать
Риски / ограничения
raw-файл
Максимальная простота и предсказуемость I/O
Нет встроенных снапшотов, thin provisioning
qcow2
Лаборатории, снапшоты, тонкое выделение, удобство работы
Возможен overhead на запись; важна настройка cache/discard
LVM-thin
Плотное размещение VM на локальных дисках
Нужен контроль overprovisioning; усложняет backup
iSCSI
Блочное shared storage для кластера
Требует стабильной выделенной storage-сети; multipath
NFS
Простое shared storage для небольших кластеров
Чувствительно к latency и настройкам сети; зависит от NFS-сервера
Ceph/RBD
Кластеры, отказоустойчивость, масштабирование
Высокая сложность эксплуатации; минимум 3 ноды
Практические рекомендации:
  • Для тестов и лабораторий используйте qcow2 на локальных NVMe.
  • Для production без shared storage — LVM-thin на NVMe с регулярным мониторингом заполнения.
  • Для кластеров с live migration необходим shared storage: iSCSI, NFS или Ceph/RBD.
  • Снапшоты qcow2 удобны для разработки, но в production при большом числе снапшотов (более 3–5 в цепочке) деградирует производительность чтения.
  • Для БД и нагруженных 1С-серверов предпочтительны raw или LVM с предсказуемым I/O.

Преимущества и недостатки KVM для сервера

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

KVM использует sVirt в связке libvirt и SELinux для изоляции VM: каждой виртуальной машине назначается отдельный security label, а процессы QEMU ограничиваются политиками MAC (Mandatory Access Control). В Ubuntu для KVM/libvirt реализована интеграция с AppArmor-профилями, ограничивающими доступ

qemu-system-*

к файлам, сокетам и путям. Это не «галочка для аудита» — это реальный барьер, который усложняет VM escape даже при уязвимости в QEMU.

Преимущества KVM для сервера:
  • Производительность при аппаратном ускорении приближается к bare-metal для многих CPU-bound нагрузок — реальный overhead зависит от профиля нагрузки, virtio, NUMA и storage, но для типичных серверных задач составляет 2–5%.
  • KVM встроен в Linux и использует зрелые драйверы, сетевой стек, storage-подсистему и механизмы безопасности ОС.
  • KVM и QEMU распространяются как open source — нет лицензионных отчислений за сам гипервизор.
  • Стек хорошо интегрируется с libvirt, OpenStack, Proxmox VE, oVirt, KubeVirt и системами автоматизации вроде Ansible и Terraform.
  • Можно запускать Linux, Windows и другие гостевые ОС при наличии поддерживаемых драйверов.

Недостатки KVM для сервера:
  • Базовая настройка из консоли требует уверенного знания Linux, сети, storage и libvirt — порог входа выше, чем у «коробочных» решений.
  • Для удобного управления нужны дополнительные инструменты: virt-manager, Cockpit, Proxmox VE, oVirt, OpenStack.
  • Качество эксплуатации зависит от дисциплины обновлений ядра, QEMU, libvirt и политик безопасности.
  • Для HA, live migration, backup и мониторинга нужен отдельный архитектурный слой — «из коробки» этого нет.
  • Нет единого «окна поддержки» — TCO складывается из поддержки Linux, платформы управления, backup, мониторинга, обучения администраторов и времени на интеграцию.

Типичная ошибка — считать KVM «бесплатным VMware». Сам гипервизор действительно не требует отдельной лицензии, но совокупная стоимость владения включает компетенции команды, инструменты управления, коммерческую поддержку дистрибутива и время на проектирование. Иногда, вернее сказать — нередко, TCO KVM-кластера с учётом всех затрат оказывается сопоставимым с коммерческими альтернативами.
Когда KVM не лучший выбор
KVM может быть не оптимален, если:
  • команда не имеет Linux-компетенций и нет плана на обучение;
  • нужен единый коммерческий стек с поддержкой от одного вендора;
  • критична совместимость с уже купленными VMware-инструментами и лицензиями;
  • инфраструктура полностью построена вокруг Windows Server и System Center;
  • нет ресурсов для эксплуатации storage, backup, мониторинга и обновлений;
  • требуется платформа с конкретным сертификатом ФСТЭК, а подходящее KVM-решение его не имеет.

Практический вывод: KVM оптимален, когда компания готова управлять Linux-стеком как инженерной платформой. Если нужна «коробочная» виртуализация с минимальным вовлечением в Linux — стоит рассмотреть коммерческие альтернативы или отечественные платформы с коммерческой поддержкой.

Сравнение KVM с другими гипервизорами

KVM отличается от Xen, VMware ESXi и Microsoft Hyper-V прежде всего архитектурой и моделью управления. KVM использует ядро Linux как гипервизор. Xen выносит гипервизор в микроядерный слой с Dom0. VMware ESXi поставляется как коммерческий bare-metal гипервизор. Hyper-V тесно связан с Windows Server. Какой подход лучше? Зависит от контекста.

Xen использует microkernel-подобный гипервизор, где Dom0 отвечает за управление устройствами и гостевыми доменами. KVM работает как часть ядра Linux и использует стандартный стек драйверов, что даёт прямой доступ к обновлениям kernel-tree и ускоряет поддержку нового серверного оборудования — при условии, что драйверы есть в Linux.
Критерий
KVM
Xen
VMware ESXi
Microsoft Hyper-V
Архитектура
Модуль ядра Linux
Микроядерный гипервизор + Dom0
Bare-metal гипервизор VMware
Гипервизорный слой в экосистеме Windows
Основная среда
Linux
Linux/Dom0 + Xen
VMware vSphere
Windows Server, Microsoft stack
Управление
libvirt, Proxmox VE, oVirt, OpenStack
Xen tools, XAPI, платформы поверх Xen
vCenter, vSphere
Windows Admin Center, System Center, PowerShell
Лицензирование
Open source, GPL/LGPL
Open source + коммерческие продукты
Коммерческая подписка/лицензия
В составе лицензируемых продуктов Microsoft
HA из коробки
Нет (через Proxmox, oVirt, OpenStack, Pacemaker)
Через XenServer/XCP-ng
Да (vSphere HA)
Да (Failover Clustering)
Live migration
Да (через libvirt/платформу)
Да
Да (vMotion)
Да (Live Migration)
Backup API
Нет единого (через platform-specific интеграции)
Platform-specific
VADP
VSS, Hyper-V Integration Services
Сильная сторона
Гибкость, Linux-драйверы, открытость
Разделение гипервизора и Dom0
Зрелая enterprise-экосистема
Интеграция с Windows-инфраструктурой
KVM и Xen часто сравнивают по модели изоляции. Xen даёт более явное разделение между гипервизором и управляющим доменом, но требует администрировать Dom0 и учитывать его роль в доступе к устройствам. KVM проще встраивается в стандартный Linux-хост: драйверы, сеть, storage и безопасность обслуживаются привычными средствами ОС. Для команд с сильными Linux-компетенциями это скорее плюс.

С VMware ESXi сравнение упирается не только в гипервизор, но и в экосистему. VMware vSphere даёт зрелые инструменты управления, миграции и эксплуатации из одного вендорского стека. KVM требует собрать аналогичный слой из Linux, libvirt, платформы управления, хранения, backup и мониторинга — зато даёт больше свободы в выборе компонентов и не привязывает к одному вендору.

С Hyper-V выбор часто определяется текущей ИТ-средой. Если инфраструктура построена вокруг Windows Server, Active Directory и продуктов Microsoft — Hyper-V может быть проще в эксплуатации. Если приоритет — Linux, открытое ПО, отечественные Linux-дистрибутивы или суверенная инфраструктура — KVM вписывается в архитектуру естественнее.

В статье мы намеренно не приводим единый сопоставимый набор лимитов vCPU/vRAM для всех платформ. Сравнивать масштабируемость нужно по документации конкретной платформы, версии и edition, а не по абстрактному названию гипервизора.
Сценарии миграции на KVM
При переходе с VMware или Hyper-V на KVM учитывайте несколько ключевых моментов:

  • Конвертация образов: VMDK → qcow2/raw через qemu-img convert; VHDX → qcow2/raw аналогично. Для крупных дисков (500 GB+) конвертация может занять часы — планируйте окно обслуживания.
  • Драйверы: после конвертации необходимо установить virtio-драйверы в гостевой ОС. Для Windows есть готовый ISO с драйверами от Fedora Project.
  • Лицензии Windows: OEM-лицензии могут быть привязаны к предыдущему гипервизору — требуется проверка условий лицензирования Microsoft.
  • Сеть и backup: сетевые настройки и интеграции backup-систем нужно перенастраивать.
  • Тестирование: обязательно проводите пилотную миграцию 1–2 VM перед массовым переездом.

Практический вывод: сравнение KVM с другими гипервизорами должно начинаться не с вопроса «что быстрее», а с вопросов об экосистеме, лицензировании, компетенциях команды, требованиях к HA, backup, миграции и поддержке оборудования.

Управление виртуальными машинами и VPS с KVM

Управление виртуальными машинами KVM обычно строится вокруг libvirt, virsh и GUI-платформ, а в крупных средах — вокруг Proxmox VE, oVirt или OpenStack. Libvirt предоставляет единый API управления доменами, скрывая различия между KVM и другими гипервизорами.

На базовом уровне libvirt описывает виртуальную машину как domain: CPU, память, диски, сеть, устройства, параметры запуска и снапшоты. Утилита virsh управляет жизненным циклом VM через этот API. Команда virsh start запускает виртуальную машину, virsh shutdown отправляет штатное выключение, virsh destroy принудительно останавливает VM, а snapshot-create-as создаёт снапшот. Для автоматизации также используют virt-install, cloud-init, Ansible, Terraform и API выбранной платформы управления.

Для небольших стендов подходят

virt-manager

и Cockpit Machines. Первый работает через GTK-интерфейс и libvirt — удобен для визуального создания и настройки VM, но не масштабируется на десятки хостов. Cockpit Machines даёт веб-управление Linux-сервером и виртуальными машинами через браузер — минимальный порог входа.

Для кластеров чаще выбирают платформенный уровень:
Инструмент
Где уместен
Что закрывает
virsh/libvirt
Автоматизация, CLI, инженеры Linux
Жизненный цикл VM, XML-конфигурации, снапшоты
virt-manager
Небольшие среды, тестовые стенды
GUI для создания и настройки VM
Cockpit Machines
Администрирование через браузер
Базовое веб-управление KVM-хостом
Proxmox VE
SMB, лаборатории, средние кластеры
Web UI, кластер, HA, backup-интеграции
oVirt
Корпоративная виртуализация
Централизованное управление KVM-кластерами (уточняйте актуальность поддержки для новых внедрений)
OpenStack
Частные и публичные IaaS
Масштабная оркестрация compute, network, storage
Критерии выбора платформы управления
Критерий
virsh/libvirt
Proxmox VE
oVirt
OpenStack
Число хостов
1–3
3–30
10–100+
50+
HA
Через Pacemaker/скрипты
Встроенный
Встроенный
Встроенный
Self-service портал
Нет
Нет (но есть API)
Да
Да
RBAC
Через Linux/polkit
Да
Да
Да (Keystone)
Требования к команде
Linux-инженер
Linux-инженер
Опытная команда
Зрелая DevOps/Ops-команда
OpenStack использует KVM как один из основных гипервизоров для IaaS. Сервис

nova-compute

управляет жизненным циклом VM на KVM-хостах, Neutron отвечает за сети, Cinder — за блочное хранилище, Glance — за каталог образов. Такая архитектура подходит для масштабных облачных платформ, но требует зрелой команды эксплуатации — OpenStack не прощает ошибок в проектировании.

«Чистый libvirt» в production возможен, но потребует собственной обвязки: скрипты backup, мониторинг через Prometheus/Zabbix, RBAC через Linux-группы и polkit, регламенты обновлений. Для одного-двух хостов это допустимо. Для кластера — лучше сразу использовать платформу.

VPS с KVM используют ту же технологическую основу: каждому виртуальному серверу выделяется собственная гостевая ОС, vCPU, память, диск и сеть. В отличие от контейнерного хостинга, на виртуальном сервере с KVM работает отдельное ядро гостевой ОС. Это обеспечивает более строгую изоляцию: компрометация одного контейнера через уязвимость ядра может затронуть соседей, тогда как VM с собственным ядром изолированы на уровне гипервизора. Для хостинг-провайдеров и корпоративных VPS-платформ это принципиальное отличие.

Практический вывод: для одного-двух KVM-хостов достаточно libvirt, virsh и Cockpit. Для производственного кластера лучше сразу выбирать платформу управления, учитывать резервное копирование, мониторинг, live migration, сеть хранения и модель доступа администраторов.

Production-эксплуатация KVM: HA, live migration, backup, мониторинг

Запуск KVM в production — это не только настройка гипервизора, но и архитектура вокруг него. Ниже — чек-лист, который мы используем в проектах Work System. Он не претендует на полноту для каждого конкретного случая, но покрывает основные точки, где обычно «ломается».
Чек-лист production KVM
Сеть и инфраструктура:
  • Есть отдельная сеть управления (management).
  • Есть отдельная storage-сеть или QoS для трафика СХД.
  • Есть отдельная сеть для live migration (если применяется).
  • Настроен bonding/LACP для критичных интерфейсов.

Live migration:
  • Обеспечена совместимость CPU между хостами кластера (одинаковые stepping или host-model/host-passthrough с оговорками).
  • Используется shared storage или репликация (iSCSI, NFS, Ceph).
  • PCI passthrough/SR-IOV осознанно ограничивают live migration — учтено в архитектуре.
  • Протестирована миграция под нагрузкой перед запуском в production.

Резервное копирование:
  • Определены RPO/RTO для каждого класса VM.
  • Настроены резервные копии VM (image-level или agent-based).
  • Снапшоты не используются как единственный бэкап — они не заменяют полноценную резервную копию.
  • Проведён тест восстановления. Backup, который не проверен восстановлением, не является backup'ом.

Мониторинг:
  • Настроен мониторинг CPU steal/ready на хостах.
  • Мониторится disk latency и IOPS (на уровне хоста и VM).
  • Отслеживается RAM pressure и использование hugepages.
  • Мониторятся network drops, retransmits и latency по сегментам.
  • Есть алерты на деградацию хранилища и потерю связности.

Безопасность и обновления:
  • Описан порядок обновления ядра, QEMU и libvirt (rolling update или maintenance window).
  • Ограничен доступ администраторов через RBAC/группы/polkit.
  • Включён SELinux/AppArmor с профилями для QEMU.
  • Ограничен доступ к libvirt socket.
  • Разделены хранилища ISO, образов VM и backup.
  • Проверены права на /var/lib/libvirt/images.
Hardening KVM-хоста
Минимальный набор мер защиты, который мы рекомендуем для любого production-хоста:
  • Не запускайте QEMU-процессы от root без необходимости — libvirt по умолчанию использует выделенного пользователя.
  • Используйте SELinux (RHEL/Alma/Rocky) или AppArmor (Ubuntu) с профилями sVirt — каждая VM получает отдельный security label.
  • Не давайте VM лишние USB/PCI-устройства — каждое passthrough-устройство расширяет поверхность атаки.
  • Для PCI passthrough включайте IOMMU и проверяйте группы изоляции — устройства в одной группе IOMMU не изолированы друг от друга.
  • Регулярно обновляйте QEMU и libvirt — уязвимости в эмуляторе устройств являются основным вектором VM escape.
Дисклеймер: Если KVM-инфраструктура используется для обработки персональных данных (152-ФЗ), в составе объектов КИИ (187-ФЗ) или в контуре, подлежащем аттестации по требованиям ФСТЭК, необходимо учитывать дополнительные требования к сертификации платформы виртуализации, средствам защиты информации, сегментации, журналированию и разграничению доступа. Конкретные требования определяются классом защищённости и моделью угроз.

KVM и импортозамещение

Для российского корпоративного сектора KVM — одна из ключевых технологий импортозамещения в области серверной виртуализации. Особенно в контексте ухода VMware из России и неопределённости с лицензированием Broadcom.

Варианты KVM-решений в российской инфраструктуре:
  • Чистый KVM/libvirt на отечественных Linux-дистрибутивах (Astra Linux, Альт, РЕД ОС) — максимальная гибкость, но требует сильной команды.
  • Отечественные платформы виртуализации на базе KVM — ряд российских вендоров предлагают платформы управления, включённые в реестр российского ПО, с коммерческой поддержкой и сертификатами ФСТЭК.
  • Proxmox VE / OpenStack — open-source платформы, которые можно развернуть на отечественном оборудовании и ОС, но они не являются российским ПО в смысле реестра.

Критерии для закупочного ТЗ:
  • Совместимость с конкретными моделями CPU, NIC, HBA, SSD/NVMe — не «поддерживает x86», а проверенная совместимость с конкретным железом.
  • Наличие коммерческой поддержки с SLA.
  • Поддержка HA, live migration, backup на уровне платформы.
  • Совместимость с Windows-гостями (для 1С, терминальных серверов).
  • Документация и программа обучения администраторов.
  • Горизонт масштабирования — сколько хостов, сколько VM через 3–5 лет.

Аналогичный подход к планированию мы применили в проекте для КазКонтракт — логистического провайдера, где за 1 месяц был создан отказоустойчивый кластер 1С и СУБД на базе оборудования Dell. Задача усложнялась ограниченным бюджетом и уходом зарубежных вендоров, что потребовало проработки решений с учётом отечественных альтернатив. В результате средний показатель исполнения задач в компании сократился на 50% — и это при том, что бюджет проекта был существенно ниже первоначальных ожиданий заказчика.

Типовые ошибки при внедрении KVM

Ошибка
Последствие
Как избежать
Выбрать сервер только по числу ядер
Узкое место в storage или сети
Делать sizing CPU/RAM/IOPS/сеть
Использовать e1000/IDE вместо virtio
Лишний overhead на эмуляцию
Ставить virtio-драйверы в гостевую ОС
Не проверить IOMMU
Не работает passthrough/SR-IOV
Проверять BIOS/UEFI и группы IOMMU
Не учитывать NUMA
Нестабильная latency, деградация под нагрузкой
Привязывать крупные VM к NUMA-нодам
Считать снапшоты бэкапами
Потеря данных при сбое хоста
Настроить полноценное резервное копирование
RAM overcommit без мониторинга
Swap и деградация всех VM на хосте
Мониторить memory pressure, не overcommit'ить в production
Не тестировать live migration
Миграция падает в production
Тестировать под нагрузкой до production
Смешивать storage/management/VM трафик
Нестабильная сеть под нагрузкой
Разделять сети по ролям
Не обновлять QEMU/libvirt
Уязвимости VM escape
Регулярные обновления с тестированием
Не планировать рост на 3–5 лет
Необходимость перестройки через год
Sizing с запасом, горизонт масштабирования

FAQ: часто задаваемые вопросы о KVM