Гипервизоры – или все то, о чем вы давно хотели узнать

Типы гипервизоров: VMware ESXi, Xen, OpenVZ, KVM


Гипервизоры, супервизоры, телевизоры… Похожих слов достаточно, чтобы запутаться в них. Постараемся разобраться здесь с первыми двумя – ведь именно о таких интересных вещах, а не о телесериалах теперь говорят все.


Навигация по статье:


Виртуализация и гипервизор

Виртуализация – это, по существу, всегда красивая иллюзия. Гипервизор создает для верхних уровней системы эту иллюзию присутствия нескольких отдельных компьютеров – виртуальных машин – на одном и том же физическом оборудовании. Другими словами, благодаря гипервизору из одного физического компьютера возникает несколько копий, клонов его аппаратных ресурсов, и каждый клон виден со стороны пользователя как отдельное устройство. На каждую виртуальную машину можно установить гостевую операционную систему пользователя, причем не «привязанную к железу» реального, физического компьютера (т.н. «хоста» с определенной конфигурацией процессора, оперативной/дисковой памяти и т.д.). Вместо одного компьютера, у вас их несколько. И каждый работает со своим ПО независимо от других! Однако, если «поднять занавес», то воплощением каждой такой виртуальной машины окажется только файл (или набор файлов) в памяти хоста. Разумеется, если выключить физический компьютер – вся иллюзия тут же исчезнет, потому что перестанет работать гипервизор. Так же, как в театре перестают двигаться марионетки, если за сценой нет их кукловода.

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


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

К первому типу гипервизоров можно отнести XenServer (позже переименован компанией-владельцем в Citrix Hypervisor), VMware ESXi и ряд других. Проще всего воспринимать ПО такого гипервизора как специфическую компактную операционную систему, которая устанавливается прямо на «железо» («bare-metal») и имеет основные признаки ОС:

Первый тип гипервизоров

● вместо неупорядоченного набора аппаратного обеспечения предоставляет для прикладных программ абстрактный набор ресурсов (т.н. «взгляд сверху»);

● управляет набором ресурсов (распределяет процессорное время, память, устройства ввода-вывода между программами, которые претендуют на использование ресурсов компьютера, т.н. «взгляд снизу»).


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

Примечание: Супервизор – главный управляющий, центральный модуль, ядро операционной системы (может состоять из нескольких частей – супервизора программ, диспетчера задач, супервизора ввода-вывода и других). Большинство современных процессоров Intel и AMD для настольных компьютеров / серверов на аппаратном уровне поддерживает технологию виртуализации и разделение работы ОС на режимы ядра (привилегированный) и пользовательский. При этом, полномочия прикладной программы по управлению ресурсами компьютера существенно урезаны.


Размер кода в сотни раз меньше

У ПО гипервизора первого типа есть очень важная особенность – размер его кода на два порядка (т.е. в сотни раз) меньше, чем у большинства современных операционных систем. Это обеспечивает настолько же меньшее количество возможных ошибок приводящих к зависанию всей системы. Сбой в работе ОС на одной из виртуальных машин пользователя не должен повлиять на работу всех соседних машин на том же физическом оборудовании. Одним из важнейших требований к гипервизору, является именно безопасность, достигаемая за счет передачи гипервизору полного управления аппаратными ресурсами компьютера, на которых выполняется виртуализация. Следовательно, задачей гипервизора является выполнять машинные инструкции безопасным образом, не позволяя гостевой ОС:

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

Схема работы виртуальной машины (VM)

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


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

  • действий пользователя – ввода с клавиатуры, мыши;
  • завершения работы медленного периферийного оборудования – принтера и т.д.

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

Гипервизоры 2 типа и гибридные

Вторым вариантом является установка и работа гипервизора как одного из процессов, запущенных на уже работающей ОС (чаще всего – Linux). В этом случае, полномочия гипервизора (его нередко называют хостовым, поскольку работает он на одном уровне с хостовой операционной системой) значительно скромнее. К таким гипервизорам второго  типа относят VirtualBox, VMware Workstation, а также KVM (изначально тесно интегрированный с основной хост-системой Linux, с открытым исходным кодом, загружаемым модулем ядра kvm.ko, компонентами пользовательского режима QEMU и процессорно-специфического модуля).


Второй тип гипервизоров

Существуют также гибридные гипервизоры, обладающие частью признаков как 1, так и 2 типов (сочетание «тонкого» гипервизора и специальной, работающей «на железе» служебной ОС под его управлением). Гипервизор управляет напрямую процессором и памятью, а через служебную ОС гостевые получают доступ к устройствам ввода-вывода. Одним из наиболее широко известных гибридных гипервизоров является Microsoft Hyper-V (как отдельный продукт и как роль Windows Server R2 2012, Windows Server 2012, Windows Server R2 2008, Windows Server 2008, некоторых версий Windows 8, Windows 8.1, Windows 10).


Популярным решением является паравиртуализация – установка специально подготовленной гостевой ОС, код которой доработан (изменен) для эффективной работы с гипервизором 2 типа. Конечно же, речь не может идти о модификации проприетарных систем с закрытым кодом (таких, как Windows). Зато, для доработки большинства версий Linux разрешение владельца не требуется.


Высоким интересом у провайдеров услуг VDS (виртуальных выделенных серверов) пользуются контейнерные решения виртуализации, основанные на доработанном ядре Linux. Среди них широко распространен гипервизор OpenVZ, на котором основана платформа Virtuozzo. В этом случае (использования на «хосте» ядра Linux), гостевыми ОС тоже могут быть только представители семейства Linux. Преимуществом решения OpenVZ является хорошая производительность, максимальное использование ресурсов физического сервера за счет высокой плотности размещения ВМ. Интересным решением является Jailhouse от Siemens – этот гипервизор работает «на железе», но запускается на работающей системе Linux и обеспечивает ее разделение на изолированные «ячейки» - разделы системы для выполнения приложений пользователя.


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


Системы виртуализации и гипервизоры для серверов: VMware ESXi, Xen, OpenVZ, Virtuozzo, KVM, Jailhouse


Выбор оптимальной технологии виртуализации для каждого пользовательского случая должны сделать специалисты, которые учтут имеющееся физическое аппаратное обеспечение, цену ПО, наличие и доступность техподдержки и ряд других важных факторов. Например, планируя использование VMware ESXi (и некоторых других гипервизоров) будьте готовы к требованиям оплаты лицензии и достаточно современного физического оборудования для установки системы виртуализации. При подготовке к работе с гипервизорами:

  • уделите время тщательному изучению информации на сайте производителя ПО виртуализации;
  • предварительно проверьте соответствие параметров имеющегося физического оборудования минимальным техническим требованиям гипервизора;
  • проанализируйте другие свойства выбранного ПО (для того, чтобы реальность совпала с ожиданиями).



Автор: Станислав Комухаев

Понравилась статья? Поделитесь ею в социальных сетях!