понимание отношений между Qemu и KVM

17

В чем разница между KVM и Qemu? Как я понимаю, последний может обеспечить «эмуляцию режима пользователя», что означает, что можно запустить один исполняемый файл, созданный для какой-то другой архитектуры, например:

# file busybox-sparc 
busybox-sparc: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), statically linked, stripped
# qemu-sparc busybox-sparc ls
Packages_arm     Packages_i386    arm              busybox-armv6l   busybox-i686     busybox-powerpc  busybox-sparc    busybox-x86_64   i386
# 

... и "компьютерная эмуляция", что означает, что выполняется не только динамический двоичный перевод, но и вся виртуальная машина (видеокарта, звуковая карта, сетевые карты, оптические устройства и т. д.). Например:

# qemu-system-sparc64 -hda hda.img -cdrom debian-6.0.5-sparc-CD-1.iso -boot d

Как я понял, Qemu не знает, как использовать преимущества аппаратной виртуализации (например, решения Intel VT-x или AMD-V на архитектуре x86), и это тот случай, когда KVM может помочь - можно запустить Qemu с поддержкой KVM. Однако обеспечивает ли KVM какую-либо другую функциональность, кроме доступа программ эмуляции к аппаратной виртуализации на определенных аппаратных архитектурах? Можно ли создать целую виртуальную машину (ЦП, видеокарта, устройства ввода-вывода и т. Д.), Используя только KVM? Если да, то какие программы следует использовать для создания и управления этой виртуальной машиной?

Мартин
источник
2
возможный дубликат разницы между KVM и QEMU

Ответы:

16

Вы частично правы. Просто будьте осторожны, так как может быть некоторая путаница. KVM - это название технологии виртуализации в ядре Linux.

KVM также обычно используется в качестве имени форка (более точное имя - qemu-kvm) проекта QEMU с лучшей поддержкой аппаратной виртуализации . Это утверждение было подтверждено проектом QEMU , но начиная с версии 1.3 QEMU все функции qemu-kvm были объединены .

Страница загрузки для проекта KVM объясняет , что разница довольно хорошо , как хорошо.

Еще одна вещь, которую нужно иметь в виду, заключается в том, что преимущества qemu-kvm объединяются в более новых выпусках qemu, поэтому я надеюсь, что однажды разница между ними исчезнет.

chutz
источник
Итак, KVM «технология виртуализации в ядре Linux» и qemu-kvm - это разные вещи?
дтмланд
@dtmland Ну да. qemu-kvm - это пользовательское программное обеспечение, которое использует KVM в ядре.
Chutz
6

KVM - это модуль ядра, который позволяет через определенные расширения виртуализации ЦП планировать запрос ЦП виртуальных машин непосредственно в ЦП и ОЗУ хоста с минимальными издержками. QEMU предоставляет остальную часть эмулируемого оборудования, потому что машина, даже виртуальная, это не просто процессор - это много дополнительного оборудования. QEMU также может эмулировать процессор, но по сравнению с тем, как это делает KVM, он мучительно медленный, поэтому объединяется, чтобы получить лучшее из обоих миров

dyasny
источник