QEMU — что это такое и как работает с KVM | Глоссарий FREEHOSTING

QEMU

Quick Emulator
QEMU — QEMU (Quick Emulator) — свободный эмулятор и гипервизор, способный запускать виртуальные машины с полной эмуляцией оборудования или аппаратным ускорением через KVM. Поддерживает x86, ARM, MIPS, RISC-V и другие архитектуры.

Определение простыми словами

QEMU — это программа, которая создаёт виртуальный компьютер внутри реального. Она умеет эмулировать процессор, диски, сетевые карты и другое железо программно — без специальной поддержки со стороны CPU. Это позволяет, например, запустить ARM-прошивку на x86-сервере или протестировать MIPS-бинарник прямо на рабочей станции.

В production-среде QEMU чаще работает в паре с KVM: KVM предоставляет аппаратное ускорение через Intel VT-x / AMD-V, а QEMU берёт на себя эмуляцию устройств ввода-вывода. В результате получается полноценная виртуальная машина с производительностью, близкой к «голому железу».

Сравнение

Гипервизор Тип Аппаратное ускорение Эмуляция других архитектур
QEMU + KVM Type-1 (через KVM) / Type-2 (без KVM) Да (VT-x / AMD-V) Да (x86, ARM, MIPS, RISC-V…)
VMware ESXi Type-1 Да Нет
VirtualBox Type-2 Да (частично) Нет

Кейсы использования

  • Облачные платформы (OpenStack, Proxmox VE). QEMU/KVM — де-факто стандарт для запуска гостевых ВМ на Linux-хостах.
  • Кросс-архитектурная разработка. Компиляция и тестирование прошивок для ARM/RISC-V без физического железа.
  • Изолированные тестовые среды. Быстрый запуск одноразовых ВМ из qcow2-образов с поддержкой снапшотов.
  • PCI-passthrough (VFIO). Прямая передача видеокарты или NVMe-диска в гостевую ВМ для максимальной производительности.
  • Автоматизированное тестирование ОС. CI-пайплайны, где каждый прогон теста стартует чистую ВМ и удаляет её после завершения.

Негативный пример: использовать QEMU в режиме чистой программной эмуляции (без KVM) для production-нагрузок на x86 — производительность упадёт в 10–50 раз по сравнению с аппаратно ускоренной ВМ.

Технические детали

Установка QEMU и запуск минимальной ВМ с KVM-ускорением на Ubuntu:

apt install qemu-kvm libvirt-daemon-system virtinst
modprobe kvm_intel
qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 20G
qemu-system-x86_64 -enable-kvm -m 2048 -smp 2 -hda /var/lib/libvirt/images/vm1.qcow2 -cdrom /tmp/ubuntu.iso -boot d -net nic,model=virtio -net user

Проверка поддержки аппаратной виртуализации:

grep -Eoc '(vmx|svm)' /proc/cpuinfo
kvm-ok

Создание снапшота через virsh:

virsh snapshot-create-as --domain vm1 --name snap1 --description 'before update' --atomic

Частые вопросы

Чем QEMU отличается от KVM?

QEMU — эмулятор устройств и инструмент управления ВМ. KVM — модуль ядра Linux, предоставляющий аппаратное ускорение. Вместе они образуют полноценный гипервизор: KVM обрабатывает инструкции CPU нативно, QEMU эмулирует диски, сеть и другое оборудование.

Можно ли запустить QEMU без KVM?

Да, QEMU работает без KVM в режиме полной программной эмуляции. Это полезно для кросс-архитектурных задач (например, ARM на x86), но производительность будет значительно ниже — не подходит для production.

Какой формат диска лучше использовать с QEMU?

qcow2 — рекомендуемый формат: поддерживает снапшоты, сжатие и тонкое выделение места. RAW-образ быстрее при интенсивных I/O-нагрузках, но не поддерживает снапшоты на уровне образа.