stringtranslate.com

Гипервизор

Гипервизор , также известный как монитор виртуальной машины ( VMM ) или виртуализатор , представляет собой тип компьютерного программного обеспечения , прошивки или оборудования , которое создает и запускает виртуальные машины . Компьютер, на котором гипервизор запускает одну или несколько виртуальных машин, называется хост-машиной , а каждая виртуальная машина называется гостевой машиной . Гипервизор представляет гостевым операционным системам виртуальную операционную платформу и управляет выполнением гостевых операционных систем. В отличие от эмулятора , гость выполняет большинство инструкций на собственном оборудовании. [1] Несколько экземпляров различных операционных систем могут совместно использовать виртуализированные аппаратные ресурсы: например, экземпляры Linux , Windows и macOS могут работать на одной физической машине x86 . Это контрастирует с виртуализацией на уровне операционной системы , где все экземпляры (обычно называемые контейнерами ) должны совместно использовать одно ядро, хотя гостевые операционные системы могут различаться в пользовательском пространстве , например, разные дистрибутивы Linux с одним и тем же ядром.

Термин гипервизор является вариантом супервизора , традиционного термина для ядра операционной системы : гипервизор является супервизором супервизоров, [2] при этом гипер- используется как более сильный вариант супер- . [a] Термин датируется примерно 1970 годом; [3] IBM придумала его для программного обеспечения, которое запускало OS/360 и эмулятор 7090 одновременно на 360/65 [4] и позже использовала его для обработчика DIAG CP-67. В более ранней системе CP/CMS (1967) вместо этого использовался термин Программа управления .

В некоторых литературных источниках, особенно в контексте микроядра , проводится различие между гипервизором и монитором виртуальной машины (VMM). Там оба компонента образуют общий стек виртуализации определенной системы. Гипервизор относится к функциональности пространства ядра , а VMM — к функциональности пространства пользователя . В частности, в этих контекстах гипервизор — это микроядро, реализующее инфраструктуру виртуализации, которая должна работать в пространстве ядра по техническим причинам, например, Intel VMX . Микроядра, реализующие механизмы виртуализации, также называются микрогипервизорами . [5] [6] Применяя эту терминологию к Linux , KVM — это гипервизор , а QEMU или Cloud Hypervisor — это VMM, использующие KVM в качестве гипервизора. [7]

Классификация

Гипервизоры типа 1 и типа 2

В своей диссертации 1973 года «Архитектурные принципы виртуальных компьютерных систем» Роберт П. Голдберг классифицировал два типа гипервизоров: [1]

Тип 1, собственные или «голые» гипервизоры
Эти гипервизоры работают непосредственно на оборудовании хоста для управления оборудованием и гостевыми операционными системами. По этой причине их иногда называют гипервизорами bare-metal . Первые гипервизоры, разработанные IBM в 1960-х годах, были собственными гипервизорами. [8] К ним относятся тестовое программное обеспечение SIMMON и операционная система CP/CMS , предшественник семейства операционных систем виртуальных машин IBM VM . Примерами гипервизора типа 1 являются Hyper-V , Xen и VMware ESXi .
Тип 2 или размещенные гипервизоры
Эти гипервизоры работают на обычной операционной системе (ОС), как и другие компьютерные программы. Монитор виртуальной машины работает как процесс на хосте, например VirtualBox . Гипервизоры типа 2 абстрагируют гостевые операционные системы от операционной системы хоста, эффективно создавая изолированную систему, с которой может взаимодействовать хост. Примерами гипервизоров типа 2 являются VirtualBox и VMware Workstation .

Различие между этими двумя типами не всегда очевидно. Например, KVM и bhyve — это модули ядра [9] , которые фактически преобразуют хостовую операционную систему в гипервизор типа 1. [10]

Происхождение мэйнфреймов

Первыми гипервизорами, обеспечивающими полную виртуализацию, были тестовый инструмент SIMMON и одноразовая исследовательская система IBM CP-40 , которая начала использоваться в производстве в январе 1967 года и стала первой версией операционной системы IBM CP/CMS . CP-40 работала на S/360-40, модифицированном в Кембриджском научном центре для поддержки динамической трансляции адресов , функции, которая позволяла виртуализировать. До этого времени компьютерное оборудование было виртуализировано только в той степени, которая позволяла нескольким пользовательским приложениям работать одновременно, например, в CTSS и IBM M44/44X . С CP-40 состояние супервизора оборудования также было виртуализировано, что позволяло нескольким операционным системам работать одновременно в отдельных контекстах виртуальных машин .

