Главная / Блог / виртуализация

Виртуализация.
Виртуальные машины.
Гипервизоры. Контейнеры.

Виртуализация.
Виртуальные машины. Гипервизоры. Контейнеры.

Smartiqa Article
Дата: 04 марта 2022
Автор: Евгений Поваров

1. Что такое виртуализация?

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

Дадим определение:
Виртуализация — предоставление набора вычислительных ресурсов или их логического объединения, абстрагированное от аппаратной реализации, и обеспечивающее при этом логическую изоляцию друг от друга вычислительных процессов, выполняемых на одном физическом ресурсе.
На что обратить внимание?
  1. Программно имитируется объект, который по функциям и ресурсам идентичен физически реализованному. Другими словами, программное обеспечение выглядит и ведет себя как аппаратное обеспечение. Например, в качестве имитируемого объекта может выступать виртуальная машина(VM). Виртуальная машина обладает набором логических ресурсов (процессорных, оперативной памяти, устройств хранения) и при этом считает, что эти ресурсы полностью ее и реализованы физически.
  2. Ресурсы имитируемого объекта абстрагированы от аппаратной части. Что в свою очередь значит, что эмулируемый объект получает свой необходимый набор ресурсов из общего объема физического сервера и распоряжается им, как хочет. Система "думает", что она обладает эксклюзивным доступом к вычислительным ресурсам и памяти. Например, виртуальная машина работает с тем объемом ресурсов, который был ей выделен, и ничего не знает об остальных ресурсах физического сервера.
  3. На одном физическом ресурсе несколько вычислительных процессов. На одном и том же физическом сервере может быть запущено несколько операционных систем и конфигураций серверов.
  4. Вычислительные процессы логически изолированы. Каждая виртуальная машина работает независимо, запускает разные операционные системы и приложения и при этом ничего не знает о других машинах, запущенных на том же физическом сервере.

Примеры необходимости виртуализации:
  1. Традиционный подход при организации серверной инфраструктуры подразумевает использование для каждого приложения отдельного физического сервера. Это позволяет гарантированно обеспечить такое приложение необходимыми вычислительными ресурсами при пиковой нагрузке, а также изолировать это приложение от других, чтобы сбой одного из приложений не влиял на работу остальных. Однако подобная стратегия сопряжена с линейным ростом числа физических серверов и, как следствие, с увеличением затрат на приобретение и эксплуатацию оборудования. Между тем, средняя загрузка вычислительных мощностей при такой схеме использования серверного оборудования не превышает 10%, что представляется явным расточительством. К примеру, Microsoft настоятельно не рекомендует совмещать контроллер домена Active Directory и интернет-шлюз на одном физическом сервере, так как это создает серьезную угрозу безопасности. Соответственно, многие системные администраторы ставят контроллер домена на один физический сервер, а интернет-шлюз — на другой. Тут возникает проблема: каждый отдельный сервер — стоит денег, потребляет электроэнергию и занимает место на столе либо в стойке. Особенно это становится важным, если сервера размещаются в стороннем датацентре, где взымают плату за занимаемые юниты в стойках и энергопотребление строго ограничивается. Использование под каждую такую задачу отдельного сервера выглядит нерационально. Решить данную проблему позволяет виртуализация серверной инфраструктуры.
  2. У пользователей Linux или Mac иногда возникает потребность в запуске программ, работающих только в Windows, а у Windows-пользователей, особенно программистов, потребность в запуске Linux или другой версии Windows. Классический пример — игры или Photoshop. Самый очевидный способ сделать это — купить второй компьютер, но это дорогое удовольствие. Второй вариант - поставить Windows рядом со своей основной операционной системой. Такая установка, как правило, может все сломать, но если у вас получилось, во время старта компьютера вы сможете выбрать операционную систему для загрузки. Третий и оптимальный путь — виртуализация.
  3. Корпоративные сети предъявляют повышенные требования к безопасности соединений. Представим компанию, которая имеет главный офис и несколько отделений в разных частях города или вовсе в разных регионах страны. Каждый филиал имеет собственную локальную сеть для обмена данными. При этом передача данных между филиалами осуществляется по общедоступным и незащищенным каналам. Передавать через общую сеть конфиденциальные и личные данные не только неудобно, но и опасно. На помощь так же приходит виртуализация - технология VPN(Virtual Private Network) позволяет создать между всеми офисами виртуальную сеть, которая будет осуществлять передачу информации в закодированном виде.

