Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислениях системная виртуальная машина - это виртуальная машина, которая обеспечивает полную системную платформу и поддерживает выполнение полной операционной системы (ОС). [1] Они обычно имитируют существующую архитектуру и создаются с целью либо предоставления платформы для запуска программ, где реальное оборудование недоступно для использования (например, выполнение на устаревших платформах), либо наличия нескольких экземпляров виртуальные машины, ведущие к более эффективному использованию вычислительных ресурсов, как с точки зрения энергопотребления, так и с точки зрения рентабельности (известная как виртуализация оборудования , ключ к облачным вычислениям)окружающая среда), или и то, и другое. Первоначально виртуальная машина была определена Попеком и Голдбергом как «эффективная изолированная копия реальной машины».

Системные виртуальные машины [ править ]

Преимущества системной виртуальной машины:

  • Несколько сред ОС могут сосуществовать на одном основном жестком диске с виртуальным разделом, который позволяет совместно использовать файлы, созданные либо в «основной» операционной системе, либо в «гостевой» виртуальной среде. Установки дополнительного программного обеспечения, беспроводное соединение и удаленная репликация, например печать и отправка факсов, могут быть созданы в любой из гостевых или хост-операционных систем. Независимо от системы, все файлы хранятся на жестком диске основной ОС.
  • Подготовка приложений, обслуживание, высокая доступность и аварийное восстановление неотделимы от выбранного программного обеспечения виртуальной машины.
  • Может предоставлять эмулируемые аппаратные среды, отличные от архитектуры набора команд хоста (ISA), посредством эмуляции или с помощью своевременной компиляции .

Основные недостатки виртуальных машин:

  • Виртуальная машина менее эффективна, чем реальная машина, когда она обращается к жесткому диску хоста косвенно.
  • Когда несколько виртуальных машин одновременно работают на жестком диске фактического хоста, дополнительные виртуальные машины могут демонстрировать различную и / или нестабильную производительность (скорость выполнения и защита от вредоносных программ). Это зависит от нагрузки данных, накладываемой на систему другими виртуальными машинами, если только выбранное программное обеспечение виртуальной машины не обеспечивает временную изоляцию между виртуальными машинами .
  • Защита виртуальных машин от вредоносных программ не обязательно совместима с «хостом» и может потребовать отдельного программного обеспечения.

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

Желание запускать несколько операционных систем было первоначальной мотивацией для виртуальных машин, чтобы обеспечить разделение времени между несколькими однозадачными операционными системами. В некоторых отношениях системную виртуальную машину можно рассматривать как обобщение концепции виртуальной памяти, которая исторически предшествовала ей. IBM CP / CMS , первая система, которая допускает полную виртуализацию , реализовала разделение времени , предоставив каждому пользователю однопользовательскую операционную систему CMS . В отличие от виртуальной памяти, системная виртуальная машина дает пользователю право писать привилегированные инструкции в своем коде. Этот подход имел определенные преимущества, такие как добавление устройств ввода / вывода, не разрешенных стандартной системой. [2]

Поскольку технология развивает виртуальную память для целей виртуализации, новые системы избыточного использования памяти могут применяться для управления совместным использованием памяти несколькими виртуальными машинами в одной реальной компьютерной операционной системе. Возможно, можно будет совместно использовать «страницы памяти» с идентичным содержимым среди нескольких виртуальных машин, работающих на одной физической машине, что может привести к их сопоставлению с одной и той же физической страницей с помощью метода, известного как Kernel SamePage Merging.. Это особенно полезно для страниц, предназначенных только для чтения, например тех, которые содержат сегменты кода; в частности, это будет иметь место для нескольких виртуальных машин, на которых запущено одно и то же или подобное программное обеспечение, программные библиотеки, веб-серверы, компоненты промежуточного программного обеспечения и т. д. Гостевые операционные системы не обязательно должны быть совместимы с аппаратным обеспечением хоста, что позволяет запускать на одном компьютере разные операционные системы (например, Microsoft Windows , Linux или предыдущие версии операционной системы) для поддержки будущего программного обеспечения.

Использование виртуальных машин для поддержки отдельных гостевых операционных систем популярно во встраиваемых системах . Типичное использование - запуск операционной системы реального времени одновременно с предпочтительной сложной операционной системой, такой как Linux или Windows. Другое применение - новое и непроверенное программное обеспечение, все еще находящееся на стадии разработки, поэтому оно запускается в песочнице . Виртуальные машины имеют и другие преимущества для разработки операционных систем, и могут включать улучшенный доступ для отладки и более быструю перезагрузку. [3]

Методы [ править ]

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

Виртуализация базового необработанного оборудования (собственное исполнение) [ править ]