Программисты вскоре реализовали CP-40 (как CP-67 ) для IBM System/360-67 , первой производственной компьютерной системы, способной к полной виртуализации. IBM поставила эту машину в 1966 году; она включала аппаратное обеспечение таблицы трансляции страниц для виртуальной памяти и другие методы, которые позволяли полностью виртуализировать все задачи ядра, включая ввод-вывод и обработку прерываний. (Обратите внимание, что «официальная» операционная система, злополучный TSS/360 , не использовала полную виртуализацию.) И CP-40, и CP-67 начали использоваться в производстве в 1967 году. CP/CMS была доступна клиентам IBM с 1968 по начало 1970-х годов в виде исходного кода без поддержки.

CP/CMS была частью попытки IBM построить надежные системы разделения времени для своих мэйнфреймов . Запуская несколько операционных систем одновременно, гипервизор повышал надежность и стабильность системы: даже если одна операционная система выходила из строя, другие продолжали работать без перерыва. Действительно, это даже позволяло развертывать и отлаживать бета-версии или экспериментальные версии операционных систем — или даже нового оборудования [11] — без ущерба для стабильной основной производственной системы и без необходимости использования дорогостоящих дополнительных систем разработки.

IBM анонсировала свою серию System/370 в 1970 году без функции виртуальной памяти , необходимой для виртуализации, но добавила ее в объявлении Advanced Function в августе 1972 года. Виртуализация была представлена ​​во всех последующих системах, так что все современные мэйнфреймы IBM, включая линейку zSeries , сохраняют обратную совместимость с линейкой IBM S/360 1960-х годов. Анонс 1972 года также включал VM/370 , повторную реализацию CP/CMS для S/370. В отличие от CP/CMS , IBM обеспечивала поддержку этой версии (хотя она все еще распространялась в виде исходного кода для нескольких выпусков). VM означает Virtual Machine , подчеркивая, что все, а не только некоторые, аппаратные интерфейсы виртуализированы. И VM, и CP/CMS получили раннее признание и быстрое развитие со стороны университетов, корпоративных пользователей и поставщиков систем разделения времени , а также внутри IBM. Пользователи играли активную роль в продолжающейся разработке, предвосхищая тенденции, наблюдаемые в современных проектах с открытым исходным кодом . Однако в серии спорных и ожесточенных сражений [ требуется ссылка ] разделение времени проиграло пакетной обработке из-за политических распрей IBM, и VM оставалась «другой» операционной системой для мэйнфреймов IBM в течение десятилетий, уступив MVS . Она пережила всплеск популярности и поддержки с 2000 года как продукт z/VM , например, как платформа для Linux на IBM Z.

Как упоминалось выше, программа управления VM включает обработчик вызовов гипервизора , который перехватывает инструкции DIAG ("Diagnose", opcode x'83'), используемые в виртуальной машине. Это обеспечивает быстрое невиртуализированное выполнение доступа к файловой системе и других операций (DIAG является зависимой от модели привилегированной инструкцией, не используемой в обычном программировании и, таким образом, не виртуализированной. Поэтому она доступна для использования в качестве сигнала для "хостовой" операционной системы). При первой реализации в CP/CMS версии 3.1 такое использование DIAG обеспечивало интерфейс операционной системы, аналогичный инструкции System/360 Supervisor Call (SVC), но не требовало изменения или расширения системной виртуализации SVC.

В 1985 году IBM представила гипервизор PR/SM для управления логическими разделами (LPAR).

Поддержка операционной системы

Несколько факторов привели к возрождению около 2005 года использования технологии виртуализации в Unix , Linux и других Unix-подобных операционных системах: [12]

Основные поставщики Unix, включая HP , IBM , SGI и Sun Microsystems , продавали виртуализированное оборудование еще до 2000 года. Обычно это были большие и дорогие системы (стоимостью в несколько миллионов долларов в верхнем ценовом диапазоне), хотя виртуализация также была доступна на некоторых системах низкого и среднего уровня, таких как серверы IBM pSeries , машины серии HP Superdome и серверы Sun / Oracle CoolThreads серии T.