Выгоды виртуализации:
  1. Консолидация серверов. Виртуализация бизнес-приложений позволяет запускать несколько приложений на одном физическом сервере (хосте) вместо того, чтобы выделять для каждого приложения свой сервер. Теперь все необходимые для работы организации приложения могут работать на меньшем количестве серверов. Консолидация серверов позволяет снизить затраты на содержание серверной инфраструктуры на 50-60%.
  2. Повышение надежности. Виртуализация также позволяет существенно повысить надежность работы приложений и их устойчивость к сбоям. В случае отказа одного из серверов размещенные на нем виртуальные машины могут быть автоматически перезапущены на другом сервере и продолжат работу. Более того, для критически важных приложений, которые должны работать в непрерывном режиме, можно создать на разных физических серверах две виртуальные машины - основную и ее зеркальную копию. В случае сбоя основной виртуальной машины ее зеркальная копия обеспечит непрерывность работы такого приложения.
  3. Кластеризация. Несколько физических серверов (хостов), на которых работают виртуальные машины, можно объединить в кластер. Аппаратные ресурсы всех серверов кластера образуют общий пул ресурсов, который совместно могут использовать виртуальные машины кластера. ПО виртуализации позволяет автоматически осуществлять балансировку нагрузки на серверы, входящие в состав кластера, перемещая работающие виртуальные машины с более загруженных серверов на менее загруженные. Если общая нагрузка на кластер снижается (например, в ночное время), виртуальные машины могут быть автоматически "собраны" на небольшом числе серверов, а остальные серверы будут выключены.
  4. Легкое управление инфраструктурой.
  5. Быстрота развертывания. Развертывание нового сервера занимает определенное время. Это — установка ОС, установка драйверов, установка приложений и т.п. С виртуальными машинами все просто: можно создавать абсолютно идентичные «клоны» виртуальной машины за пару кликов мышью, и процесс займет порядка нескольких минут.
  6. Резервные копии. Даже если делается бэкап, то не всегда можно дать 100% гарантию, что из него можно будет восстановить ОС на «голом железе», и она будет работать без ошибок. Особенно — если конфигурация аппаратного обеспечения будет немного отличаться от предыдущей. В виртуальных машинах все «железо» эмулируемое и потому стандартное, и для полного бэкапа достаточно просто скопировать один или несколько файлов. Для восстановления достаточно просто скопировать файл(ы) на новый сервер, где уже установлена хостовая ОС со средой виртуализации, и «подцепить» их — и виртуальная машина будет работать как ни в чем не бывало.

2. Виды виртуализации. Общая классификация.

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

Итак, что можно виртуализировать?
1. Виртуальные машины(операционные системы)
2. Программное обеспечение
3. Память
4. Хранилище данных
5. Базы данных
6. Сеть

Рассмотрим каждый из пунктов более подробно:

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

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

2) Программное обеспечение. Включает в себя виртуализацию приложений и сервисов:
1. Виртуализация приложений - работа отдельных приложений в среде, отделённой от основной ОС. Например, Citrix XenApp, Microsoft App-V .
2. Виртуализация сервисов - эмуляция поведения системных компонентов, необходимых для запуска приложения в целях отладки и тестирования. Вместо виртуализации компонентов целиком, эта технология виртуализирует только необходимые части. Например, SoapUI, Parasoft Virtualize.

3) Память. Виртуализация памяти — объединением оперативной памяти из различных ресурсов в единый массив. Реализации: Oracle Coherence, GigaSpaces XAP.
Также одной из распространенных стратегий распределения памяти, используемой во всех современных операционных системах, является модель виртуальной памяти. Ее работа основана на идее расширения физической памяти путем размещения расширенной памяти на диске и использования таблиц страниц (или сегментов) для трансляции адресов. Поэтому, естественно, возникает идея расширить пространство логической памяти, которое может быть реализовано намного большего размера, чем физическая память.

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

5) База данных. Виртуализация данных — представление данных в абстрактном виде, независимо от нижележащих систем управления и хранения данных, а также их структуры. Это подход к унификации данных из нескольких источников на одном уровне, чтобы приложения, средства отчётности и конечные пользователи могли получать доступ к данным, не нуждаясь в подробных сведениях об исходных источниках, местоположениях и структурах данных.

6) Сеть. Виртуализация сети (network virtualization) — процесс объединения аппаратных и программных сетевых ресурсов в единую виртуальную сеть. Виртуализация сети разделяется на внешнюю, то есть соединяющую множество сетей в одну виртуальную, и внутреннюю, создающую виртуальную сеть между программными контейнерами внутри одной системы.