Этот подход описывается как полная виртуализация оборудования и может быть реализован с использованием гипервизора типа 1 или типа 2 : гипервизор типа 1 работает непосредственно на оборудовании, а гипервизор типа 2 работает в другой операционной системе, например Linux или Windows. . Каждая виртуальная машина может запускать любую операционную систему, поддерживаемую соответствующим оборудованием. Таким образом, пользователи могут одновременно запускать две или несколько различных «гостевых» операционных систем на отдельных «частных» виртуальных компьютерах.

Первой системой, использующей эту концепцию, была IBM CP-40 , первая (1967) версия IBM CP / CMS (1967–1972) и предшественница семейства IBM VM (1972 - настоящее время). Благодаря архитектуре виртуальных машин большинство пользователей запускают относительно простую однопользовательскую операционную систему с интерактивными вычислениями , CMS , в качестве «гостя» поверх программы управления виртуальными машинами ( VM-CP). Такой подход позволил упростить дизайн CMS, как если бы она работала в одиночку; программа управления незаметно предоставляет услуги многозадачности и управления ресурсами «за кулисами». В дополнение к связи с CMS и другие системные задачи выполняются многозадачными виртуальными машинами (RSCS, GCS, TCP / IP, UNIX), и пользователи могут запускать любые другие операционные системы IBM, такие как MVS , даже сам новый CP или теперь z / OS . Даже простая CMS может быть запущена в многопоточной среде (LISTSERV, TRICKLE). z / VM - это текущая версия виртуальной машины, которая используется для поддержки сотен или тысяч виртуальных машин на данном мэйнфрейме. Некоторые установки используют Linux на IBM Z для запуска веб-серверов , где Linux работает как операционная система на многих виртуальных машинах.

Полная виртуализация особенно полезна при разработке операционных систем, когда экспериментальный новый код можно запускать одновременно со старыми, более стабильными версиями, каждая на отдельной виртуальной машине. Этот процесс может быть даже рекурсивным : IBM отлаживала новые версии своей операционной системы виртуальной машины, VM , на виртуальной машине, работающей под управлением более старой версии VM, и даже использовала этот метод для моделирования нового оборудования. [NB 1]

Стандартная архитектура набора команд x86, используемая в современных ПК, на самом деле не соответствует требованиям виртуализации Попека и Голдберга . Примечательно, что не существует режима выполнения, в котором все чувствительные машинные инструкции всегда перехватываются, что позволило бы виртуализировать каждую инструкцию.

Несмотря на эти ограничения, нескольким программным пакетам удалось обеспечить виртуализацию на архитектуре x86 , хотя динамическая перекомпиляция привилегированного кода, впервые реализованная VMware , влечет за собой некоторые издержки производительности по сравнению с виртуальной машиной, работающей на изначально виртуализуемой архитектуре, такой как IBM System / 370 или Motorola MC68020 . К настоящему времени несколько других программных пакетов, таких как Virtual PC , VirtualBox , Parallels Workstation и Virtual Iron, могут реализовать виртуализацию на оборудовании x86.

Intel и AMD представили возможности для своих процессоров x86 для включения виртуализации на аппаратном уровне .

Помимо виртуализации ресурсов одной машины, несколько независимых узлов в кластере можно объединить и получить к ним доступ как к одной виртуальной машине NUMA . [4]

Эмуляция неродной системы [ править ]

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

Виртуализация на уровне операционной системы [ править ]

Виртуализация операционной системы уровня является сервер виртуализации технологии , которая обеспечивает виртуализацию серверов на операционной системе (ядро) слой. Это можно рассматривать как разделение: один физический сервер разбивается на несколько небольших разделов (иначе называемых виртуальными средами (VE), виртуальными частными серверами (VPS), гостями, зонами и т. Д.); каждый такой раздел выглядит и ощущается как настоящий сервер с точки зрения пользователей.

Например, Solaris Zones поддерживает несколько гостевых операционных систем, работающих под управлением одной и той же операционной системы, такой как Solaris 10. [5] Гостевые операционные системы могут использовать один и тот же уровень ядра с той же версией операционной системы или могут быть отдельной копией операционной системы. с другой версией ядра, использующей зоны ядра Solaris. [6] Собственные зоны Solaris также требуют, чтобы операционная система хоста была версией Solaris; другие операционные системы других производителей не поддерживаются. [ необходима цитата ] Тем не менее, фирменные зоны Solaris необходимо использовать, чтобы в качестве зон были другие операционные системы. [ необходима цитата ]

Другой пример - разделы системной нагрузки (WPAR), представленные в версии 6.1 операционной системы IBM AIX. Системные разделы WPAR - это программные разделы, работающие в одном экземпляре глобальной среды ОС AIX.

