Как упростить разработку с помощью виртуализации
Человек, работая за компьютером, постоянно запускает разные программы. У программистов количество приложений, необходимых для работы, может исчисляться десятками. Более того, иногда приходится запускать программы, которые работают только в другой операционной системе, отличной от той, в которой работает программист.
В качестве примера можно привести проекты на Хекслете, где в рамках задания студенту нужно записать, что происходит в терминале. Эта задача становится трудновыполнимой, если ваша основная система — Windows. Программа, которая записывает терминал — asciinema, работает только в Linux. Как можно решить эту проблему? И почему нельзя просто взять и запустить программу из одной ОС в другой операционной системе?
Начнём с того, что программы, которые мы пишем, не взаимодействуют напрямую с железом. Например, когда мы вводим символы на клавиатуре, их сначала обрабатывает специальный драйвер, встроенный в операционную систему, и только потом они попадают в поле ввода и отображаются. В данном случае обработка настолько быстрая, что мы даже не задумываемся о ней. То же самое в отображении: мы запускаем множество разных процессов, просто двигая курсор мыши. Одна из главных задач операционных систем — предоставить возможность программам взаимодействовать с железом компьютера, и в разных операционных системах для этого используются разные функции.
Операционные системы — одни из самых сложных программ, если не самые сложные. Они разрабатывались разными людьми и в разное время. Логично, что подходы к работе с устройствами в них кардинально отличаются. Это одна из основных причин, почему нельзя просто скопировать программу в другую операционную систему и запустить её там. В качестве примера, не связанного с железом, можно сказать, что графические оболочки разных ОС тоже полностью отличаются. Например, в Linux нет понятий «Кнопка пуск» или «трей». В некоторых реализациях отсутствуют даже привычные нам всем окна.
Но всё же у разработчиков часто возникает потребность запуска программ, работающих только в одной ОС, и эта проблема имеет решение.
Самый очевидный способ — купить второй компьютер, но это дорогое удовольствие. Второй вариант — поставить Linux рядом со своей основной операционной системой. Такая установка может завершиться неудачей, так как операционные системы, как правило, не ожидают, что рядом с ними будет работать другая похожая программа. Но если всё получилось, во время старта компьютера вы сможете выбрать ОС для загрузки. Существует также и третий путь — виртуализация, о ней и поговорим.
Узнайте больше об операционных системах У нас есть курс по операционным системам. Зарегистрированные пользователи могут пройти его бесплатно. Другие бесплатные курсы можно найти по ссылке.
Что такое виртуализация
Виртуализация позволяет запускать в текущей операционной системе программы, созданные для другой операционной системы. Это возможно благодаря виртуальной машине, которая работает внутри текущей операционной системы. На виртуальную машину устанавливается любая нужная в данный момент ОС. Стоит сказать, что виртуальных машин может быть много, каждая из них при этом выглядит как отдельный компьютер со своими характеристиками.
Виртуализация имеет очень богатую историю, а первая операционная система с её поддержкой появилась еще в 1968 году. Тогда же программисты поняли, что если можно запустить одну виртуальную машину, значит можно запустить и вторую, и третью. Возникла потребность управлять множеством таких машин, и появился первый гипервизор. По сути, это операционная система для управления виртуальными машинами.
Например, у нас есть две виртуальные машины, которые мы хотим использовать одновременно. Каждая из них должна иметь свой виртуальный жесткий диск и оперативную память. Логично, что кто-то должен следить за тем, чтобы одна из операционных систем случайно не начала записывать данные в области памяти, которые использует другая виртуальная машина. Этим как раз и занимается гипервизор: он изолирует и разделяет ресурсы виртуальных машин.
Операционная система (или компьютер), внутри которой запускается виртуальная машина, называется хост-системой (host), а ОС, работающую в виртуальном окружении, называют гостевой (guest).
Гипервизоры, по большому счёту, делятся на два типа: которые работают внутри операционной системы хоста, и для запуска которых хостовая ОС не нужна. Последние умеют работать прямо на голом железе. На настольных компьютерах наибольшее распространение получил первый тип.
В качестве примеров гипервизоров первого типа можно привести: VMware Workstation, QEMU и VirtualBox. А ко второму типу относится, например, автономный гипервизор VMware ESX.
Какие существуют виды виртуализации
Виртуализацию делят на три вида в зависимости от подхода к её реализации.
Программная виртуализация
Этот вид также подразделяется на несколько подвидов. В статье мы не будем подробно рассматривать каждый из них, так как в настоящее время программная виртуализация используется не так широко. Виртуальные машины на её основе значительно менее производительные по сравнению с другими видами виртуализации. Если интересно с чем это связано, подробнее можно почитать в Википедии.
Аппаратная виртуализация
Для её работы требуется поддержка со стороны процессора. Наибольшее распространение получили технологии Intel-VT и AMD-V, в настоящее время большинство процессоров для домашних компьютеров поддерживают одну из них. Аппаратная виртуализация не получила бы такого широкого распространения, если бы не преимущества, которые обеспечивает данный подход. Эти преимущества описаны ниже.
Первое преимущество: при аппаратной виртуализации виртуальные машины управляются гипервизором напрямую, в отличие от программной виртуализации, где, например, решение о выделении памяти для виртуальной машины сначала принимает операционная система хоста, и только после подтверждения гипервизор может предоставить ей ресурсы. Благодаря этому производительность гостевых ОС значительно повышается и достигает эффективности, сравнимой с реальным компьютером с такой же конфигурацией.
Второе преимущество: так как конфигурация виртуальной машины полностью эмулируется гипервизором, установщик операционной системы не нужно модифицировать. Выбираем нужные устройства в настройках, подключаем любой стандартный установочный образ нужной операционной системы и запускаем виртуальную машину. Более того, если у вас ещё сохранился процессор с 32-битной архитектурой, с помощью аппаратной виртуализации можно настроить виртуальную машину с 64-битным процессором и установить соответствующую ОС. Независимость от платформы хоста открывает поистине бесконечные возможности для экспериментов.
Контейнеризация или контейнерная виртуализация
Это виртуализация на уровне операционной системы. Если аппаратная виртуализация полностью эмулирует оборудование и позволяет запускать любые ОС, внутри контейнера можно запустить только аналогичную хосту операционную систему. Преимуществом этого подхода является скорость, с которой создаётся контейнер — секунды, тогда как для запуска виртуальной машины счёт времени идёт на минуты. Так происходит потому, что полноценной виртуальной машине нужно сначала инициализировать всё оборудование, запустить эмуляцию и только после этого начать загружать операционную систему. При контейнеризации ОС по факту уже работает. Остаётся только создать замкнутую среду — тот самый контейнер, в котором будет запущен ещё один экземпляр операционной системы.
Контейнер представляет собой всего лишь один процесс, внутри которого выполняется операционная система. Она существует в своём собственном мире, со своей сетью, своим диском, своей файловой системой и так далее. Эту виртуализацию применяют на уровне сервисов, составляющих части программного продукта. Наиболее известные проекты: OpenVZ, Docker, LXC.Так как Docker очень широко применятся в разработке, у нас есть подробный гайд о том, что это такое, как с ним работать и какие он даёт преимущества — Как и для чего использовать Docker.
Дополнительные возможности виртуализации
В начале 2000-x компания VMWare быстро захватила корпоративный рынок, выпустив гипервизор ESX Server и создав тем самым конкурентную среду. Начиная с этого момента технологии виртуализации стали стремительно развиваться. Огромное количество предприятий начали использовать виртуализацию для решения разных задач.
Резервное копирование
Виртуальная машина по сути представляет из себя набор файлов конфигурации и жесткого диска, а оперативную память тоже можно сохранить в виде файла. Учитывая эти особенности и возможность «заморозить» работу виртуальной машины, стало возможным делать бэкапы виртуальных серверов целиком. Потом, в случае поломки сервера, можно восстановить его из резервной копии. При этом не важно, будет он работать физически на этом же железе или новом, главное, чтобы был установлен нужный гипервизор. Помните, что аппаратная виртуализация даёт независимость от хост-платформы?
Возможность «заморозить» (поставить на паузу) работу виртуальной машины можно использовать для быстрого переключения между окружениями. Допустим, вы разрабатываете приложение для Windows. У вас открыто окно соответствующего редактора, запущены вспомогательные процессы и так далее. Но в тоже время вам нужно работать над другим проектом с совершенно другим окружением и в другой операционной системе.
Работая в виртуальной среде, можно поставить виртуальную машину на паузу и поработать над другим проектом. А когда нужно будет вернуться к первому, достаточно просто оживить виртуальную машину и продолжить работу с того места, на котором вы остановились. Так сохраняется контекст и экономится время, так как всё нужное, вплоть до интерфейса окон, уже настроено и правильно расположено на экране.
Быстрое создание среды для разработки
Современные веб-проекты требуют установки и настройки большого количества инструментария, библиотек и их зависимостей, серверов баз данных и так далее. Контейнеризация позволяет свести множество действий к запуску пары команд в терминале.
Виртуализация серверов
Так как на одном физическом сервере может располагаться множество виртуальных машин, на которых запущены другие серверы, расходы на их содержание значительно упали. В данный момент можно очень дешево арендовать ресурсы такого виртуального сервера VPS. На таких серверах, например, часто хостятся сайты.
Гипервизоры, платформы виртуализации, облачные платформы
Еще лет 5-ть назад, какого нибудь не продвинутого ИТ-шника можно было запросто поставить в тупик словами типа, «виртуализация», «гипервизор». Несколько лет назад пугали не особо известными платформами виртуализации класса Proxmox и XenServer. Сейчас же очень круто пугать ИТ-шников новомодными названиями платформ для построения облаков типа OpenStack и CloudStack.
Хочу утрясти информацию в собственной голове и в головах тех кто еще не понимает, что есть что и с чем его едят. А так же заложить базу для последующих статей которые будут значительно понятнее и полезнее понимая изложенный в этой статье материал.
Гипервизор — ядро платформы виртуализации
Сейчас о гипервизорах как таковых почти не говорят и с пеной у рта не спорят какой лучше т. к. свои прямые обязанности современные гипервизоры выполняют примерно одинаково а исход битвы между платформами виртуализации решается на более высоком уровне а именно на уровне функционала дополнительных утилит и средств управления всем этим хозяйством. По большому счету, гипервизор — это прослойка программного обеспечения, или даже микро операционная система лежащая между физическим оборудованием и виртуальными «коробочками» с виртуальным(эмулированным) железом в рамках которых запускаются операционные системы чувствующие себя в этих виртуальных коробочках как на железных серверах. Гипервизор выполняет функции контроля и распределения физических ресурсов между виртуальными машинами а так же обеспечивает изоляция множества операционных систем друг от друга(каждая в своей коробочке). Так же, сейчас в некоторых случаях уже можно считать обеспечение сетевого взаимодействия, безопасности и защиты виртуальных машин одними из функций гипервизора. На сегодняшний день, наиболее функциональными и распространенными гипервизорами являются ESXi(VMware), Xen(Citrix), Hyper-V(Microsoft) и KVM(RedHat). Каждый из перечисленных гипервизоров лежит в основе различных платформ виртуализации. Популярный OpenVZ не привожу в качестве гипервизора т.к. На мой взгляд это все таки немного другое.
Дополнительные утилиты
Гипервизор сам по себе, почти бесполезная вещ. Например эмуляция многочисленного виртуального оборудования в гипервизоре KVM выполняется пакетом QEMU, а реализация сетевой подсистемы представленной в виде виртуального многоуровневого коммутатора занимается открытый пакет под названием Open vSwitch. Open vSwitch так же лежит и в основе сетевой подсистемы в Xen Server и десктопного VirtualBox’a. Дополнительными утилитами так же можно считать программное обеспечение позволяющее интегрироваться с службами каталогов типа Active Directory а также различной реализации средства мониторинга, резервного копирования и средства работы с сетью и системами хранения данных типа NAS, SAN. Эти и многие другие примочки дополняют функции гипервизора а иногда являются его частью предоставляя нам дополнительные удобства и средства контроля.
Платформы виртуализации
Платформа виртуализации – это связка гипервизора, дополнительных компонентов и удобных средств развертки, настройки и управления всем этим хозяйством. Под средствами управления и настройки я понимаю программное обеспечение типа vSphere Client или vCenter Server для централизованного управления ESX/ESXi, XenCenter для XenServer, Proxmox с KVM на борту а так же oVirt который основан на библиотеке libvirt и способен управлять множеством гипервизоров но в основном конечно открытые KVM и Xen. Сущестует еще множество систем управления теми или иными гипервизорами а так же WEB-управлялок и консольных утилит типа того же libvirt. Совокупность гипервизора, дополнительных утилит, средств централизованного объединения и управления, мониторинга и обслуживания виртуальной инфраструктуры(в основном на базе одного гипервизора) представляет собой платформу виртуализации. На сегодняшний день, наиболее развитыми, популярными в различных сегментах можно считать; VMware vSphere(на базе ESX/ESXi), XenServer(на базе Xen), RHEV(на базе KVM), Hyper-V(понятно на чем) а так же открытые ProxmoxVE (на базе KVM), хоть и не особо развитый и популярный но подающий надежды oVirt(на базе KVM,Xen …).
Облачные платформы (Наиболее интересная часть статьи)
Платформы для построения облаков предоставляют нам дополнительный уровень иерархии позволяя абстрагироваться не только от физического оборудования но и от различных гипирвизоров совместно используемых в единой инфраструктуре. Облачные платформы не отменяют и не заменяют полностью, привычные средства управления а вводят новые понятия и предоставляют новые возможности делая работу с огромными инфраструктурами проще и логичнее не только для администраторов но и для простых пользователей которые являются неотъемлемой частью концепции облаков. Платформы «облачного» класса позволяют объединить обычно не совместимые между собой платформы виртуализации а так же различные ресурсы в единый пул, предоставляя удобный, централизованный интерфейс управления, распределения и контроля. При чем некоторая часть возможностей управления своей маленькой частью большого облака делегируется пользователям/владельцам.
Основные(на мой взгляд) критерии облачной платформы:
- Портал самообслуживания
Пользователи/клиенты должны иметь возможность самостоятельно создавать, запускать/останавливать инcтансы. При этом должна быть возможность определить лимиты пользователя. Например: не более 2-х инстансов/не более 2-х публичных IP/не более 6-и снапшотов и т.п.
- Настраиваемые шаблоны инстансов
Все инстансы, в идеале должны разворачиваться из шаблонов за раннее определенных администратором инфраструктуры. Напрмер: Smal Instance = 1 Core/ 500 MHZ/ 512 MB/20 GB; Medium Instance = 1 Core/ 1GHZ/ 1GB/50 GB и.п.
В таком случае, создание нового инстанса сводится к простому выбору шаблона с понятным именем. Также, шаблоны не позволяют выделить для нового инстанса больше ресурсов чем определено в шаблоне, что в некоторых случаях обезопасит от перерасхода ресурсов.
- Проекты/Виртуальные дата-центры
В случае с Iaas, должна быть возможность выделить пользователю/клиенту некий пул ресурсов над которым ему делегируется управление. Доступ к этим выделенным ресурсам осуществляется через упрощенный административный интерфейс. В таком пуле ресурсов(в CloudStack наывается проэктом) пользователь/клиент сам способен определять шаблоны инстансов, изменять конфигурацию сетевого взаимодействия между своими инстансами и прочее.
- Гибкое управление правами учетных записей
Тесная интеграция с службами каталогов типа Active Directory и возможность гибко разграничивать возможности администраторов, пользователей и групп пользователей.
- Скрытие внутренней архитектуры от пользователей/клиентов облака
В портале самообслуживания или в админке проекта/вирт.датацентра пользователю не должно быть видно внутреннее устройство облака. Пользователь видит абстрактные ресурсы и пользуется ими как угодно не подозревая на чем именно все работает и как взаимодействует.
- Не обязательно поддержка множества гипервизоров(KVM, ZEN, ESXi и.д.)
Конечно, чем больше поддерживается платформ виртуализации тем продукт будет популярнее. Так же в плюсы можно добавить возможность создания архитектуры на базе разных продуктов задействовав сильные стороны каждого из них. Например ProxmoxVE, предлагает более эффективную контейнерную виртуализацию на базе OpenVZ на ряду с полной виртуализацией KVM в случаях когда о контейнерах не может идти и речи, например при виртуализации Windows систем. Но тем не мене, чаще всего компании, внедряющие у себя или где либо технологии виртуализации, останавливаются на выборе одного продукта для всех случаев. Одна платформа значительно сокращает количество проблем и сложностей при внедрении и дальнейшей поддержке.
На сегодняшний день, если брать за основу описанные выше критерии то облачными платформами можно считать VMware vCloud Director, Xen Cloud Platform, CloudStack, OpenNebula, Eucalyptus и с натяжкой активно развивающийся но все еще очень сырой и не пригодный к использованию OpenStack. Выше описанные критерии составлены из опыта работы с CloudStack и OpenNebula показавшие себя как вполне зрелые для развертки платформы. Хотя, мое мнение, что все опенсорсное еще очень и очень сырое….
Основы виртуализации (обзор)
В последние несколько лет все больше и больше людей ищут возможность войти в ИТ или повысить уровень своей квалификации. Вместе с тем полноценных обзоров по основам виртуализации написано не так уж и много (особенно на русском языке).
Главная задача данной статьи – объяснить начинающим специалистам необходимость виртуализации, указать на точки ее практического применения и дать ключевые понятия для дальнейшего изучения. По этой причине (а еще, безусловно, вследствие недостаточной квалификации автора) теоретический материал достаточно сильно упрощен.
История
На заре развития компьютеры (или ЭВМ, электронно-вычислительные машины) были очень дорогим и штучным инструментом, позволить который могли себе только наиболее крупные институты и предприятия. Вычислительные ресурсы приходилось экономить всеми возможными способами. Первые разработчики писали код в режиме «офлайн» и передавали их оператору ЭВМ, который последовательно вводил программы в машину и производил расчеты. В начале 1960-х годов зародилась концепция разделения времени (time-sharing) – распределение вычислительных ресурсов между несколькими пользователями: пока один вводит данные, машина занимается расчетами других. Первые проекты с поддержкой данной концепции – Compatible Time-Sharing System (CTSS), Project MAC и предшественница ОС семейства Unix Multics – стали настоящим прорывом, однако они были небезопасными, сложными и, как следствие, не слишком стабильными.
В поисках путей решения проблемы оптимизации использования вычислительных ресурсов командой инженеров IBM был предложен новый подход – в рамках одной ЭВМ предоставить каждому пользователю виртуальную машину со своей ОС. Так в 1964 году появился проект CP-40, который позволил запускать несколько экземпляров клиентских ОС, например CMS. В 1967 году на основе проекта CP-40/CMS появилась CP-67/CMS – многопользовательская операционная система с разделением времени. CP-67/CMS работала на аппаратном мейнфрейме IBM System/360-67 и состояла из двух компонентов:
CP (Control Program)
Программа управления виртуализацией (прообраз современного гипервизора).
CMS (Cambridge Monitor System)
Одна из наиболее распространенных однопользовательских операционных систем для запуска в виртуальном окружении CP (клиентская, или гостевая, ОС).
Пользователи подключались к гостевым ОС с помощью специальных устройств ввода-вывода – терминалов.
Виртуализация обладала существенными преимуществами над концепцией разделения времени:
Увеличенные надежность и безопасность за счет изоляции пользователей.
Запуск любых приложений (не только приспособленных к концепции разделения времени) за счет симуляции отдельного компьютера для каждого пользователя.
Увеличенная производительность за счет использования легковесных гостевых ОС.
Шло время, компьютеры уменьшались в размерах и дешевели. В 1980-х годах x86 серверы и персональные компьютеры стали доступны для широкого спектра потребителей, вследствие чего мейнфреймы с виртуализацией и терминалами для многопользовательской работы ушли в прошлое. Однако технологии виртуализации продолжали развиваться и решать насущные проблемы. В 1988 году компания Insignia Solutions представила эмулятор программного обеспечения SoftPC, с помощью которого можно было запускать приложения MS DOS на рабочих станциях Unix, что стало своеобразным прорывом. В 1997 году компания Connectix создала программу Virtual PC для запуска под Mac ОС Windows. В 1999 году ныне всемирно известная компания VMware представила VMware Workstation, которая позволила запускать различные ОС в рамках виртуальных машин.
В начале 2000-х годов стали появляться продукты для серверной виртуализации. Эти решения дали возможность запускать несколько изолированных гостевых ОС в виртуальной среде на одном физическом сервере, что упрощало администрирование инфраструктуры, повышало ее отказоустойчивость и снижало простои серверного оборудования. Идея серверной виртуализации быстро набирала популярность. В 2001 году VMware представила ESX Server и GSX Server. В 2003 году Microsoft купила вышеупомянутую Connectix и перезапустила проект Virtual PC, ставший предшественником Microsoft Virtual Server и современного Microsoft Hyper-V). В 2007 году компанией Innotek был представлен VirtualBox. Также в 2007 году на рынок корпоративной виртуализации вышла компания Citrix, которая купила компанию XenSource и начала развивать проект с открытым исходным кодом Xen, предоставляя для клиентов коммерческую версию продукта Citrix XenServer (в настоящее время переименован в Citrix Hypervisor).
Напоследок стоит отметить, что помимо серверной виртуализации появлялись также продукты для виртуализации рабочих столов (новое воплощение той самой связки мейнфрейм-терминал из 1960-70 г.г.), приложений и др. Многие из этих решений активно развиваются и сегодня.
Виртуализация сегодня
Основные понятия
Итак, виртуализация – это сокрытие конкретной реализации за универсальным стандартизованным методом обращения к ресурсам. Иными словами, это создание абстракции над аппаратным обеспечением.
Существует много видов виртуализации, однако можно выделить три основных:
Аппаратная виртуализация.
Позволяет создавать независимые и изолированные друг от друга виртуальные компьютеры с помощью программной имитации ресурсов (процессора, памяти, сети, диска и др.) физического сервера. Физический сервер называют хостовой машиной (хостом), виртуальные компьютеры – виртуальными машинами, ВМ (иногда их также называют гостями). Программное обеспечение, которое создает виртуальные машины и управляет ими, называют гипервизором (а также виртуальным монитором или контрольной программой – вспомните CP-40 из начала статьи). На практике на виртуальных машинах могут использоваться разные ОС для разных целей – например, Windows Server под контроллер домена Active Directory и Debian под веб-сервер NGINX.
Виртуализация рабочих столов.
Позволяет отделить логический рабочий стол (набор пользовательских программ, работающий под ОС) от физической инфраструктуры (например, персональных компьютеров). Одной из наиболее распространенных форм виртуализации рабочих столов является VDI (Virtual Desktop Infrastructure) – инфраструктура виртуальных рабочих столов. Каждый пользователь VDI имеет программную имитацию ОС с необходимым набором программ на физическом сервере под управлением гипервизора и может подключаться к ней по сети. На практике VDI может использоваться для работы большого количества сотрудников на «удаленке» для того, чтобы не закупать им отдельные рабочии станции и управлять инфраструктурой централизованно.
Виртуализация на уровне ОС (контейнеризация).
Позволяет запускать программное обеспечение в изолированных на уровне операционной системы пространствах. Наиболее распространенной формой виртуализации на уровне ОС являются контейнеры (например, Docker). Контейнеры более легковесны, чем виртуальные машины, так как они опираются на функционал ядра ОС и им не требуется взаимодействовать с аппаратным обеспечением. На практике контейнеры представляют из себя изолированную среду для запуска любого приложения со всеми его зависимостями и настройками.
Виртуализация серверов
Виртуализация серверов – это процесс разделения физического сервера на несколько уникальных и изолированных виртуальных машин (серверов) с помощью программного обеспечения (гипервизора). На каждом виртуальном сервере могут независимо выполняться собственные операционные системы.
Виртуализация серверов позволяет:
Оптимизировать затраты на покупку серверного оборудования.
Под каждую задачу выделяется виртуальный сервер с необходимым количеством ресурсов (ЦПУ, ОЗУ и др.), простои оборудования минимизируются.
Упростить сопровождение инфраструктуры.
Создание, удаление или обслуживание виртуальной машины как правило проще и быстрее, чем аналогичные операции с физическим сервером.
Повысить отказоустойчивость инфраструктуры.
Виртуальные машины изолированы друг от друга, программный сбой на одной них не приведет к потере работоспособности сервисов и приложений на остальных.
Гипервизор обеспечивает изолированную среду выполнения для каждой виртуальной машины, а также управляет доступом ВМ и гостевых ОС к аппаратным ресурсам физического сервера. Говоря простыми словами, гипервизор обеспечивает параллельное и независимое функционирование нескольких операционных систем на одном компьютере. В классическом подходе гипервизоры группируются по двум типам: гипервизоры первого типа запускаются непосредственно на аппаратном обеспечении компьютера («железе»), а гипервизорам второго типа для работы необходимо наличие хостовой операционной системы. В последние несколько лет классическая классификация претерпевает изменения – добавился гибридный тип гипервизоров (тип 1.5), который сочетает характеристики первого и второго типов.
Гипервизоры первого типа (native, bare-metal)
Гипервизор первого типа выполняется как контрольная программа непосредственно на аппаратной части компьютера и не требует ОС общего назначения. В данной архитектуре гипервизор управляет распределением вычислительных ресурсов и сам контролирует все обращения виртуальных машин к устройствам.
Гипервизоры первого типа показывают высокое быстродействие, однако обладают очевидным недостатком – необходимость поддерживать драйверы устройств приводит к сужению списка совместимого аппаратного обеспечения.
KVM (Proxmox VE) – может быть также отнесен ко второму типу;
Xen (Xenserver, Citrix Hypervisor), Hyper-V – могут быть также отнесены к гибридному типу.
Гипервизоры второго типа (hosted)
Гипервизор второго типа выполняется поверх хостовой операционной системы (как правило Linux). Он управляет гостевыми операционными системами, в то время как эмуляцией и управлением физическими ресурсами занимается хостовая ОС.
Гипервизоры второго типа показывают меньшее относительно гипервизоров первого типа быстродействие и реже используются в промышленной эксплуатации, однако отлично подходят для задач обучения и разработки ПО.
KVM (Proxmox VE) – может быть также отнесен к первому типу.
Гипервизоры гибридного типа (hybrid)
Гибридный гипервизор сочетает в себе характеристики гипервизоров первого и второго типов – он выполняется поверх специализированной сервисной (или базовой) операционной системы. Сервисная ОС называется родительским разделом или доменом (parent partition в терминологии Hyper-V или domain dom0 в терминологии Xen). После установки гипервизора ядро ОС переходит в режим поддержки виртуализации и передает управление ресурсами процессора и памяти гипервизору. При этом родительский раздел берет на себя функцию обработки обращений к драйверам устройств и операциям ввода-вывода.
Данный подход удобен с точки зрения совместимости с оборудованием: не требуется добавлять в гипервизор драйверы устройств (расширяется список совместимого аппаратного обеспечения). Также гипервизор освобождается от задачи обработки вызовов к драйверам устройств – эти вызовы обрабатывает сервисная ОС.
Примеры: Xen (XenServer, Citrix Hypervisor), Hyper-V – могут быть также отнесены к первому типу
Кластер узлов виртуализации
Виртуализация на одном физическом сервере дает неплохие результаты, однако имеет ряд очевидных недостатков – например, в случае отказа этого сервера построенная инфраструктура полностью теряет работоспособность. По-настоящему ярко технология виртуализации раскрывается только при создании кластера из нескольких физических хостов. Кластер узлов виртуализации (или просто кластер виртуализации) – это объединение группы физических серверов, которое представляется конечным потребителям как общий вычислительный ресурс с единой точкой управления. При этом виртуальные машины запускаются на разных физических серверах и могут перемещаться (мигрировать) между ними, что обеспечивает высокую доступность (High Availability, HA) и гибкое распределение ресурсов (нагрузки). Практически все вышеперечисленные гипервизоры имеют программные механизмы для объединения в кластер – VMWare vSphere, Hyper-V Failover Clustering и др.
Абсолютное большинство крупных и средних компаний, поддерживающих собственную серверную инфраструктуру, используют кластеры виртуализации. Инфраструктура облачных провайдеров, предоставляющих для пользователей услуги аренды серверов, также строится на кластерах виртуализации. Но это уже совсем другая история.
За помощь в подготовке статьи автор выражает искреннюю благодарность @novikov0805, @Eviil и @KoPashka
Платформы виртуализации. Обзор
Виртуализация обычно подразумевает логическое объединение вычислительных ресурсов и абстрагирование их от физического оборудования — например, сервера или компьютера. У виртуальной машины есть свой пул логических ресурсов: CPU, RAM и дисковое пространство. Так, благодаря виртуализации, на одном физическом сервере можно запустить несколько независимых виртуальных машин.
Другой пример виртуализации — одновременный запуск нескольких операционных систем (ОС) на одном компьютере (контейнерная виртуализация). Каждая система работает со своим набором ресурсов, которые предоставляются из общего пула на уровне устройства. Этим пулом управляет хостовая система — гипервизор.
На рынке представлено множество платформ, которые поддерживают разные типы виртуализации и предназначены для разных задач. Тем не менее, основная область применения технологий виртуализации — облачные сервисы.
Преимущества виртуализации
- Главное преимущество виртуализации — это эффективное сокращение расходов на поддержку ИТ-инфраструктуры за счет экономии физических ресурсов, повышения уровня автоматизации процессов, адаптивности и масштабируемости бизнеса.Виртуализация помогает исключить расходы на покупку дополнительных серверов и их обслуживание, при этом максимизировать пользу имеющихся ресурсов.
- Еще одно преимущество этой технологии заключается в надежности: в критических ситуациях можно легко восстановить данные с помощью резервного копирования ВМ. Процесс можно автоматизировать, чтобы система сохраняла всю актуальную информацию в бэкапах. Это сокращает вероятность простоя бизнеса.
- Платформы виртуализации создают гибкую среду для тестирования различных проектов — например, в сфере разработки ПО. Виртуализация также создает основу для внедрения облачных решений, которые повышают контроль бизнеса над критичными данными.
Сейчас на рынке представлено множество решений виртуализации: продукты VMware, vStack, платформа от Microsoft и другие. У каждого есть свои преимущества, которые подходят для решения различных задач бизнеса. Расскажем о них подробнее:
VMware
VMware — американская компания, лидер среди поставщиков решений для виртуализации. К ним относятся: vSphere (ПО для виртуализации серверов), vCenter Server (ПО для централизованного управления серверами), NSX Data Center (виртуализированные службы сети и безопасности) и Horizon 7 (платформа для виртуальных компьютеров и приложений). Компания постоянно расширяет функциональность.
Продукты могут быть слишком сложными и дорогостоящими для малого и среднего бизнеса, не разбирающегося в технологиях. VMware предлагает решения премиум-класса по более высокой цене. Однако в крупных корпоративных средах с большим бюджетом, которые охватывают множество платформ, ОС и архитектур, VMware остается лучшим выбором.
- Поддерживает системы Windows, Linux, Solaris, FreeBSD, Netware и другие.
- Решения подходят для ИТ-специалистов, разработчиков и предприятий.
- Можно одновременно использовать несколько приложений в разных ОС. Перезагрузка не требуется.
- Может работать с облаком.
- Может быть интегрирована со сторонним программным обеспечением.
- Многие инструменты vSphere обеспечивают поддержку балансировки нагрузки и динамической миграции, а также ряд других полезных функций.
vStack
vStack — платформа для внедрения виртуального дата-центра на базе обычного недорогого оборудования. Это гиперковергентное решение для предприятий, разработанное компанией ITGLOBAL.COM LABS с применением open-source-технологий. vStack является более доступной платформой, однако по производительности не уступает VMware или другим корпоративным решениям для хранения и виртуализации.
- Нет необходимости переплачивать за дорогое оборудование, платформа может работать с устройствами потребительского класса. Нет привязки к поставщику.
- Разработана на базе ОС FreeBSD (семейство UNIX), файловой системы ZFS (поддержка больших объемов данных), гипервизора bhyve (интерфейс UEFI, поддержка NVMe, быстродействие).
- Поддержка Windows и Linux.
- Доступная альтернатива от российского поставщика на уровне популярных западных решений.
Citrix (Xen)
Citrix предлагает набор недорогих продуктов корпоративного уровня. Их решения для виртуализации можно рассматривать в качестве альтернативы VMware. Компания отвечает за разработку кроссплатформенного гипервизора с открытым исходным кодом Xen Project.
- Есть бесплатная версия.
- Платформа с открытым исходным кодом.
- Расширенные функции виртуализации. Работает с гипермасштабируемыми облаками.
- Поддерживаемые ОС: GNU/Linux, FreeBSD, MiniOS, NetBSD, Solaris, Windows и другие.
OpenVZ
OpenVZ — это мощная платформа на основе метода контейнеризации с открытым исходным кодом. Платформа бесплатная и быстрая, за счет того, что построена на базе ядра Linux. Однако в роли «гостевых» систем могут выступать только дистрибутивы Linux. Ее настройка может быть не такой простой, но это компенсируется широким спектром функций и большим количеством конфигураций.
- Состоит из модифицированного ядра Linux и пользовательских утилит.
- Поддерживает только ОС Linux.
- Виртуализация происходит на основе контейнеризации для Linux. Платформа создает несколько безопасных изолированных контейнеров (также известных как VE или VPS) на одном физическом сервере, что позволяет лучше использовать ресурсы сервера и избегать конфликтов между приложениями.
Virtuozzo
Virtuozzo — компания, созданная для обеспечения коммерческой поддержки средств виртуализации Kernel-based Virtual Machine (KVM) с открытым исходным кодом. Она добавляет множество улучшений в популярный гипервизор KVM (о нем ниже). Одна из самых доступных платформ.
- Расширенная функциональность и поддержка.
- Пользовательская база состоит в основном из малых и средних компаний.
- Виртуализация серверов сочестается с программно-определяемым хранилищем и контейнеризацией.
- Поддерживает только ОС Linux.
Kernel-based Virtual Machine — ПО с открытым исходным кодом, обеспечивающее виртуализацию в среде Linux. Платформу можно скачать бесплатно и использовать для разработки на своей виртуальной машине. Является наиболее популярной альтернативой коммерческим платформам.
- Обеспечивает быструю и надежную виртуализацию для устройств на Linux.
- Самая низкая стоимость.
- Сообщество постоянно развивает платформу, экосистему решений и функциональность.
- Предоставляет множество вариантов кастомизации. Подходит для разработчиков собственных программных решений.
Microsoft Hyper-V
Возможности ПО для виртуализации Microsoft Hyper-V тесно интегрированы с широким набором продуктов Windows. Этот инструмент предоставляет множество критически важных средств виртуализации по более низкой цене, чем VMware. Hyper-V более популярен среди ИТ-специалистов, которые используют другие продукты Microsoft.
- Платформа входит в состав Windows 10 Pro и Windows Server (2012 и 2016) без каких-либо дополнительных затрат для пользователя.
- Поддержка Linux ограничена.
- Hyper-V позволяет относительно неопытным пользователям создавать свою виртуальную серверную среду.
Как выбрать платформу для виртуализации
Выбор ПО для успешного внедрения виртуализации во многом зависит от того, соответствует ли платформа целям компании. Вот несколько факторов, которые следует учитывать:
Первое, что следует учитывать при выборе виртуальных решений, — это поддерживаемые операционные системы. Некоторые из решений разработаны для поддержки определенных систем, например только Windows — как Microsoft Hyper-V. Однако, если компании требуется одновременно запускать несколько типов ОС, нужно выбрать соответствующую платформу — например, решения VMware.
- Масштабируемость и гибкость платформы
Для онлайн-бизнеса приоритетом может стать масштабируемость платформы — или способность поддерживать большое число одновременно работающих ВМ. Это позволяет быстро расширять ресурсы для поддержки большего числа пользователей и создает более гибкую среду для внедрения новых функций.
- Потребление ресурсов и экономичность
С помощью виртуализации можно сократить потребляемые ресурсы оборудования, однако стоит выбирать платформу, которая потребляет меньше памяти. Если в системе ограничено ОЗУ, дополнительное использование ресурсов, необходимое для поддержки инструмента виртуализации, может замедлить работу системы. В конечном итоге это может привести к увеличению расходов на обновление оборудования. И если цена является главной проблемой, доступны бесплатные варианты виртуализации.
- Соответствие задачам компании
Например, для крупных компаний подходят многофункциональные enterprise-решения уровня VMware. Для небольших компаний-разработчиков ПО более важным будет гибкость платформы, возможность тестирования своих продуктов в различных средах и невысокая стоимость.
Вывод
При выборе платформ для виртуализации компания должна убедиться, что она вкладывает средства в правильное программное обеспечение. Для этого нужно заранее определиться со средой для внедрения ВМ, желаемой стоимостью и объемом ресурсов, необходимым для стабильной работы системы.