Общие сведения о виртуализации серверов

Hyper-V представляет собой пример технологии виртуализации серверов. Это значит, что Hyper-V позволяет виртуализовать компьютер целиком путем запуска нескольких операционных систем (обычно серверных) на одном физическом компьютере (обычно с оборудованием серверного класса). Каждая гостевая операционная система думает (если операционные системы умеют думать), что она владеет компьютером и имеет эксклюзивное право использования его аппаратных ресурсов (или любого другого набора ресурсов компьютера, к которому виртуальная машина имеет доступ). Таким образом, каждая операционная система выполняется в отдельной виртуальной машине, при чем все виртуальные машины запущены на одном физическом компьютере. В стандартной невиртуализованной среде на компьютере может быть запущена только одна операционная система. Технология Hyper-V предоставляет компьютеру такую возможность. Перед рассмотрением принципа работы технологии Hyper-V нам необходимо понять общие принципы работы виртуальных машин.

Общие сведения о виртуальных машинах

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

Реализация виртуальных машин описанным выше образом означает, что виртуализацию серверов необходимо внедрять в соответствии со следующими требованиями:

  • Интерфейсы управления
    Виртуализация сервера требует наличия интерфейсов управления, которые позволяют администраторам создавать, настраивать и контролировать виртуальные машины, запущенные на компьютере. Эти интерфейсы также должны поддерживать программное администрирование и работать по сети, обеспечивая удаленное управление виртуальными машинами.
  • Управление памятью
    Виртуализация сервера требует наличия диспетчера памяти, который позволяет убедиться в том, что все виртуальные машины получают выделенные и изолированные ресурсы памяти.
  • Средство планирования
    Виртуализация сервера требует наличия средства планирования для управления доступом виртуальных машин к физическим ресурсам. Средство планирования должно настраиваться администратором и иметь возможность присвоения различных уровней приоритета оборудованию.
  • Конечный автомат
    Для виртуализации сервера необходимый конечный автомат, отслеживающий сведения о текущем состоянии всех виртуальных машин на компьютере. Сведения о состояниях виртуальной машины включают в себя сведения о ЦП, памяти, устройствах и состоянии виртуальной машины (запущена или остановлена). Конечный автомат также должен поддерживать управление переходами между различными состояниями
  • Хранение и работа с сетью
    Виртуализация сервера требует возможности выделения ресурсов хранения и сетевых ресурсов на компьютере, что позволяет предоставить каждой виртуальной машине отдельный доступ к жестким дискам и сетевым интерфейсам. Кроме того, при виртуализации компьютеров также необходима возможность одновременного доступа нескольких машин к физическим устройствам с сохранением непротиворечивости, изолированности и безопасности.
  • Виртуализованные устройства
    Для виртуализации сервера необходимы виртуализованные устройства, которые предоставляют запущенным на виртуальных машинах операционным системам логические представления устройств, не отличающиеся по поведению от их физических аналогов. Другими словами, при доступе ОС с виртуальной машины к физическому устройству компьютера выполняется доступ к соответствующему виртуализованному устройству, идентичный процессу доступа к физическому устройству.
  • Драйверы виртуальных устройств
    Для виртуализации сервера необходимо установить драйверы виртуальных устройств в операционных системах, запущенных на виртуальных машинах. Драйверы виртуальных устройств предоставляют приложениям доступ к виртуальным представлениям оборудования и подключений ввода-вывода точно так же, как и к физическому оборудованию.

Ниже мы увидим, что решение виртуализации серверов Hyper-V, разработанное корпорацией Майкрософт, соответствует всем приведенным требованиям, но вначале рассмотрим основной программный компонент, обеспечивающий виртуализацию сервера — низкоуровневую оболочку.

Общие сведения о низкоуровневой оболочке

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

Термин «низкоуровневая оболочка» (гипервизор) был создан в 1972 году, когда компания IBM обновила программу управления вычислительной платформы System/370 для поддержки виртуализации. Создание низкоуровневой оболочки было новой вехой в эволюции вычислительной техники, так как это позволяло преодолевать архитектурные ограничения и снижало затраты на использование мэйнфреймов.

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

Низкоуровневая оболочка типа 1

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

Рисунок 2-1. Низкоуровневые оболочки типа 1 выполняются прямо на оборудовании.

Так как низкоуровневые оболочки типа 1 выполняются прямо на оборудовании, а не в среде ОС, они обычно обеспечивают оптимальную производительность, доступность и безопасность по сравнению с другими типами. Низкоуровневые оболочки типа 1 в том числе реализуются в следующих продуктах виртуализации сервера:

  • Microsoft Hyper-V
  • Citrix XenServer
  • VMware ESX Server

Низкоуровневая оболочка типа 2

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

Рисунок 2-2. Низкоуровневые оболочки типа 2 выполняются в среде ОС.

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

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

  • Microsoft Virtual Server
  • VMware Server

В продукте виртуализации настольных систем Microsoft Virtual PC также используется архитектура низкоуровневой оболочки типа 2.

Монолитные низкоуровневые оболочки

Монолитная архитектура низкоуровневой оболочки предполагает наличие драйверов устройств, которые поддерживают оболочку, размещены в ней и управляются ей (см. рис. 2-3).

Рисунок 2-3. Монолитные платформы низкоуровневой оболочки требуют наличия драйверов устройств с поддержкой оболочки.

Монолитная архитектура имеет как преимущества, так и некоторые недостатки. Например, монолитные низкоуровневые оболочки не требуют управляющей (родительской) операционной системы, так как все гостевые системы взаимодействуют напрямую с базовым оборудованием компьютера с помощью драйверов устройств. Это одно из преимуществ монолитной архитектуры

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

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

Примером продукта для виртуализации сервера, который использует монолитную архитектуру низкоуровневой оболочки, является VMware ESX Server.

Микроядерные низкоуровневые оболочки

Микроядерные низкоуровневые оболочки не требуют специальных драйверов, так как в роли основного (родительского) раздела выступает операционная система. Такой раздел предоставляет среду выполнения, необходимую для доступа драйверов устройства к базовому физическому оборудованию главного компьютера. Разделы будут рассмотрены далее, а сейчас представьте, что термин «раздел» эквивалентен виртуальной машине.

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

Рисунок 2-4. Микроядерные низкоуровневые оболочки требуют выполнения доступа к оборудованию из гостевых ОС через родительский раздел.

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

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

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

Что же можно привести в качестве примера платформы виртуализации сервера с микроядерной архитектурой? Несомненно, это Microsoft Hyper-V, в родительском разделе которого выполняется Windows Server 2008 или более поздние версии.