Хотя Solaris всегда была единственной гостевой доменной ОС, официально поддерживаемой Sun/Oracle на их гипервизоре Logical Domains , с конца 2006 года Linux (Ubuntu и Gentoo) и FreeBSD были портированы для работы поверх гипервизора (и могут работать одновременно на одном процессоре, как полностью виртуализированные независимые гостевые ОС). Wind River "Carrier Grade Linux" также работает на гипервизоре Sun. [13] Полная виртуализация на процессорах SPARC оказалась простой: с момента своего появления в середине 1980-х годов Sun намеренно сохраняла архитектуру SPARC чистой от артефактов, которые могли бы помешать виртуализации. (Сравните с виртуализацией на процессорах x86 ниже.) [14]

HPE предоставляет виртуальные машины HP Integrity (Integrity VM) для размещения нескольких операционных систем на своих системах Integrity на базе Itanium . Itanium может запускать HP-UX , Linux, Windows и OpenVMS , и эти среды также поддерживаются в качестве виртуальных серверов на платформе HP Integrity VM. Операционная система HP-UX размещает слой гипервизора Integrity VM, который позволяет использовать многие важные функции HP-UX и обеспечивает существенное различие между этой платформой и другими товарными платформами, такими как горячая замена процессора, горячая замена памяти и динамические обновления ядра без перезагрузки системы. Хотя он в значительной степени использует HP-UX, гипервизор Integrity VM на самом деле является гибридом, который работает на голом железе, пока выполняются гостевые приложения. Запуск обычных приложений HP-UX на хосте Integrity VM настоятельно не рекомендуется, [ кем? ], поскольку Integrity VM реализует собственные политики управления памятью, планирования и ввода-вывода, которые настроены для виртуальных машин и не так эффективны для обычных приложений. HPE также обеспечивает более жесткое разбиение своих систем Integrity и HP9000 с помощью технологий VPAR и nPar , первая из которых предлагает разбиение общих ресурсов, а вторая — полную изоляцию ввода-вывода и обработки. Гибкость среды виртуального сервера (VSE) уступила место ее более частому использованию в новых развертываниях. [ необходима цитата ]

IBM предоставляет технологию виртуализации разделов, известную как логическое разделение (LPAR) на системах System/390 , zSeries , pSeries и IBM AS/400 . Для систем IBM Power Hypervisor (PHYP) является собственным (голым) гипервизором в прошивке и обеспечивает изоляцию между LPAR. Мощность процессора предоставляется LPAR либо выделенным образом, либо на основе прав, когда неиспользуемая мощность собирается и может быть перераспределена для загруженных рабочих нагрузок. Группы LPAR могут управлять своей мощностью процессора, как если бы они находились в «пуле» — IBM называет эту возможность множественными пулами общих процессоров (MSPP) и реализует ее на серверах с процессором POWER6 . Распределение мощности LPAR и MSPP может динамически изменяться. Память выделяется каждому LPAR (при инициализации LPAR или динамически) и управляется гипервизором POWER по адресу. Для адресации в реальном режиме операционными системами ( AIX , Linux , IBM i ) процессоры Power ( начиная с POWER4 ) имеют разработанные возможности виртуализации, где смещение аппаратного адреса оценивается с помощью смещения адреса ОС для получения адреса физической памяти. Адаптеры ввода-вывода (I/O) могут быть исключительно «принадлежащими» LPAR или совместно использоваться LPAR через раздел устройства, известный как виртуальный сервер ввода-вывода (VIOS). Гипервизор Power обеспечивает высокий уровень надежности, доступности и удобства обслуживания (RAS), облегчая горячее добавление/замену многих частей (зависит от модели: процессоры, память, адаптеры ввода-вывода, вентиляторы, блоки питания, диски, системные контроллеры и т. д.)

Похожие тенденции наблюдались и на серверных платформах x86/x86-64, где проекты с открытым исходным кодом, такие как Xen, возглавили усилия по виртуализации. К ним относятся гипервизоры, построенные на ядрах Linux и Solaris, а также пользовательские ядра. Поскольку эти технологии охватывают как большие системы, так и настольные компьютеры, они описаны в следующем разделе.