Архитектура уровня операционной системы имеет низкие накладные расходы, что помогает максимально эффективно использовать ресурсы сервера. Виртуализация привносит лишь незначительные накладные расходы и позволяет запускать сотни виртуальных частных серверов на одном физическом сервере. Напротив, такие подходы, как полная виртуализация (например, VMware ) и паравиртуализация (например, Xen или UML) не может достичь такого уровня плотности из-за накладных расходов на запуск нескольких ядер. С другой стороны, виртуализация на уровне операционной системы не позволяет запускать разные операционные системы (т. Е. Разные ядра), хотя возможны разные библиотеки, дистрибутивы и т. Д. В зависимости от желаемого использования используются различные методы виртуализации. Собственное исполнение основано на прямой виртуализации базового необработанного оборудования, таким образом, оно предоставляет несколько «экземпляров» той же архитектуры, на которой основана реальная машина, способных запускать полные операционные системы. Некоторые виртуальные машины могут также эмулировать различные архитектуры и обеспечивать выполнение программных приложений и операционных систем, написанных для другого процессора или другой архитектуры.Виртуализация на уровне операционной системы позволяет разделять ресурсы компьютера за счет поддержки ядром нескольких изолированных экземпляров пользовательского пространства, которые обычно называются контейнерами и могут выглядеть и восприниматься конечными пользователями как настоящие машины. Некоторые компьютерные архитектуры поддерживают аппаратную виртуализацию, которая обеспечивает эффективную полную виртуализацию за счет использования специфических для виртуализации аппаратных возможностей, в первую очередь от центральных процессоров.

Оборудование с поддержкой виртуализации [ править ]

Примеры оборудования с поддержкой виртуализации включают следующее:

  • Alcatel-Lucent 3B20D / 3B21D эмулируется на серийных коммерческих компьютерах с системой 3B2OE или 3B21E [ требуется пояснение ]
  • ARM TrustZone
  • Boston Circuits gCore (grid-on-chip) с 16 ядрами ARC 750D и модулем аппаратной виртуализации Time-machine.
  • Freescale PowerPC MPC8572 и MPC8641D
  • Мэйнфреймы IBM System / 360 Model 67 , System / 370 , System / 390 и zSeries
  • IBM Power Systems
  • x86 :
    • AMD-V (ранее под кодовым названием Pacifica)
    • Intel VT-x (ранее под кодовым названием Vanderpool)
  • HP vPAR и nPAR на основе соты
  • Системы GE и Honeywell Multics [ требуется пояснение ]
  • Honeywell 200/2000 Systems Liberator заменяет системы IBM 14xx
  • Honeywell уровень 62/64/66 [ необходима ссылка ]
  • Модели IBM System / 360 и System / 370 с эмуляторами, поддерживающими программы для более старых систем IBM
  • Миникомпьютеры Honeywell уровня 6 эмулировали предшественников 316/516/716 minis [ необходима ссылка ]
  • Корпорация Oracle (ранее Sun Microsystems ) SPARC sun4v ( SPARC M6 , T5 , T4 , T3 , UltraSPARC T1 и T2 ) - используется Oracle VM Server для SPARC , также известный как «Логические домены»
  • Процессоры Xerox Sigma 6 были модифицированы для эмуляции систем GE / Honeywell 600/6000 [ необходима ссылка ]

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

  • Образ машины Amazon
  • Контейнеры Linux
  • Гипервизор хранилища
  • Универсальная машина Тьюринга
  • Виртуальное устройство
  • Виртуальное устройство резервного копирования
  • Образ виртуального диска
  • Побег на виртуальной машине

Заметки [ править ]

  1. ^ См. Историю CP / CMS, чтобыузнатьоб использовании IBM виртуальных машин для разработки операционных систем и моделирования нового оборудования.

Ссылки [ править ]

  1. ^ «Виртуальные машины: виртуализация против эмуляции» . Проверено 11 марта 2011 .
  2. Смит и Наир, стр. 395–396.
  3. ^ Сверхбыстрая перезагрузка сервера - еще одна причина, по которой виртуализация рушится. Архивировано 14 июня 2006 г. на Wayback Machine . vmwarez.com (09.05.2006). Проверено 14 июня 2013.
  4. ^ Мэтью Чепмен и Гернот Хейзер. vNUMA: виртуальный мультипроцессор с общей памятью. Материалы Ежегодной технической конференции USENIX 2009 г., Сан-Диего, Калифорния, США, июнь 2009 г. [1]
  5. ^ «Обзор Oracle Solaris Zones» . docs.oracle.com . Проверено 26 июня 2015 .
  6. ^ «О зонах ядра Oracle Solaris» . docs.oracle.com . Проверено 26 июня 2015 .

Дальнейшее чтение [ править ]

  • Джеймс Э. Смит, Рави Наир, Виртуальные машины: универсальные платформы для систем и процессов , Морган Кауфманн, май 2005 г., ISBN 1-55860-910-5 , 656 страниц (охватывает как процессные, так и системные виртуальные машины) 
  • Крейг, Иэн Д. Виртуальные машины . Springer , 2006, ISBN 1-85233-969-1 , 269 страниц (охватывает только виртуальные машины процессов) 

Внешние ссылки [ править ]

  • Реинкарнация виртуальных машин, статья Менделя Розенблюма, соучредителя, VMware, об очереди ACM