Мне известно, что KVM обеспечивает функцию аппаратного ускорения за счет использования расширения виртуализации в микросхемах ЦП, таких как Intel VT. Так что виртуальные ЦП можно напрямую сопоставить с физическими ЦП для достижения почти собственной скорости.
Поскольку ядро Linux включает драйверы для жесткого диска, сети и памяти. Зачем нам нужен QEMU для виртуализации серверов? (Предположим, что нам не нужно эмулировать такие устройства, как графическая карта).
Кроме того, с поддержкой паравиртуализации, предоставляемой драйверами virtio. Значительно улучшены производительность дискового ввода-вывода и сети. Почему мы не можем просто использовать KVM и virtio. Какова роль QEMU в этом случае?
QEMU - это виртуальное оборудование. ЦП, наборы микросхем, шины ввода-вывода, контроллеры прерываний, базовые периферийные устройства и прочие аппаратные API-интерфейсы, обеспечивающие работу платформы. Эмуляция достаточно хороша, чтобы можно было запустить дюжину платформ на чужом оборудовании. Медленно, из-за накладных расходов на перезапись инструкций ЦП, но возможно. Медленный по сравнению с родным, то есть QEMU является «быстрым эмулятором».
Ядро хоста Linux - это что-то вроде виртуальной прошивки и драйверов. Низкий уровень подталкивания к реальному оборудованию, чтобы заставить его работать. Linux, конечно, может запускать программы пользовательского пространства самостоятельно, в этом случае эти программы представляют собой виртуальные машины, имитирующие оборудование.
KVM добавляет ускоренные драйверы, которые используют виртуализацию с аппаратной поддержкой. Удаление эмуляции и других накладных расходов ускоряет работу. Эмуляция любой аппаратной платформы больше не возможна. Но на практике более эффективно купить ARM, POWER или x86 и каждый запускать гостевую систему своей собственной архитектуры.