3. Виртуальные машины

Дадим определение:
Виртуальная машина (VM, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой гостевой платформы и исполняющая для нее программы на host-платформе.
На что обратить внимание?
  1. Виртуальная машина может быть реализована как программно, так и аппаратно.
  2. Виртуальная машина эмулирует аппаратное обеспечение. Помимо процессора, ВМ может эмулировать работу как отдельных компонентов аппаратного обеспечения, так и целого реального компьютера (включая BIOS, оперативную память, жёсткий диск и другие периферийные устройства). В последнем случае в ВМ, как и на реальный компьютер, можно устанавливать операционные системы (например, Windows можно запускать в виртуальной машине под Linux или наоборот).
  3. Гостевая ОС - операционная система, работающая внутри виртуальной машины.
  4. Виртуальные машины размещаются на хостовой платформе. Host-платформа — хост-платформа, платформа-хозяин. На одном хосте может функционировать несколько виртуальных машин.
  5. Тонкий слой ПО, называемый гипервизором, отделяет виртуальные машины от сервера и по мере необходимости динамически выделяет вычислительные ресурсы каждой виртуальной машине.

Примеры применения:
  1. Тестовые лаборатории и обучение: тестированию в виртуальных машинах удобно подвергать приложения, влияющие на настройки операционных систем, например инсталляционные приложения. За счёт простоты в развёртывании виртуальных машин, они часто используются для обучения новым продуктам и технологиям.
  2. Распространение предустановленного программного обеспечения: многие разработчики программных продуктов создают готовые образы виртуальных машин с предустановленными продуктами и предоставляют их на бесплатной или коммерческой основе.

Свойства виртуальных машин:
1. Инкапсуляция. Виртуальная машина является программным компьютером с полным набором виртуального оборудования, гостевой ОС и приложениями. При выключении виртуальная машина записывается (инкапсулируется) на диск в виде обычного набора файлов, а при включении - считывается из этого набора. Благодаря инкапсуляции виртуальные машины можно легко переносить на другой физический сервер, клонировать или создавать их резервные копии на любых устройствах хранения. Чтобы восстановить виртуальную машину после сбоя, не нужно заново устанавливать операционную систему и приложения, достаточно просто перезапустить ее из резервной копии.
2. Изоляция. При совместной работе нескольких виртуальных машин на одном физическом сервере они полностью изолированы друг от друга. Это означает, что

1) каждая ВМ может использовать только выделенную для нее часть аппаратных ресурсов и, как следствие, не оказывает влияния на производительность других виртуальных машин.
2) ВМ работают независимо друг от друга, поэтому даже если на одной из машин произойдет сбой вследствие программной ошибки, работа других машин не будет нарушена.

3. Совместимость. В отличие от физических компьютеров, аппаратная конфигурация которых может быть самой разной, виртуальные машины включают стандартный набор виртуальных "аппаратных" компонентов. Как следствие, виртуальные машины полностью совместимы со всеми распространенными операционными системами и приложениями для платформы x86. Внесения каких-либо изменений в операционные системы или приложения не требуется.
4. Независимость от оборудования. Поскольку виртуальные машины запускаются не на физическом оборудовании, а в среде гипервизора, они полностью независимы от конфигурации этого оборудования. Поэтому виртуальные машины вместе с их операционными системами, приложениями и драйверами виртуальных устройств можно без всяких изменений переносить с одного физического сервера на другой физический сервер с совершенно иной аппаратной конфигурацией.

4. Гипервизоры

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

Дадим определение:
Гиперви́зор (англ. Hypervisor) — программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких операционных систем на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.
На что обратить внимание?
  1. Гипервизор может быть реализован как программно, так и аппаратно. Гипервизор сам по себе в некотором роде является минимальной операционной системой (микроядром или наноядром).
  2. Гипервизор обеспечивает функционирование виртуальных машин и их гостевых ОС. Он предоставляет запущенным под его управлением операционным системам службу виртуальной машины, виртуализируя или эмулируя реальное (физическое) аппаратное обеспечение конкретной машины.
  3. Гипервизор изолирует гостевые ОС друг от друга. Он позволяет независимое «включение», перезагрузку, «выключение» любой из виртуальных машин с той или иной ОС.
  4. Гипервизор управляет ресурсами хоста. Он выделяет и освобождает ресурсы для виртуальных машин.
  5. Гипервизор также может предоставлять работающим под его управлением на одном хост-компьютере ОС средства связи и взаимодействия между собой (например, через обмен файлами или сетевые соединения) так, как если бы эти ОС выполнялись на разных физических компьютерах.
