Гипервизор

Материал из wikixw
Перейти к навигации Перейти к поиску

Гипервизор - это компьютерное программное обеспечение, прошивка или аппаратное обеспечение, которое позволяет распределять ресурсы центрального процессора между несколькими операционными системами или независимыми программами. IBM придумала термин гипервизор для 360/65, а позже использовала его для обработчика DIAG CP-67. Современное использование для монитора виртуальных машин (VMM) или виртуализатора, похожего на эмулятор; это компьютерное программное обеспечение, прошивка или аппаратное обеспечение, которое создает и запускает виртуальные машины. Компьютер, на котором гипервизор запускает одну или несколько виртуальных машин, называется хост-машиной, а каждая виртуальная машина называется гостевой машиной. Гипервизор предоставляет гостевым операционным системам виртуальную операционную платформу и управляет выполнением гостевых операционных систем. Несколько экземпляров различных операционных систем могут совместно использовать виртуализированные аппаратные ресурсы: например, экземпляры Linux, Windows и macOS могут работать на одной физической машине x86. Это контрастирует с виртуализацией на уровне операционной системы, где все экземпляры (обычно называемые контейнерами) должны совместно использовать одно ядро, хотя гостевые операционные системы могут отличаться по пользовательскому пространству, например, разные дистрибутивы Linux с одним и тем же ядром.

Термин гипервизор - это вариант супервизора, традиционный термин для ядра операционной системы: гипервизор - это супервизор супервизоров, с hyper- используется как более сильный вариант super-.[a] Термин датируется примерно 1970 годом; в более раннемВместо системы CP/CMS (1967) использовался термин Управляющая программа.

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

Классификация[править]

В своей статье 1974 года "Формальные требования к виртуализируемым архитектурам третьего поколения" Джеральд Дж. Попек и Роберт П. Голдберг классифицировали два типа гипервизора: [оспаривается (поскольку: источник не упоминает гипервизоры типа 1 или типа 2) – обсудить]

Гипервизоры типа 1 X, собственные или "голые"

  • Эти гипервизоры запускаются непосредственно на оборудовании хоста для управления оборудованием и для управления гостевыми операционными системами. По этой причине их иногда называют гипервизорами с голым металлом. Первыми гипервизорами, которые IBM разработала в 1960-х годах, были собственные гипервизоры. К ним относились тестовое программное обеспечение SIMMON и операционная система CP/CMS, предшественница IBM z/VM. VMware ESX, Citrix XenServer.

Тип-2 V или размещенные гипервизоры

  • Эти гипервизоры работают в обычной операционной системе (ОС) так же, как и другие компьютерные программы. Гостевая операционная система работает как процесс на хосте. Гипервизоры типа 2 абстрагируют гостевые операционные системы от операционной системы хоста. Microsoft Virtual PC, VMware Workstation, QEMU, Parallels, VirtualBox.

Различие между этими двумя типами не всегда ясно. Например, KVM и bhyve являются модулями ядра, которые эффективно преобразуют операционную систему хоста в гипервизор типа 1. В то же время, поскольку дистрибутивы Linux и FreeBSD все еще являются операционными системами общего назначения, а приложения конкурируют друг с другом за ресурсы виртуальных машин, KVM и bhyveтакже может быть классифицирован как гипервизор типа 2.

Гибридный (Тип 1+)

Гибридный гипервизор состоит из двух частей: из тонкого гипервизора, контролирующего процессор и память, а также специальной служебной ОС, работающей под его управлением в кольце пониженного уровня. Через служебную ОС гостевые ОС получают доступ к физическому оборудованию.

[[Microsoft Virtual Server[en]]], Sun Logical Domains, Xen, Citrix XenServer, Microsoft Hyper-V, VMware Workstation.

Происхождение мэйнфреймов[править]

Первыми гипервизорами, обеспечивающими полную виртуализацию, были инструмент тестирования 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 создать надежные системы с разделением времени для своих мэйнфреймов. Благодаря одновременному запуску нескольких операционных систем гипервизор повысил надежность и стабильность системы: даже если одна операционная система выйдет из строя, другие продолжат работать без перерыва. Действительно, это даже позволяло развертывать и отлаживать бета— или экспериментальные версии операционных систем или даже нового оборудования, не ставя под угрозу стабильную основную производственную систему и не требуя дорогостоящих дополнительных систем разработки.

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

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

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

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

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

  • Расширение аппаратных возможностей, позволяющее каждой отдельной машине выполнять больше одновременной работы
  • Усилия по контролю затрат и упрощению управления за счет консолидации серверов
  • Необходимость управления большими многопроцессорными и кластерными установками, например, в фермах серверов и фермах визуализации
  • Архитектуры гипервизора позволяют повысить безопасность, надежность и независимость от устройств.
  • Возможность запускать сложные, зависящие от операционной системы приложения в различных аппаратных или операционных средах

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

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

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

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

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

x86 системы[править]

Основная статья: Виртуализация x86

С 2005 года производители процессоров добавили поддержку аппаратной виртуализации в свои продукты; например, Intel VT-x (кодовое название Vanderpool) и AMD-V (кодовое название Pacifica).

Альтернативный подход требует модификации гостевой операционной системы для выполнения системного вызова базового гипервизора, а не выполнения инструкций машинного ввода-вывода, которые имитирует гипервизор. Это называется паравиртуализацией в Xen, "гиперзвонком" в Parallels Workstation и "ДИАГНОСТИЧЕСКИМ кодом" в IBM VM. Некоторые микроядра, такие как Mach и L4, достаточно гибкие, чтобы обеспечить паравиртуализацию гостевых операционных систем.

Встроенные системы[править]

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

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

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

Возможность применения[править]

Использование оборудования

До виртуализации каждой системе требовалось собственное оборудование. Однако, безусловно, большую часть своего времени современное оборудование проводит на холостом ходу. Следовательно, энергия и пространство тратятся впустую. Работа нескольких систем на одном и том же оборудовании позволяет лучше использовать аппаратные ресурсы и требует меньше аппаратного обеспечения. Это приводит к прямой экономии средств для операторов.

Разработка программного обеспечения

Виртуальные машины с различными гостевыми операционными системами позволяют разработчику без особых усилий протестировать свое программное обеспечение на желаемых целевых платформах. Если тестируемое программное обеспечение содержит серьезные ошибки, они только повреждают гостевую систему и не влияют на хост-систему.

Безаварийность

Использование пулов виртуальных хранилищ или отказоустойчивых кластеров, узлы которых были распределены между виртуальными машинами нескольких физических серверов, обеспечивает экономичную отказоустойчивость.

Последствия для безопасности[править]

Основная статья: Гиперджекинг

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

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

Примечания[править]

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

См.также[править]

Гипервизор хранилища Гипервизоры памяти

Пруф[править]

.usenix.org/system/files/login/articles/105498-Revelle.pdf