Общие сведения о виртуализации серверов
Hyper-V представляет собой пример технологии виртуализации серверов. Это значит, что Hyper-V позволяет виртуализовать компьютер целиком путем запуска нескольких операционных систем (обычно серверных) на одном физическом компьютере (обычно с оборудованием серверного класса). Каждая гостевая операционная система думает (если операционные системы умеют думать), что она владеет компьютером и имеет эксклюзивное право использования его аппаратных ресурсов (или любого другого набора ресурсов компьютера, к которому виртуальная машина имеет доступ). Таким образом, каждая операционная система выполняется в отдельной виртуальной машине, при чем все виртуальные машины запущены на одном физическом компьютере. В стандартной невиртуализованной среде на компьютере может быть запущена только одна операционная система. Технология Hyper-V предоставляет компьютеру такую возможность. Перед рассмотрением принципа работы технологии Hyper-V нам необходимо понять общие принципы работы виртуальных машин. Общие сведения о виртуальных машинах Виртуальная машина — это вычислительная среда, реализованная в ПО и выделяющая аппаратные ресурсы физического компьютера таким образом, чтобы предоставить возможность запуска нескольких операционных систем на одном компьютере. Каждая операционная система выполняется в собственной виртуальной машине и имеет выделенные логические экземпляры процессоров, жестких дисков, сетевых карт и других аппаратных ресурсов компьютера. Операционная система, запущенная на виртуальной машине, не имеет сведений о том, что она выполняется в виртуальной среде, и ведет себя таким образом, как если бы она полностью контролировала оборудование компьютера. Реализация виртуальных машин описанным выше образом означает, что виртуализацию серверов необходимо внедрять в соответствии со следующими требованиями:
Ниже мы увидим, что решение виртуализации серверов Hyper-V, разработанное корпорацией Майкрософт, соответствует всем приведенным требованиям, но вначале рассмотрим основной программный компонент, обеспечивающий виртуализацию сервера — низкоуровневую оболочку. Общие сведения о низкоуровневой оболочке Низкоуровневая оболочка — это платформа виртуализации, которая позволяет запускать несколько операционных систем на одном физическом компьютере — главном компьютере. Основная функция низкоуровневой оболочки заключается в создании изолированных сред выполнения для всех виртуальных машин, а также в управлении взаимодействием между гостевой операционной системой на виртуальной машине и базовыми аппаратными ресурсами физического компьютера. Термин «низкоуровневая оболочка» (гипервизор) был создан в 1972 году, когда компания IBM обновила программу управления вычислительной платформы System/370 для поддержки виртуализации. Создание низкоуровневой оболочки было новой вехой в эволюции вычислительной техники, так как это позволяло преодолевать архитектурные ограничения и снижало затраты на использование мэйнфреймов. Низкоуровневые оболочки бывают разными. Например, они различаются по типу — т.е. по тому, работают ли он на физическом оборудовании или размещены в среде операционной системы. Оболочки также можно разделить по конструкции: монолитные или микроядерные. Низкоуровневая оболочка типа 1 Низкоуровневые оболочки типа 1 выполняются прямо на базовом физическом оборудовании главных компьютеров и выполняют роль управляющих программ. Другими словами, они выполняются «на железе». В этом случае гостевые операционные системы выполняются на нескольких виртуальных машинах, размещенных над слоем низкоуровневой оболочки (см. рис. 2-1). Рисунок 2-1. Низкоуровневые оболочки типа 1 выполняются прямо на оборудовании. Так как низкоуровневые оболочки типа 1 выполняются прямо на оборудовании, а не в среде ОС, они обычно обеспечивают оптимальную производительность, доступность и безопасность по сравнению с другими типами. Низкоуровневые оболочки типа 1 в том числе реализуются в следующих продуктах виртуализации сервера:
Низкоуровневая оболочка типа 2 Низкоуровневые оболочки типа 2 выполняются в среде ОС, запущенной на главном компьютере. В этом случае гостевые операционные системы выполняются на виртуальных машинах над низкоуровневой оболочкой (см. рис. 2-2). Виртуализация такого типа обычно называется размещенной виртуализацией. Рисунок 2-2. Низкоуровневые оболочки типа 2 выполняются в среде ОС. Сравнение рисунка 2-2 и рисунка 2-1 позволяет понять, что гостевые операционные системы, запущенные в виртуальных машинах платформ низкоуровневой оболочки типа 2, отделены от базового оборудования еще одним уровнем. Наличие дополнительного уровня между виртуальными машинами и оборудованием вызывает снижение производительности на платформах оболочки типа 2 и ограничивает количество виртуальных машин, которые можно запускать на практике. Низкоуровневые оболочки типа 2 в том числе реализуются в следующих продуктах виртуализации сервера:
В продукте виртуализации настольных систем 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 или более поздние версии. |