Виртуализация. Типы гипервизоров
Виртуализация. Типы гипервизоров.
Типы гипервизоров:

1) Гипервизор первого типа (автономный, тонкий, исполняемый на "голом железе" — Type 1, native, bare-metal) — программа, исполняемая непосредственно на аппаратном уровне компьютера и выполняющая функции эмуляции физического аппаратного обеспечения и управления гостевыми ОС. То есть такой гипервизор сам по себе в некотором роде является минимальной операционной системой.

На что обратить внимание?
  1. Автономный гипервизор имеет свои встроенные драйверы устройств, модели драйверов и планировщик и поэтому не зависит от базовой ОС.
  2. Так как автономный гипервизор работает непосредственно в окружении усечённого ядра, то он более производителен.
  3. К современным автономным гипервизорам относятся: VMware ESX / ESXi, Citrix XenServer.

2) Гипервизор второго типа (хостовый, монитор виртуальных машин — hosted, Type 2, V) — специальный дополнительный программный слой, расположенный поверх основной хостовой ОС, который в основном выполняет функции управления гостевыми ОС, а эмуляцию и управление аппаратурой берет на себя хостовая ОС.

На что обратить внимание?
  1. Хостовый гипервизор запускается на обычной ОС, как и другие приложения в системе. В этом случае гостевая ОС выполняется как процесс на хосте, а гипервизор разделяет гостевую ОС и ОС хоста.
  2. Примеры хостовых гипервизоров: VMware Workstation, VMware Player, QEMU, VirtualBox и Parallels Desktop для Mac.

3) Гипервизор гибридный (Hybrid, Type 1+) — объединенный вариант первых двух, в котором функции управления аппаратными средствами выполняются тонким гипервизором и специальной депривилегированной сервисной ОС, работающей под управлением тонкого гипервизора. Обычно гипервизор управляет напрямую процессором и памятью компьютера, а через сервисную ОС гостевые ОС работают с остальными аппаратными компонентами.

На что обратить внимание?
  1. Гибридный гипервизор состоит из двух частей: 1) из тонкого гипервизора, контролирующего процессор и память, а также 2) специальной сервисной ОС в кольце пониженного уровня.
  2. Через сервисную ОС гостевые ОС получают доступ к физическому оборудованию.
  3. Примерами данного вида гипервизоров выступают: Microsoft Virtual Server, Sun Logical Domains, Xen, Citrix XenServer, Microsoft Hyper-V, VMware Workstation

На данный момент можно выделить трех основных крупнейших разработчиков гипервизоров: VMware, Microsoft и Citrix Systems.
Разработчики гипервизоров
Разработчики гипервизоров
Последние исследования доли рынка показывают, что Microsoft Hyper-V уверенно закрепился в компаниях самого разного размера, но все же VMware по-прежнему единоличный лидер, уверенно себя чувствующий, особенно в крупных компаниях.

5. VMware

Компания VMware доминирует на рынке виртуализации серверов, и это относится не только к ее коммерческому продукту VMware vSphere. VMware занимает ведущие позиции и на рынке ПО виртуализации рабочих столов (VDI), и, возможно, в сегменте бесплатных средств виртуализации серверов со своим продуктом VMware Server. Компания VMware удерживает лидерство благодаря своим инновациям, стратегическому партнерству и надежным программным продуктам.

VMware — американская компания, крупнейший разработчик программного обеспечения для виртуализации. Штаб-квартира расположена в Пало-Альто, Калифорния. Компания основана в 1998 году Эдуардом Буньоном (Edouard Bugnion), Менделем Розенблюмом (Mendel Rosenblum), Дианой Грин (Diane Greene), Скоттом Дивайном (Scott Devine) и Эдвардом Вангом (Edward Wang). В мае 1999 года выпущен первый продукт - VMware Workstation. К 2001 году созданы первые серверные продукты - VMware GSX Server и VMware ESX Server, в 2003 году появились Virtual Center, VMotion и Virtual SMP.

Все программные продукты VMware можно разделить на следующие основные категории:
  1. Серверная виртуализация
  2. Виртуализация рабочих столов пользователей (VDI - Virtual Desktop Infrastructure, EUC - End User Computing)
  3. Сетевая виртуализация
  4. Виртуализация хранилища
  5. Облачные среды
  6. Приложения для ПК
Рассмотрим подробнее 1) Серверную виртуализацию и 6) Приложения для ПК.

