Настройка виртуализации KVM/QEMU на Linux
Иногда bare metal упирается в стоимость или гибкость — и тогда приходит KVM/QEMU. Клиенты часто приходят с проблемой: "Хотим виртуализацию, но без привязки к вендору и с полным контролем". Мы настраиваем KVM/QEMU под ключ, вписывая его в ваш стек: Terraform, Ansible, GitOps, Prometheus. Без GUI, только CLI и API — максимальная производительность и нулевые лицензии. За последние 5 лет мы реализовали более 50 проектов виртуализации на базе KVM — от небольших лабораторий до продуктовых кластеров на 200+ виртуальных машин. Средняя экономия бюджета по сравнению с коммерческими гипервизорами — около 40% за счёт отсутствия лицензионных отчислений.
Почему KVM/QEMU выбирают для продакшена?
Proxmox удобен, но его обновления и лицензия (Community vs Enterprise) могут не подойти строгим средам. KVM/QEMU — это модуль ядра Linux: вы получаете нативную производительность, а не слой абстракции. Согласно документации Red Hat, с VirtIO гости работают на 95–98% от bare metal. Миграция live-migration, балансировка CPU через virsh vcpupin, SLO под 99.9% — всё это доступно «из коробки» без дополнительных надстроек. Например, в одном из проектов мы заменили VMware vSphere на KVM — затраты на лицензии упали в 5 раз, а производительность приросла на 12% благодаря прямому доступу к ядру.
Как обеспечить отказоустойчивость KVM?
Для высокодоступных сред используем комбинацию live-migration и разделяемого хранилища (NFS, Ceph). Настройка блокировки по схеме "2-3 хоста + Quorum" через corosync/pacemaker. Среднее время восстановления (RTO) при отказе узла — не более 15 минут. План бэкапов: снапшоты qcow2 каждые 4 часа, полный бэкап раз в сутки на отдельный сервер. Для критических ВМ настраиваем автоматический перезапуск на соседнем хосте.
Что мы делаем в рамках настройки KVM/QEMU
- Аудит железа: проверка поддержки VT-x/AMD-V, IOMMU, NUMA. Оптимизируем расположение vCPU и памяти. В типовом сервере с 2 сокетами по 16 ядер и 256 ГБ RAM можно разместить до 30 средне-нагруженных ВМ.
- Установка и конфигурация: qemu-kvm, libvirt-daemon, bridge-utils, virtinst. Настройка дефолтной сети (NAT или bridge).
- Сеть: создание bridge-интерфейсов, VLAN (bridge per VLAN), Open vSwitch по желанию. Гарантируем NetworkPolicy и изоляцию. Пример: для микросервисной архитектуры организуем по одному bridge на каждый проект.
- Хранилища: qcow2 с cache=none,io=native, LVM thin provisioning. Подключаем NFS/Ceph для live-migration.
- Шаблоны ВМ: cloud-init, образы Ubuntu 22.04 LTS, Debian 12, CentOS Stream 9. Всё через virt-install или Terraform.
- Мониторинг: Prometheus + libvirt_exporter, Grafana дашборды. Метрики: CPU steal, disk latency, memory ballooning.
- Бэкапы: virt-backup или rsync снапшотов. RPO — 1 час, RTO — 15 минут.
Как настроить мониторинг KVM?
Устанавливаем libvirt_exporter, прикручиваем к Prometheus. На Grafana есть готовые дашборды. Ключевые метрики:
-
kvm_domain_info— состояние гостей -
kvm_domain_cpu_time_seconds— steal-время -
kvm_domain_balloon_current_bytes— утечки памяти
Alerting по MTTR и SLO. Runbook: если steal выше 10% — проверяем CPU pinning или нагрузку соседних ВМ.
Сетевой bridge для ВМ
Создаём Linux bridge так:
# /etc/netplan/01-bridge.yaml (Ubuntu)
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
bridges:
br0:
interfaces: [enp3s0]
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
parameters:
stp: false
forward-delay: 0
netplan apply
Для VLAN-тегированного трафика создаём br-vlan300 поверх enp3s0.300 — каждый VLAN получает свой bridge, ВМ подключаются к нужному.
Создание ВМ через qemu-system и virt-install
# Создание диска ВМ (qcow2 — thin provisioned, поддерживает снапшоты)
qemu-img create -f qcow2 /var/lib/libvirt/images/webserver01.qcow2 40G
# Установка ВМ из ISO
virt-install \
--name webserver01 \
--ram 4096 \
--vcpus 4 \
--cpu host \
--disk path=/var/lib/libvirt/images/webserver01.qcow2,format=qcow2,bus=virtio \
--network bridge=br0,model=virtio \
--os-variant ubuntu22.04 \
--cdrom /tmp/ubuntu-22.04-server.iso \
--graphics none \
--console pty,target_type=serial \
--extra-args 'console=ttyS0,115200n8'
Ключевой момент: --cpu host передаёт реальные флаги процессора в ВМ — максимальная производительность. Если ВМ нужно мигрировать между хостами с разными CPU — используем --cpu qemu64 для совместимости.
bus=virtio и model=virtio — паравиртуальные драйверы для диска и сети. Производительность значительно выше, чем у эмулированного IDE/e1000 (в 3–5 раз). Гостевая ОС должна иметь VirtIO драйверы (в Linux они встроены в ядро, Windows требует отдельной установки).
Snapshots и клонирование
# Создание снапшота перед обновлением
virsh snapshot-create-as webserver01 \
--name "before-update" \
--description "Before kernel update" \
--atomic
# Список снапшотов
virsh snapshot-list webserver01
# Откат к снапшоту
virsh snapshot-revert webserver01 before-update
# Клонирование ВМ
virt-clone --original webserver01 \
--name webserver02 \
--file /var/lib/libvirt/images/webserver02.qcow2
Снапшоты qcow2 хранят только delta от базового образа. При глубокой цепочке снапшотов производительность диска падает — мёржим старые снапшоты через qemu-img commit. Управление снапшотами осуществляется через libvirt.
Производительность и tuning
Для I/O-нагруженных ВМ включаем cache=none,io=native на дисках — отключает двойное кэширование между guest и host. Для сетевых нагрузок — multiqueue на virtio-net: количество очередей = количество vCPU ВМ.
CPU pinning для latency-sensitive рабочих нагрузок:
# Привязка vCPU ВМ к конкретным физическим ядрам virsh vcpupin webserver01 0 2 virsh vcpupin webserver01 1 3 | Параметр | Значение для продакшна | Эффект |
|---|---|---|
cache=none,io=native | Да | ↑ IOPS на 20–30% |
multiqueue | Количество vCPU | ↑ сетевой throughput |
| CPU pinning | Выделенные ядра | ↓ latency, ↑ стабильность |
--cpu host | Все флаги | Максимальная производительность |
Сравнение KVM с альтернативами
| Гипервизор | Лицензия | Производительность | Экономия |
|---|---|---|---|
| KVM/QEMU | GPL (бесплатно) | 95–98% bare metal | до 40% бюджета |
| VMware vSphere | Платная (CPU/год) | ~90% | - |
| Hyper-V | Windows License | ~90% | - |
| Proxmox VE | GPL + Подписка | ~95% | умеренная |
Что входит в нашу работу по настройке KVM/QEMU
- Аудит инфраструктуры: анализ текущих нагрузок, подбор CPU/RAM/дисков.
- Установка и конфигурация: KVM, libvirt, bridge, хранилища, cloud-init.
- Создание шаблонов ВМ: Ubuntu, Debian, CentOS, Windows Server (с VirtIO драйверами).
- Интеграция мониторинга: Prometheus + Grafana дашборды, алерты по SLO.
- Документация: схема сети, runbook по восстановлению, план бэкапов.
- Обучение команды: 2–3 сессии по управлению virsh, virt-manager (опционально).
Мы работаем с KVM уже более 5 лет, реализовали проекты для 50+ компаний — от стартапов до enterprise.
Сроки настройки: от 3 до 5 рабочих дней — под ключ, с гарантией SLA 99.9%.
Закажите аудит вашей инфраструктуры — оценим проект и предложим оптимальное решение. Свяжитесь с нами для консультации.
Чек-лист ключевых параметров перед запуском ВМ
- [ ] Проверена поддержка VT-x/AMD-V в BIOS
- [ ] Включена IOMMU в GRUB (intel_iommu=on)
- [ ] Настроен bridge для сети
- [ ] Выбрана модель virtio для диска и сети
- [ ] Назначен CPU pinning для критических ВМ
- [ ] Настроены алерты по steal и ballooning







