// Engineering Log
Виртуализация: Часть 5 — QEMU
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Серверы и инфраструктура.
QEMU — свободный эмулятор и виртуализатор, распространяемый под лицензией GPLv2. Он умеет две разные вещи. Во-первых, эмулировать компьютер целиком, включая процессор другой архитектуры: например, запустить систему для ARM на обычном сервере x86. Во-вторых, работать вместе с ускорителем виртуализации — в Linux это KVM — и тогда виртуальные машины выполняются почти с той же скоростью, что и основная система.
Актуальная стабильная версия на сентябрь 2026 года — QEMU 11.1.1 (26 августа 2026 года).
Как QEMU и KVM делят работу
KVM — модуль ядра Linux, который даёт виртуальной машине прямой доступ к возможностям процессора (Intel VT-x, AMD-V). Сам по себе он не создаёт ни дисков, ни сетевых карт, ни экрана. Эту часть берёт на себя QEMU: он изображает для гостевой системы контроллеры дисков, сетевые адаптеры, USB, видеокарту и загрузчик. Поэтому на сервере с KVM процессы виртуальных машин — это процессы QEMU.
Без ускорителя QEMU переводит каждую инструкцию гостевого процессора в инструкции основного. Это работает на любой архитектуре, но в разы медленнее — для рабочих нагрузок такой режим не подходит, для тестов и разработки его обычно достаточно.
Где QEMU используется, даже если вы о нём не знаете
- Proxmox VE запускает виртуальные машины через QEMU с KVM; команда
qmи веб-интерфейс Proxmox в итоге формируют параметры запуска QEMU. - libvirt,
virt-managerи Cockpit на обычных Linux-серверах тоже управляют процессами QEMU. - UTM на macOS использует QEMU, в том числе для запуска систем x86 на компьютерах Apple с процессорами ARM.
- Docker собирает образы под другие архитектуры (
docker buildx --platform linux/arm64) с помощью пользовательского режима QEMU: отдельные программы чужой архитектуры выполняются прозрачно, без запуска целой виртуальной машины.
Два режима работы
- Системная эмуляция (
qemu-system-x86_64,qemu-system-aarch64и другие) — полноценная виртуальная машина со своим ядром, дисками и устройствами. - Пользовательский режим (
qemu-aarch64,qemu-armи другие) — запуск отдельной программы, собранной под другую архитектуру, в текущей системе Linux. Именно его используют для кросс-сборки и тестов.
Диски: утилита qemu-img
Образы дисков QEMU создаёт и преобразует утилитой qemu-img. Основной формат — qcow2: он занимает на диске столько места, сколько реально записано, и поддерживает снимки. Формат raw проще и немного быстрее, но сразу занимает весь объём.
# создать диск на 40 ГБ в формате qcow2
qemu-img create -f qcow2 disk.qcow2 40G
# посмотреть сведения об образе: формат, заявленный и фактический размер
qemu-img info disk.qcow2
# перевести диск VMware (vmdk) в qcow2 — типичный шаг при переезде с VMware
qemu-img convert -p -f vmdk -O qcow2 server.vmdk server.qcow2Преобразование convert — основной инструмент при переносе виртуальных машин из VMware или Hyper-V (формат vhdx) в Proxmox и другие платформы на KVM.
Запуск виртуальной машины вручную
На практике машины создают через Proxmox или libvirt, но полезно понимать, что происходит внутри. Минимальный запуск установщика Linux с ускорением KVM:
qemu-system-x86_64 \
-accel kvm -cpu host \
-m 4G -smp 2 \
-drive file=disk.qcow2,if=virtio \
-cdrom debian.iso -boot d \
-nic user,model=virtio-net-pci-accel kvm -cpu host— включить KVM и передать гостю возможности реального процессора;-mи-smp— объём памяти и число виртуальных процессоров;if=virtioиvirtio-net-pci— паравиртуальные устройства: гостевая система знает, что работает в виртуальной машине, и обменивается данными быстрее, чем с эмуляцией настоящего железа;-nic user— простейшая сеть через NAT без настройки моста; для серверов вместо неё настраивают сетевой мост.
Если процессор или сервер не поддерживает аппаратную виртуализацию (например, в некоторых облачных виртуальных машинах вложенная виртуализация отключена), QEMU с -accel kvm не запустится. Проверить можно так: ls /dev/kvm — файл должен существовать.
Эмуляция другой архитектуры
Запуск системы для ARM на сервере x86 выглядит так:
qemu-system-aarch64 -M virt -cpu cortex-a72 -m 2G \
-bios QEMU_EFI.fd \
-drive file=arm-disk.qcow2,if=virtio \
-nographicЗдесь ускорения KVM нет: процессор ARM эмулируется полностью, и машина работает заметно медленнее. Для проверки прошивок, образов для одноплатных компьютеров и сборки пакетов под ARM этого обычно хватает.
Когда выбирать QEMU напрямую
- Разработка и тестирование под другие архитектуры — ARM, RISC-V, MIPS, PowerPC.
- Отладка ядер и загрузчиков: QEMU умеет подключаться к отладчику GDB (
-s -S). - Автоматизированные тесты образов в CI, где графический интерфейс не нужен.
- Разовый запуск старой системы из образа диска.
Для постоянной работы серверов QEMU напрямую не используют: удобнее и надёжнее управлять машинами через Proxmox VE или libvirt, которые берут на себя автозапуск, сети, снимки и резервное копирование.
Типичные ошибки
- Запуск без
-accel kvmна сервере, где KVM доступен: машина работает в режиме эмуляции и тормозит без видимой причины. - Эмулируемые устройства вместо virtio: диск IDE и сетевая карта e1000 работают медленнее. Для Windows драйверы virtio устанавливают отдельно с образа virtio-win.
- Копирование qcow2-файла работающей машины: копия может оказаться несогласованной. Машину останавливают или используют снимки и средства резервного копирования платформы.
- Путаница с форматом: если в
-driveне указатьformat=, QEMU определяет формат автоматически и выводит предупреждение; для raw-образов формат лучше указывать явно.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Серверы и инфраструктура
VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.
Часто с этим приходят
- Перенести сайт или сервис на новый сервер
- Настроить Linux, Nginx, базу данных и бэкапы
- Разобраться, почему всё работает нестабильно
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related