1) Серверная виртуализация. Серверная виртуализация - это первый тип виртуализации, предложенный VMware. В нее входят следующие компоненты:

1. VMware vSphere — это коммерческое название всего пакета продуктов VMware. vSphere подразумевает одновременное использование ESXi хостов (x86) и vCenter Server для их централизованного управления. Последняя версия vSphere представлена следующими редакциями: Standard, Enterprise, Enterprise Plus, Essentials, Essentials Plus, Remote Office Branch Office (ROBO) Standard и Advanced, vSphere for Desktop.

2. VMware ESX — классический вариант полностью автономного гипервизора, который относится к категории архитектуры монолитного ядра. Он содержит всё необходимое для работы ВМ и по сути является автономной ОС, включающей в том числе и драйверы для работы с оборудованием. Именно на эти моменты как на архитектурные преимущества делает акцент VMware, подчеркивая, что такой подход обеспечивает наиболее полную изоляцию ВМ, а следовательно, и более высокую надежность системы в целом. Архитектура ESX - закрытая, проприетарная. ESX Server состоит из
  1. собственно гипервизора,
  2. среды исполнения (ESXi),
  3. сервисной консоли на базе ядра Linux
3. VMware ESXi — изначально версия VMware ESX без локальной консоли управления (присутствует только сильно урезанная консоль для техподдержки). Начиная с версии 5.0 ESX замещен продуктом ESXi, дальнейшая разработка ESX прекращена на версии 4.1 update 3.

4. vCenter Server – главный инструмент управления для администраторов vSphere. Он предоставляет единую точку контроля за всеми компонентами в виртуальном датацентре и выполняет некоторые важные функции. vCenter позволяет 1) конфигурировать новые ESXi хосты, хранилище, сеть и характеристики виртуального оборудования различных инфраструктурных компонентов, 2) создавать и импортировать новые виртуальные машины, 3) производить мониторинг и отчёты о производительности гостевой ОС, виртуальных машин и ESXi хостов. vCenter управляет правами, разрешениями, ролями на различных уровнях виртуальной инфраструктуры, унифицирует ресурсы различных хостов ESXi и позволяет обеспечивать общий доступ к ним для любых ВМ в датацентре. Это достигается назначением ресурсов кластера хостов ESXi виртуальным машинам с учётом назначенных администратором политик.

2) Приложения для ПК.
1. VMware Workstation — позволяет создавать и запускать одновременно несколько виртуальных машин (x86-архитектуры), в каждой из которых работает своя гостевая операционная система. Поддерживаются как 32-битные, так и 64-битные версии ОС.
2. VMware Player — бесплатный (для личного некоммерческого использования) программный продукт, предназначенный для создания (начиная с версии 3.0) и запуска готовых виртуальных машин (созданных в VMware Workstation, либо VMware Server). Бесплатное решение с ограниченной, по сравнению с VMware Workstation, функциональностью.
3. VMware Fusion — Версия VMware Workstation для Macintosh.

6. Microsoft Hyper-V

Microsoft Hyper-V — система аппаратной виртуализации для x64-систем на основе гипервизора. Бета-версия Hyper-V была включена в x64-версии Windows Server 2008, а законченная версия (автоматически, через Windows Update) была выпущена 26 июня 2008. Ранее была известна как Windows Server Virtualization.

Продукт Hyper-V – это попытка компании Microsoft дать миру, в добавок к легиону альтернативных продуктов, свой гипервизор. Microsoft стартовала в сложной ситуации, потому что:
  1. Начальные редакции были похожи на дипломные работы студентов и безнадежно отставали технологически.
  2. Рынок уже был захвачен.

Поэтому Microsoft не оставалось ничего, кроме как начать войну. И в качестве наступательной операции они выпустили отдельную редакцию Hyper-V Server, которая являлась и является до сего момента бесплатной. Hyper-V Server включает в себя полную функциональность Hyper-V, но в нем отсутствует графический интерфейс и на нем нельзя развернуть другие роли сервера. Бесплатность, приправленная миллионами бюджета маркетинга, плюс колоссальный технологический прогресс дали плоды. С каждой новой версией Hyper-V выдавал новые возможности и потянулась вереница технологий: Quick Migration, Live Migration, Storage Migration, Hyper-V Replica и много-много других, менее известных большинству специалистов, терминов. Hyper-V начала отыгрывать рынок, вплоть до 40%, которые сейчас, по разным оценкам, имеет продукт.

