Я пытаюсь понять, какие типы виртуализации существуют, и, чтобы помочь в решении этой задачи, я нашел книгу Дицзян Хуанга и Хуэйцзюнь Ву «Мобильные облачные вычисления».
Приведенные ниже отрывки также доступны в Google Книгах: https://books.google.com/books?id=dupGDgAAQBAJ.
Из раздела 2.2.3, таблица 2.2, стр. 42:
HAL (Полный)
- Описание: Гипервизор предоставляет полную виртуальную машину (той же вычислительной архитектуры, что и хост), позволяя немодифицированным гостям работать изолированно.
- Преимущества: Гибкость в использовании разных версий разных ОС от разных производителей.
- Недостатки: Гостевая ОС не знает, что она виртуализируется; может значительно снизить производительность стандартного оборудования, особенно для приложений с интенсивным вводом-выводом.
HAL (параллельный)
- Описание: Гипервизор предоставляет каждому гостю полную, но специализированную виртуальную машину (той же вычислительной архитектуры, что и хост), позволяя модифицированным гостям работать изолированно.
- Преимущества: Легкий и быстрый, близкий к штатным скоростям; продемонстрировано, что работает в диапазоне накладных расходов 0,5–3,0%; позволяет ОС взаимодействовать с гипервизором - улучшает планирование операций ввода-вывода и ресурсов; позволяет виртуализировать архитектуры, не поддерживающие полную виртуализацию.
- Недостатки: Требуется перенос гостевой ОС для использования гипервызовов вместо конфиденциальных инструкций. Основное ограничение параллельной виртуализации заключается в том, что гостевая ОС должна быть специально настроена для работы поверх монитора виртуальных машин (VMM), хост-программы, которая поддерживает несколько идентичных сред выполнения. Это особенно влияет на устаревшие ОС с закрытым исходным кодом, в которых еще не реализованы параллельные виртуализированные расширения.
Здесь «параллельная виртуализация» выглядит как синоним «паравиртуализации». (Я никогда не слышал термин «параллельная виртуализация» до того, как прочитал книгу. Термин «паравиртуализация», с другой стороны, хорошо известен в Интернете.)
Однако в разделе 2.2.2, с. 39 книга, кажется, противоречит предыдущему отрывку:
В третьей классификации виртуализации, представленной в Разделе 2.2.3, мы представим два самых популярных решения виртуализации на основе HAL, то есть параллельную виртуализацию (или виртуализацию на «голом железе», или виртуализацию типа 1) и виртуализацию на основе хоста (или виртуализацию типа 1). -2 виртуализации) подробно.
То есть резюмировать:
Вопросы:
Верно ли, что паравиртуализация и виртуализация на «голом железе» (также известный как «Тип 1») - это разные вещи?
Гости, оптимизирующие удаленные уровни абстракции, - это другое измерение, чем если бы гипервизор был поверх операционной системы общего назначения.
QEMU - это эмулятор. Добавьте KVM, и аппаратное ускорение сократит накладные расходы до минимума, фактически сделав его типом 1. Кроме того, KVM имеет паравиртуализированные гостевые драйверы. Тем не менее, и QEMU, и KVM работают в операционных системах общего назначения; вы можете запускать произвольные приложения на своих виртуальных хостах.
Hyper-V выполняет прямой доступ к оборудованию через привилегированный корневой раздел под управлением Windows. Похоже на тип 2. Тем не менее, уровни между гостевыми и аппаратными средствами минимальны, вы не можете запускать пользовательские процессы за пределами разделов Hyper-V.
Может помочь рисование схемы слоев абстракции. Реализации не сортируются по двоичным категориям так четко, как это предлагает тип 1 по сравнению с типом 2. Такие категории не обязательно измеряют такие практические аспекты, как накладные расходы по сравнению с «голым железом» или безопасность и удобство обслуживания, как мы надеемся, простого гипервизора.
Раннее использование термина паравиртуализация появляется в Бумага Денали из Вашингтонского университета. По крайней мере, Ксен бумага цитирует Денали как изобретателя этого термина. Я не могу найти доказательств его «параллельного» происхождения. Возможно, это было предназначено для того, чтобы ссылаться на значения префикса para- «рядом» и «помогать».