Что такое виртуальные машины?
Компьютерная виртуализация – это процесс представления ресурсов компьютера: процессора, памяти, дисков, сетевых карт в виде программного обеспечения (ПО). Другими словами, это абстракция компьютерных ресурсов, позволяющая манипулировать этими ресурсами как программным обеспечением. В результате этого, создаются т.н. «виртуальные машины», ВМ (“Virtual Machine, VM)”.

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

С развитием виртуализации становится возможным использовать ресурсы компьютера или сервера так, чтобы на них создавать несколько виртуальных машин.
Как появились виртуальные машины?
Поскольку современное общество сильно зависит от компьютеров, то выход из строя одного из них, или какого-либо ресурса, может привести к значительным потерям в бизнесе организации или пользователя.
Если в дата-центре каждое приложение (АРР), например, база данных (DB) или платформа для разработки какого-то программного продукта (DEV) будет занимать один физический сервер целиком, то выход его из строя может остановить весь бизнес-процесс в организации.

Кроме того, никакое приложение обычно не загружает ресурсы сервера полностью. По данным исследований, загрузка процессоров в серверах дата-центров обычно находится в пределах от 4% до 50%, и очень редко когда возрастает больше, может быть, только в случае каких-то пиковых нагрузок. А медианное значение загрузки процессоров в дата-центрах в среднем составляет 15%. Ясно, что такое положение ведёт к очень нерациональному расходованию физических ресурсов, повышению энергопотребления, удорожанию дата-центров и информационных систем предприятий, к пониженной надежности и других негативным последствиям.
Кроме того, есть и проблемы совместимости оборудования и ПО. Часто может быть так, что определённые виду приложений могут работать только на определённых видах ОС.
Именно это и привело к появлению концепции виртуализации физических ресурсов компьютеров в виде виртуальных машин.
Преимущества виртуальных машин
- Повышение удельной загрузки процессоров и более эффективное использование ресурсов серверных хостов
- Экономия пространства в дата-центре, поскольку при той же нагрузке, физических серверов нужно меньше
- Снижение стоимости оборудования, по той же причине
- Снижение затрат на обслуживание, опять-таки, по той же самой причине
- Снижение энергопотребления
- Возможность миграции ВМ между серверами и даже дата-центрами
- Повышение надежности, поскольку отказ одной ВМ немедленно приводит к запуску её резервной копии
- Повышение безопасности, поскольку в виртуализованной среде несанкционированное проникновение сделать гораздо сложнее
- Общее повышение эффективности и гибкость загрузки ресурсов, например, при перегрузке одного физического сервера часть его виртуальной нагрузки автоматически переносится на другие серверы
- Повышение доступности приложений, поскольку, если одно приложение становится нужным большему числу пользователей, то это автоматически приводит к запуску большего числа виртуальных машин
Гипервизор
Гипервизор (Hypervisor) – это программа управления и администрирования связей между виртуальными ресурсами ВМ и физическими ресурсами оборудования сервера. Кроме того, гипервизор обеспечивает возможность работы нескольких разных операционных систем, в среде которых работают ВМ.

Операционная система содержит драйверы для взаимодействия с физическими ресурсами, такими, как жесткий диск HDD, сетевая карта NIC, процессор CPU и др. Гипервизор обеспечивает доступ к этим ресурсам со стороны операционных систем каждой из ВМ. Гипервизор также называют монитором виртуальных машин VMM (Virtual Machine Monitor), который обеспечивает мультиплексирование доступа ВМ к ресурсам сервера.
Типы гипервизоров
Есть два основных типа гипервизоров
- Гипервизор, работающий «поверх железа» (“Bare—Metal”) или Тип 1. Такой гипервизор может работать прямо поверх оборудования сервера и промежуточная операционная система ему не нужна, поскольку он сам выполняет все её функции по отношению к серверу.
- Гипервизор, работающий поверх хоста (“Hosted”) или Тип 2. Гипервизор такого типа работает поверх операционной системы, предварительно установленной на сервере.

Несколько наиболее популярных гипервизоров перечислены в таблице:
Гипервизор | Базовая операционная система | Тип | Разработчик |
KVM (Kernel-based Virtual Machine) | Linux | Тип 1 | Qumranet, Inc |
XEN | Linux | Тип 1 | Linux Foundation |
VMWare Esxi | Linux | Тип 1 | VMWare Inc |
Microsoft Hyper-V | Windows | Тип 2 | Microsoft |
Oracle VirtualBox | Linux или Windows | Тип 2 | Oracle Corp. |
Виртуализованные дата центры – следующий этап
Виртуализация всего дата центра (“Virtualized Data Centers”) – это следующий этап развития технологии виртуализации.
Прежде всего, важно понять, что виртуализованные дата-центры – это не «облачные вычисления» (Cloud Computing), но это первый шаг к Облаку. В этом случае, виртуализируются не только ресурсы отдельных серверов, но и сами серверы. Облако – это инфраструктура сервисов, где ресурсы виртуальной инфраструктуры, приложения, ПО предоставляются дли общего использования (shared). Здесь ключевым является термин «сервис» (Service). Понимание различия между Облаком и виртуализованным дата-центром является ключевым для понимания определения Облака (Cloud).
В практическом смысле преимущества трансформации традиционных дата-центров в виртуализованные дата-центры (Virtualized Data Center), следующие:
- Меньшие потери электроэнергии и тепла
- Снижение затрат на оборудование
- Более быстрое развёртывание оборудования и ПО
- Ускорение тестирования и развёртывания приложений
- Быстрое перенастройка приложений
- Облегчение резервного копирования (поскольку сама виртуализованная среда его обеспечивает) и восстановления после аварий
- Стандартизация серверов и их ресурсов
- Разделение сервисов
- Легкость миграции в облако
- и другие преимущества…