Таким образом, на данный момент Hyper-V существует в двух вариантах:
  1. Как отдельный продукт Microsoft Hyper-V Server
  2. Как роль Windows

Каковы же особенности архитектуры Hyper-V?

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

По мнению разработчиков Microsoft, такой подход более эффективен при высокой вычислительной нагрузке, когда используется только "тонкий" гипервизор, который в случае Microsoft занимает всего порядка 100 Кб оперативной памяти.

Hyper-V поддерживает разграничение согласно понятию раздел. Раздел — логическая единица разграничения, поддерживаемая гипервизором, в котором работают операционные системы. Стек виртуализации запускается на родительском разделе и обладает прямым доступом к аппаратным устройствам. Затем родительский раздел порождает дочерние разделы, на которых и располагаются гостевые ОС. Дочерний раздел также может породить собственные дочерние разделы. Родительский раздел создает дочерние при помощи API-гипервизора, представленного в Hyper-V.
Архитектура Microsoft Hyper-V
Архитектура Microsoft Hyper-V
Для ускорения же работы на уровне драйверов Microsoft использует два механизма взаимодействия прикладных BM с родительской:
  1. В одном случае применяется специальный внутренний интерфейс VMBus, который позволяет общаться ВМ между собой напрямую. Он доступен для ВМ, реализованных на базе Windows, а также Xen, но только для тех разработчиков, с кем у Microsoft есть соответствующий уровень сотрудничества.
  2. Для всех остальных ОС используется второй вариант полной эмуляции драйверов. Как свое преимущество Microsoft также подчеркивает наличие в ее Hyper-V проверенной модели драйверов, которая развивается в рамках Windows Server в целом на протяжении ряда лет.

7. Контейнеры. Docker.

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

Контейнеры Linux — независимые среды выполнения с собственными центральным процессором, памятью, блоком ввода-вывода и сетевыми ресурсами, которые используют ядро гостевой ОС. Контейнерная виртуализация не связана с запуском ОС в изолированном окружении - вместо этого изоляция происходит на уровне процесса ОС. На текущий момент такой вид виртуализации существует только в Linux и доступен благодаря двум возможностям ядра:
  1. Контрольные группы (cgroups). Управляют изолированием и использованием системных ресурсов — центральным процессором, памятью, — для группы процессов. Например, если ваше приложение занимает много циклов ЦП и памяти, вы можете поместить его в контрольную группу, чтобы ограничить использование памяти и ЦП.
  2. Пространства имен (namespaces). Создают оболочку для набора системных ресурсов и представляют их процессу.

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

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

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

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

Наиболее известные проекты: OpenVZ, Docker, LXC. Рассмотрим LXC и Docker подробнее.

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

В состав программных средств Docker входят:
  1. Демон — сервер контейнеров (запускается командой docker -d),
  2. Клиентские средства, позволяющие из интерфейса командной строки управлять образами и контейнерами,
  3. API, позволяющий в стиле REST управлять контейнерами программно.

1) Демон обеспечивает полную изоляцию запускаемых на узле контейнеров на уровне:
  1. файловой системы(у каждого контейнера собственная корневая файловая система),
  2. процессов(процессы имеют доступ только к собственной файловой системе контейнера, а ресурсы разделены средствами libcontainer),
  3. сети(каждый контейнер имеет доступ только к привязанному к нему сетевому пространству имён и соответствующим виртуальным сетевым интерфейсам).

2) Набор клиентских средств позволяет:
  1. запускать процессы в новых контейнерах (docker run),
  2. останавливать и запускать контейнеры (docker stop и docker start),
  3. приостанавливать и возобновлять процессы в контейнерах (docker pause и docker unpause),
  4. мониторить запущенные процессы (docker ps по аналогии с ps в Unix-системах, docker top по аналогии с top и другие),
  5. создавать новые образы из специального сценарного файла (docker build, файл сценария носит название Dockerfile),
  6. записывать все изменения, сделанные в контейнере, в новый образ (docker commit).

Все команды могут работать как с docker-демоном локальной системы, так и с любым сервером Docker, доступным по сети. Кроме того, в интерфейсе командной строки встроены возможности по взаимодействию с публичным репозиторием Docker Hub, в котором размещены предварительно собранные образы контейнеров. Например, команда docker search позволяет осуществить поиск образов среди размещённых в нём, образы можно скачивать в локальную систему (docker pull), возможно также отправить локально собранные образы в Docker Hub (docker push).
04 МАРТА / 2022
Как вам материал?

Читайте также