x86 системы

Виртуализация x86 была представлена ​​в 1990-х годах, а ее эмуляция была включена в Bochs . [15] Intel и AMD выпустили свои первые процессоры x86 с аппаратной виртуализацией в 2005 году под названием Intel VT-x (кодовое название Vanderpool) и AMD-V (кодовое название Pacifica).

Альтернативный подход требует изменения гостевой операционной системы для выполнения системного вызова базового гипервизора, а не выполнения машинных инструкций ввода-вывода, которые имитирует гипервизор. Это называется паравиртуализацией в Xen , «гипервызовом» в Parallels Workstation и «кодом DIAGNOSE» в IBM VM . Некоторые микроядра, такие как Mach и L4 , достаточно гибки, чтобы разрешить паравиртуализацию гостевых операционных систем.

Встроенные системы

Встроенные гипервизоры , нацеленные на встроенные системы и определенные среды операционных систем реального времени (RTOS), разработаны с различными требованиями по сравнению с настольными и корпоративными системами, включая надежность, безопасность и возможности реального времени . Ограниченность ресурсов многих встроенных систем, особенно мобильных систем с батарейным питанием, налагает дополнительные требования к небольшому размеру памяти и низким накладным расходам. Наконец, в отличие от повсеместности архитектуры x86 в мире ПК, встраиваемый мир использует более широкий спектр архитектур и менее стандартизированные среды. Поддержка виртуализации требует защиты памяти (в форме блока управления памятью или, по крайней мере, блока защиты памяти) и различия между пользовательским режимом и привилегированным режимом , что исключает большинство микроконтроллеров . Это по-прежнему оставляет x86 , MIPS , ARM и PowerPC в качестве широко используемых архитектур на средних и высокопроизводительных встроенных системах. [16]

Поскольку производители встраиваемых систем обычно имеют исходный код своих операционных систем, у них меньше потребности в полной виртуализации в этой области. Вместо этого, преимущества производительности паравиртуализации делают ее обычно технологией виртуализации по выбору. Тем не менее, ARM и MIPS недавно добавили полную поддержку виртуализации в качестве опции IP и включили ее в свои новейшие высокопроизводительные процессоры и версии архитектуры, такие как ARM Cortex-A15 MPCore и ARMv8 EL2.

Другие различия между виртуализацией в серверных/настольных и встроенных средах включают требования к эффективному распределению ресурсов между виртуальными машинами, высокую пропускную способность, малую задержку связи между виртуальными машинами, глобальный взгляд на планирование и управление питанием, а также детальный контроль информационных потоков. [17]

Последствия для безопасности

Использование технологии гипервизора вредоносными программами и руткитами, устанавливающими себя в качестве гипервизора ниже операционной системы, известное как гиперджекинг , может затруднить их обнаружение, поскольку вредоносное ПО может перехватывать любые операции операционной системы (например, ввод пароля) без обязательного обнаружения антивирусным программным обеспечением (поскольку вредоносное ПО работает ниже всей операционной системы). Реализация этой концепции предположительно имела место в лабораторном рутките SubVirt (разработанном совместно исследователями Microsoft и Мичиганского университета [18] ), а также в пакете вредоносного ПО Blue Pill . Однако такие утверждения были оспорены другими, которые утверждают, что можно было бы обнаружить наличие руткита на основе гипервизора. [19]

В 2009 году исследователи из Microsoft и Университета штата Северная Каролина продемонстрировали антируткит уровня гипервизора под названием Hooksafe , который может обеспечить общую защиту от руткитов режима ядра . [20]

Примечания

  1. ^ super- происходит от латинского слова, означающего «выше», а hyper- происходит от родственного термина в древнегреческом языке (ὑπέρ-), также означающего «выше» или «сверху» .

Смотрите также

