Определение простыми словами
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-нагрузках, но не поддерживает снапшоты на уровне образа.