Различие между KVM и QEMU

NB: я использую это имя, чтобы быть уверенным, что это будет последний проверенный vhost, потому что у меня есть также свое значение по умолчанию vhost (с 000 значениями по умолчанию для www.domain.com) и vhost для моей веб-почты (с 001 веб-почтой для webmail.domain.com).

Файлы конфигурации Vhost проверяются, в алфавитном порядке начиная в 0, и первый будет действовать как вместилище.

От Apache (1.3 до 2,2) документация:

Первый vhost в этом списке (первый vhost в файле конфигурации с указанным IP-адресом) имеет самый высокий приоритет и ловит любой запрос к неизвестному имени сервера или запрос без Хоста: поле заголовка.

Ваша другая опция может состоять в том, чтобы использовать a _default_:80 virtualhost. Посмотрите Используя _default_ vhosts

141
задан 24 June 2015 в 10:12
4 ответа

Qemu:

QEmu является полным и автономным собственным программным обеспечением. Вы используете его для эмуляции машин, это очень гибко и портативно. Главным образом это работает специальным 'recompiler', который преобразовывает двоичный код, написанный для данного процессора в другой (скажите, для выполнения кода MIPS Mac PPC или ARM в x86 ПК).

Для эмуляции больше, чем просто процессор Qemu включает длинный список периферийных эмуляторов: диск, сеть, VGA, PCI, USB, последовательные / параллельные порты, и т.д.

KQemu:

В конкретном случае, где оба источника и цели та же архитектура (как общий падеж x86 на x86), это все еще должно проанализировать код, чтобы удалить любые 'привилегированные команды' и заменить их контекстными переключениями. Для создания его максимально эффективным на x86 Linux существует модуль ядра под названием KQemu, который обрабатывает это.

Будучи модулем ядра, KQemu может выполнить большую часть кода, неизменного, заменяющего только самый низкий уровень ring0-только инструкции. В этом случае пространство пользователя Qemu все еще выделяет всю RAM для эмулированной машины и загружает код. Различие - то, что вместо того, чтобы перекомпилировать код, это называет KQemu для просканированного/исправления/выполнения его. Вся периферийная аппаратная эмуляция сделана в Qemu.

Это намного быстрее, чем плоскость Qemu, потому что большая часть кода неизменна, но все еще должна преобразовать код ring0 (большая часть кода в ядре VM), таким образом, производительность все еще страдает.

KVM:

KVM является несколькими вещами: сначала это - модуль ядра Linux — теперь включенный в магистраль — который переключает процессор в новое 'гостевое' состояние. Гостевое состояние имеет свой собственный набор кольцевых состояний, но привилегированные ring0 инструкции отступают к коду гипервизора. Так как это - новый режим процессора выполнения, код не должен быть изменен всегда.

Кроме переключения состояния процессора, модуль ядра также обрабатывает несколько частей низкого уровня эмуляции как регистры MMU (раньше обрабатывал VM), и некоторые части PCI эмулировали аппаратные средства.

Во-вторых, KVM является ветвлением исполняемого файла Qemu. Обе команды работают активно для хранения различий как минимум, и существуют усовершенствования в сокращении его. В конечном счете цель состоит в том, что Qemu должен работать где угодно, и если модуль ядра KVM доступен, он мог бы автоматически использоваться. Но для обозримого будущего, команда Qemu фокусируется на аппаратной эмуляции и мобильности, в то время как люди KVM фокусируются на модуле ядра (иногда перемещающий мелкие детали эмуляции там, если она улучшает производительность), и взаимодействующий через интерфейс с остальной частью кода пространства пользователя.

kvm-qemu исполняемый файл работает как нормальный Qemu: выделяет RAM, загружает код, и вместо того, чтобы перекомпилировать его или назвать KQemu, это порождает поток (это важно). Поток называет модуль ядра KVM для переключения на гостевой режим и продолжает выполнять код VM. На привилегированной команде это переключается назад на модуль ядра KVM, который, при необходимости, сигнализирует, чтобы поток Qemu обработал большую часть аппаратной эмуляции.

Одна из хороших вещей этой архитектуры - то, что гостевой код эмулирован в потоке posix, которым можно управлять с нормальными инструментами Linux. Если Вы хотите VM с 2 или 4 ядрами, kvm-qemu создает 2 или 4 потока, каждый из них называет модуль ядра KVM, чтобы начать выполняться. Параллелизм — если у Вас есть достаточно реальных ядер — или планирующий — если не — управляется нормальным планировщиком Linux, сохраняя код маленьким и удивляет ограниченный.

197
ответ дан 28 November 2019 в 19:17

При сотрудничестве KVM выносит решение доступ к ЦП и памяти, и QEMU эмулирует аппаратные ресурсы (жесткий диск, видео, USB, и т.д.). При работе один, QEMU эмулирует и ЦП и аппаратные средства.

102
ответ дан 28 November 2019 в 19:17

QEMU работает медленнее, а KVM помогает QEMU достичь очень высокой скорости аппаратного обеспечения для обеспечения максимальной производительности системы. QEMU - это гипервизор / эмулятор.

-2
ответ дан 28 November 2019 в 19:17

Qemu — процессор, эмулирующий программное обеспечение для виртуализации с поддержкой многих виртуальных устройств (например, HDD, RAM, звук, Ethernet, USB, VGA и т. д.)

KVM это модуль ядра, который позволяет проходить через ядра процессора через host-passthrough без их виртуализации. Он также позволяет проходить через устройства PCI через модуль ядра vfio-pci.

Все эти сквозные функции возможны через IOMMU (блок отображения памяти ввода-вывода), который отображает реальные адреса DMA в виртуализированные адреса, поэтому становится возможным прямой доступ и обеспечивается производительность «голого железа» (собственного). IOMMU — это механизм, который является частично программным обеспечением в ядре и частично аппаратным обеспечением в наборах микросхем, представленным как VT-D (vmx) AMD-VI (svm). SR-IOV — это функция набора микросхем, которая позволяет разделить одно устройство PCI на множество виртуальных без снижения производительности за счет параллельного прямого доступа ввода-вывода.

Libvirt — это библиотека, позволяющая использовать Python и другие языки программирования для настройки виртуальных машин. Virsh — это набор инструментов, который работает в терминале для мониторинга и настройки параметров виртуальной машины. Virt-manager представляет собой проигрыватель VMware, подобный графическому интерфейсу, в качестве альтернативы virsh и использует libvirt.

Qemu-img — это инструмент командной строки, который создает, конвертирует и делает снимки дисков.Qemu-nbd также является инструментом командной строки, который обеспечивает доступ к виртуальному диску через ввод-вывод через сеть через nbd. Virtio — это имя драйвера и метода доступа iommu к дискам, сетевым адаптерам (ethernet) и видео. Virgil — это OpenGL, поддерживающий virtio VGA. У Redhat и Fedora на своих веб-сайтах есть образы ISO CD-ROM с драйверами virtio для Windows и Linux.

OVMF — это открытая прошивка виртуальной машины, которая предоставляет загрузочный образ UEFI для виртуальных машин qemu. Spice — очень быстрый VNC-клиент для виртуальных машин qemu.

Вы можете начать возиться, введя их в терминале Ubuntu или любого Debian:

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-bin virt-manager ovmf
virt-manager 

Опыт вносит ясность в функции этих полуконцептуальных терминов, вводя реализацию ответа на вопрос «Что было бы невозможно без X ?".

11
ответ дан 28 December 2020 в 17:36

Теги

Похожие вопросы