Ссылки

  1. ^ ab Goldberg, Robert P. (1973). Архитектурные принципы для виртуальных компьютерных систем (PDF) (Технический отчет). Гарвардский университет. ESD-TR-73-105.
  2. ^ Бернард Голден (2011). Виртуализация для чайников . стр. 54.
  3. ^ «Как появился термин «гипервизор»?».
  4. ^ Гэри Р. Оллред (май 1971 г.). Интегрированная эмуляция System/370 под ОС и DOS (PDF) . Весенняя совместная компьютерная конференция 1971 г. Том 38. AFIPS Press. стр. 164. doi :10.1109/AFIPS.1971.58 . Получено 12 июня 2022 г.
  5. ^ Steinberg, Udo; Kauer, Bernhard (2010). "NOVA: Архитектура безопасной виртуализации на основе микрогипервизора" (PDF) . Труды Европейской конференции ACM по компьютерным системам 2010 года (EuroSys 2010) . Париж, Франция . Получено 27 августа 2024 г. .
  6. ^ "Hedron Microkernel". GitHub . Cyberus Technology . Получено 27 августа 2024 г. .
  7. ^ "Cloud Hypervisor". GitHub . Проект Cloud Hypervisor . Получено 27 августа 2024 г.
  8. ^ Мейер, Шеннон (2008). «Виртуализация систем IBM: серверы, системы хранения и программное обеспечение» (PDF) . стр. 2, 15, 20. Получено 22 декабря 2015 г.
  9. ^ Декстер, Майкл. "Hands-on bhyve". CallForTesting.org . Получено 24 сентября 2013 г. .
  10. ^ Грациано, Чарльз (2011). Анализ производительности гипервизоров Xen и KVM для хостинга проекта Xen Worlds (диссертация на степень магистра). Университет штата Айова. doi : 10.31274/etd-180810-2322 . hdl :20.500.12876/26405 . Получено 16 октября 2022 г.
  11. ^ См . Историю CP/CMS для виртуально-аппаратного моделирования при разработке System /370.
  12. ^ Лофтус, Джек (19 декабря 2005 г.). «Виртуализация Xen быстро становится „убийственным приложением“ с открытым исходным кодом». TechTarget . Получено 26 октября 2015 г.
  13. ^ "Wind River поддержит прорывной многопоточный процессор нового поколения UltraSPARC T1 от Sun". Wind River Newsroom (пресс-релиз). Аламеда, Калифорния. 1 ноября 2006 г. Архивировано из оригинала 10 ноября 2006 г. Получено 26 октября 2015 г.
  14. ^ Фрич, Лотар; Хуссейки, Рани; Алькассар, Аммар. Дополнительные и альтернативные технологии для доверенных вычислений (TC-Erg./-A.), Часть 1, Исследование по поручению Федерального ведомства по информационной безопасности Германии (BSI) (PDF) (Отчет). Архивировано из оригинала (PDF) 7 июня 2020 г. . Получено 28 февраля 2011 г. .
  15. ^ "Введение в Bochs". bochs.sourceforge.io . Получено 17 апреля 2023 г. .
  16. ^ Штробль, Мариус (2013). Виртуализация для надежных встроенных систем. Мюнхен: GRIN Publishing GmbH. С. 5–6. ISBN 978-3-656-49071-5. Получено 7 марта 2015 г. .
  17. ^ Gernot Heiser (апрель 2008 г.). «Роль виртуализации во встраиваемых системах». Proc. 1st Workshop on Isolation and Integration in Embedded Systems (IIES'08) . стр. 11–16. Архивировано из оригинала 21 марта 2012 г. Получено 8 апреля 2009 г.
  18. ^ "SubVirt: Внедрение вредоносного ПО с помощью виртуальных машин" (PDF) . Мичиганский университет , Microsoft . 3 апреля 2006 г. Получено 15 сентября 2008 г.
  19. ^ "Развенчание мифа о Blue Pill". Virtualization.info. 11 августа 2006 г. Архивировано из оригинала 14 февраля 2010 г. Получено 10 декабря 2010 г.
  20. ^ Ван, Чжи; Цзян, Сюйсянь; Цуй, Вэйдун; Нин, Пэн (11 августа 2009 г.). «Противодействие руткитам ядра с помощью облегченной защиты от перехватов». Труды 16-й конференции ACM по компьютерной и коммуникационной безопасности (PDF) . CCS '09. Чикаго, Иллинойс, США: ACM . стр. 545–554. CiteSeerX 10.1.1.147.9928 . doi :10.1145/1653662.1653728. ISBN  978-1-60558-894-0. S2CID  3006492 . Получено 11 ноября 2009 г. .

Внешние ссылки