Назад | Перейти на главную страницу

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

В чем разница между 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? Если да, то какие программы следует использовать для создания и управления этой виртуальной машиной?

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

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

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

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

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