В микроядерной модели (в виртуализации WindowsServer 2008 используется именно она) один раздел является родительским (parent), остальные — дочерними (child). Раздел — наименьшая изолированная единица, поддерживаемая гипервизором. Он состоит из пространства физических адресов и одного или нескольких виртуальных процессоров. Каждому разделу назначаются конкретные аппаратные ресурсы — долю процессорного времени, память, устройства и пр. Родительский раздел создает дочерние разделы и управляет ими, а также содержит стек виртуализации (virtualizationstack), используемый для управления дочерними разделами. Родительский раздел, является также корневым (root), поскольку он создается первым и владеет всемиресурсами, не принадлежащими гипервизору. Обладание всеми аппаратными ресурсами означает среди прочего, что именно корневой (то есть, родительский) раздел управляет питанием, подключением самонастраивающихся устройств, ведает вопросами аппаратных сбоев и даже управляет загрузкой гипервизора.
Рис. 1.5 Микроядерный гипервизор
В родительском разделе содержится стек виртуализации — набор программных компонентов, расположенных поверх гипервизора и совместно с ним обеспечивающих работу виртуальных машин. Стек виртуализации обменивается данными с гипервизором и выполняет все функции по виртуализации, не поддерживаемые непосредственно гипервизором. Большая часть этих функций связана с созданием дочерних разделов и управлением ими и необходимыми им ресурсами (ЦП, память, устройства).
Стек виртуализации также обеспечивает доступ к интерфейсу управления, который в случае WindowsServer 2008 является поставщиком WMI.
Преимущество микроядерного подхода, примененного в WindowsServer, по сравнению с монолитным подходом состоит в том, что драйверы, которые должны располагаться между родительским разделом и физическим сервером, не требуют внесения никаких изменений в модель драйверов. Иными словами, в системе можно просто применять существующие драйверы. В Microsoft этот подход избрали, поскольку необходимость разработки новых драйверов сильно затормозила бы развитие системы. Что же касается гостевых ОС, они будут работать с эмуляторами или синтетическими устройствами. Необходимое ПО для этого Microsoft предоставит.
С другой стороны микроядерная модель может несколько проигрывать монолитной модели в производительности. Однако в наши дни главным приоритетом стала безопасность, поэтому для большинства компаний вполне приемлема потеря пары процентов в производительности ради сокращения фронта нападения и повышения устойчивости.
На данный момент весь рынок виртуализации для платформы x86 можно поделить согласно методу виртуализации, на следующие классы:
1. Программная паравиртуализация
2. Программная полная виртуализация
3. Аппаратная виртуализация
4. Технология виртуализации уровня операционной системы - виртуализация ресурсов.
Основным действующим лицом в любой технологии виртуализации является гипервизор: программная прослойка между гостевыми операционными системами и аппаратным обеспечением. Реализация гипервизора может быть разной.
Является решением по обходу так называемых "плохих" команд процессора, то есть тех команд ядра операционной системы, которые не поддаются виртуализации. Для этого ядро гостевой системы перед началом работы модифицируется таким образом, чтобы заменить "плохие" команды на запросы к гипервизору, который транслирует запросы к процессору. По аналогии с сетевыми технологиями, в данном случае гипервизор можно сравнить с прокси-сервером. Однако применение данной технологии долгое время было ограничено закрытостью исходного кода проприетарных операционных систем. Однако с введением изготовителями процессоров технологий аппаратной виртуализации, стало возможно запускать немодифицированные ОС на системах паравиртуализации на процессорах, поддерживающих аппаратную виртуализацию.
В 1998 году компания VMWare выпустила программный комплекс программной полной виртуализации, который был основан на бинарной трансляции кода. Код гостевой операционной системы принимался гипервизором и проверялся на наличие проблемных команд. Логика гипервизора при этом либо переводила команды на выполнение от имени гипервизора, либо заменяла определенным образом команды. Технология полной виртуализации дала возможность реализовать виртуализацию проприетарных операционных систем, как Windows, MacOS, где нет возможности модифицировать ядро системы. Однако следует отметить, что полная трансляция и модификация бинарного кода - весьма ресурсоемкая операция, поэтому такая полная виртуализация не отличается высокой производительностью.
Рис. 1.6 Полная виртуализация
Для преодоления проблем с виртуализацией процессорных ресурсов, компании Intel и AMD ввели в свои новые процессоры новый режим процессора - так называемый "гостевой" режим. Благодаря этому, гостевой операционной системе на аппаратном уровне предоставлялась возможность выполнять привилегированные команды в нулевом кольце процессора. Это значительно повысило производительность решений на базе виртуализации, ведь теперь гипервизору не нужно было выполнять ресурсозатратные действия по контролю за кодом гостевой ОС. Конечно, гипервизор сохранился, но большое количество его функций с введением аппаратной виртуализации просто исчезли. Технологии аппаратной виртуализации фирм Intel и AMD называются соответственно Intel VT и AMD SVM. Наличие или отсутствие поддержки аппаратной виртуализации является одним из пунктов описания любого современного процессора. Стоит отметить, что далеко не все новые процессоры поддерживают аппаратную виртуализацию. К примеру, популярный процессор Intel Q6600 поддерживает технологию Intel VT, а Q8200 - нет.
Кроме технологий аппаратной виртуализации процессорных ресурсов, технологии аппаратной виртуализации сделали возможным прямой доступ гостевых операционных систем к аппаратным устройствам, к примеру, жестким дискам, напрямую через канал DMA. Однако из-за этого уменьшается количество устройств, которые можно назначить гостевой ОС, и ухудшается её переносимость .
Рис. 1.7 Аппаратная виртуализация
Несмотря на казалось бы очевидный выигрыш отаппаратной виртуализации, мнение многих специалистов далеко не так радужно. Некоторые считают, что аппаратная виртуализация - рекламный ход производителей процессоров. Специалисты из VMWareусмотрели существенный минус в технологиях аппаратной виртуализации - их несовместимость с виртуализациейинструкции MMU (Memory Management Unit) - инструкции, осуществляющей доступ процессора к памяти и управляющей адресацией. Производители решения на базе аппаратной виртуализации, напримерInnotek иXen, признаются, что используют возможностивиртуализации, предоставляемый производителями процессоров, только в случаях, когда этот шаг действительно увеличивает производительность, и бывает это далеко не всегда. Возможно это связано с тем, что решения программнойвиртуализации хорошо проработаны и оптимизированы. Однако, нельзя не отметить один важный прорыв, достигнутый с помощью технологий аппаратной виртуализации - возможность запускать немодифицированные операционные системы в качестве гостевых ОС в системах паравиртуализации.
Виртуализациядаёт следующие преимущества:
· Снижение затрат на оборудование Снижение затрат обеспечивается благодаря консолидации нескольких приложений и операционных систем на одном сервере.
· Эффективное использование ресурсов Более 70% времени сервера простаивают, изнашиваясь и потребляя электроэнергию. Вряд ли имеет смысл заводить в рабочей среде сервер, у которого процессор будет загружен всего процентов на пять. Типичный пример такой загрузки — DHCP-сервер предприятия, выдающий адреса в аренду нескольким тысячам клиентов или простаивает мощный 4-х процессорный SQL Server, который обслуживает ERP систему, в то время как слабый однопроцессорный сервер SQL Server, обслуживающий «1C: Предприятие», загружен на 100%, часами обрабатывая сложную проводку. Чтобы решить проблему такого «недоиспользования», можно объединить в одном компьютере несколько ролей. Допустим, помимо DHCP-сервера вы устанавливаете на том же компьютере DNS-сервер, файловый сервер и сервер печати. Беда в том, что чем больше ролей исполняет компьютер, тем менее определенной становится его пиковая загруженность, в результате чего трудно будет уследить, чтобы компьютер не стал «узким местом». Кроме того, существенно расширяется фронт возможного нападения на компьютер, поскольку приходится одновременно держать открытыми многие порты, по которым прослушиваются обращения клиентов ко всем этим службам. Сложности возможны и с применением обновлений и исправлений. Допустим, вы решили применить обновление к одной из работающих на компьютере служб. Если это действие приведет к нежелательным последствиям, затронута будет не одна, а сразу несколько важных сетевых служб.