Если проводить аналогию, виртуализация – это как матрешка: на одном физическом сервере можно создать несколько виртуальных машин (ВМ), каждая из которых будет работать независимо со своим железом, ОС и приложениями.
Для чего нужна виртуализация – важность технологии
Виртуализация позволяет:
- Снизить расходы: нет надобности выделять физически отдельный сервер под каждую задачу. На одной машине у вас может быть несколько различных ОС, сервисов, с доступом для разных клиентов. За счёт этого достигается экономия на электроэнергии, охлаждении и оборудовании.
- Повысить производительность: Ресурсы распределяются более эффективно, пока одна виртуальная машина простаивает, другим по потребности, наоборот, выделяется больше ресурсов. В ином случае, весь сервер бы простаивал, в то время как другие были бы наоборот перегружены.
- Масштабируемость: легко добавлять новые серверы в ИТ-инфраструктуру, заменять и обновлять старые, не занимаясь полной переустановкой всего сервера.
- Безопасность: Разные ОС, клиенты и процессы изолированы друг от друга и в случае заражения или иных проблем, они затронут только одну конкретную ВМ, а не все системы.
- Мобильность: легко перемещать виртуальные машины между серверами. Зачем под каждую новую задачу переустанавливать ОС хоста, настраивать всё по новой, когда можно просто скопировать необходимые образы ВМ?
Области применения виртуализации
Виртуализация имеет широкий спектр применения в различных задачах и преимуществ относительно нативного использования сервера:
- Консолидация серверов: Виртуализация позволяет объединять несколько физических серверов в один, что позволяет снизить затраты на оборудование, энергию и обслуживание.
- Разработка и тестирование программного обеспечения: Виртуальные машины могут быть использованы для создания изолированных сред для разработки и тестирования программного обеспечения, что позволяет избежать конфликтов и повысить эффективность работы.
- Хостинг веб-сервисов: Виртуализация позволяет размещать несколько веб-сервисов на одном физическом сервере, что повышает эффективность использования ресурсов и снижает затраты на хостинг.
- Безопасность: Виртуализация может быть использована для создания изолированных сред для выполнения потенциально опасных приложений или для размещения конфиденциальной информации.
- Облачные вычисления: Виртуализация является основой для облачных вычислений, позволяя создавать виртуальные вычислительные среды, которые могут быть доступны по сети из любой точки мира.
- Резервное копирование и восстановление после аварий: Виртуализация позволяет создавать копии виртуальных машин и сохранять их в безопасном месте, что обеспечивает быстрое восстановление работы в случае аварий или сбоев.
- Виртуальные рабочие столы: Виртуализация может быть использована для создания виртуальных рабочих столов, которые могут быть доступны из любого места и на любом устройстве, что повышает гибкость и эффективность работы.
Принцип работы виртуализации
Основным компонентом Виртуальной Машины(ВМ) является гипервизор. Он позволяет виртуально повторять функциональность различных компонентов, операционных систем, приложений. Всё благодаря тому, что гипервизор “виртуально” изолирует одни процессы и инструкции исполняемые процессором от других. Как если бы они исполнялись на разных машинах.
Гипервизоры также различаются по типам — 1 и 2. Однако, разница на практике между ними весьма условная и не в полной мере соответствует теории.
Обратимся к наиболее частому определению: Гипервизоры 1 типа – могут запускаться самостоятельно на низком уровне без ОС, а гипервизоры 2 типа – запускаются как дочерний процесс внутри ОС и от физических компонентов системы отделены слоем абстракций. А теперь обратимся к первоисточнику: Концепция виртуализации не нова и берёт своё начало ещё в 70-е годы. Когда Джеральдом Попеком и Робертом Голдбергом в своей статье «Formal Requirements for Virtualizable Third Generation Architectures» было формализовано определение технологии и термины — включая гипервизоры. Разве что тогда для них чаще употреблялся термин «Virtual Machine Monitor». И в этой статье нет современного определения гипервизоров 1 и 2 типа. Акцент сделан на то как реализована изоляция привилегированных инструкций, исполняемых процессором отдельно от всех остальных. Если изоляция одних инструкций от других поддерживается на уровне самого процессора — это гипервизор 1 типа. В процессорах Intel и AMD аппаратная поддержка и необходимый для этого набор инструкций обеспечены Intel-VT и AMD-V. Если же она реализована программно, будь то эмулятор ретро-консоли, QEMU(Без KVM), VMware, VirtualBox и т.д — это гипервизор 2 типа.
Впрочем, следуя современным определениям, hyper-v используемый в Windows или KVM в Linux, будучи гипервизорами 1 типа — не являются самостоятельными программами. Они являются лишь элементами ядра ОС. Схемы изображающие архитектуру гипервизоров 1 типа часто вводят в заблуждение, показывая обратное. Дело в том, что Windows при включение Hyper-V, помещает и хостовую систему в ВМ из под Hyper-V. Однако, несмотря на подобную матрёшку, Hyper-V не является самостоятеленым, а функционирует как элемент ядра ОС.
KVM подобных манипуляций не производит, хост и ВМ функционируют параллельно, что в отличие от Hyper-V не приводит к потери производительности.. – Чем меньше абстракций и более низкоуровневый доступ к компонентам, тем ближе производительность к нативной.
Виды виртуализации
- Аппаратная виртуализация (Гипервизоры 1 типа) — этот тип виртуализации включает использование специализированного аппаратного блока, обычно встроенного в процессор. С помощью аппаратных расширений виртуальные машины могут выполняться на физических серверах с минимальным вмешательством операционной системы, что увеличивает производительность и безопасность.
- Программная виртуализация (Гипервизоры 2 типа) — в этом случае виртуализация осуществляется на уровне программного обеспечения на высоком уровне, с рядом абстракций отделяющих от прямого доступа к физическим компонентам. Такие решения чаще требуют больше ресурсов для своей работы и могут быть менее безопасными, но они обычно более гибкие и проще в управлении.
Плюсы и минусы аппаратной и программной виртуализации
Дополнительные слои абстракции имеют свою цену. Программная виртуализация для исполнения процессорных инструкций должна сначала выждать очередь и пройти сквозь ОС, на пути к процессору. Аппаратная виртуализация, хоть формально также находится внутри ОС, но её процессы запускаются не как дочерние, а параллельно с процессами других модулей ядра ОС. Это уменьшает затраты и задержку на конечное исполнение процессорных инструкций .
Другое важное различие — безопасность. Эскалировать привилегии из ВМ 1 типа в хост сложнее, чем из ВМ 2 типа.
VDI
VDI (Virtual Desktop Infrastructure) — предоставляет виртуальные рабочие столы пользователям через удалённый доступ. VDI позволяет администраторам централизованно управлять рабочими столами, предоставляя пользователям доступ к ним с любого устройства, подключенного к сети.
Что также упрощает обновление и настройку программного обеспечения, а также обеспечивает безопасность данных. И экономит ресурсы, позволяя нескольким пользователям работать на одном и том же виртуальном рабочем столе одновременно.
Application Virtualization
Application Virtualization позволяет запускать приложения в изолированной среде, отделенной от основной операционной системы. Виртуальное приложение интегрируется в систему подобно нативному. Это достигается путем упаковки приложения вместе со всеми необходимыми файлами и библиотеками в виртуальный контейнер, который может быть установлен и запущен на любом компьютере, не требуя дополнительной настройки.
У метода есть ряд преимуществ:
Во-первых, он позволяет избежать конфликтов между приложениями, которые могут возникнуть из-за конфликта зависимостей. Во-вторых, оноблегчает управление приложениями, позволяя администраторам развертывать и обновлять приложения без необходимости взаимодействовать с конечными пользователями. В-третьих, он повышает безопасность, так как виртуальные приложения работают в изолированной среде и не могут взаимодействовать с другими приложениями или ОС.
Примерами программных продуктов для виртуализации приложений являются Microsoft App-V и Citrix XenApp.
Дополнительные возможности виртуализации
Быстрое создание среды для разработки
Разработка программного обеспечения не происходит в вакууме, для всех этапов от контроля версии до тестирования, требуется ОС и набор инструментов необходимых для выполнения задачи. Набор инструментов мало того что разный, так то что нужно тестировщику, вряд ли понадобится DevOps(у), так ещё и привязан к конкретным версиям библиотек, фреймворков и прочих зависимостей. Ещё и итоговый продукт будучи разрабатываемым под Linux, может быть предназначен для Windows, Android или иных платформ. Зоопарк получается весьма разнообразный, и каждый раз настраивать его с нуля, а если понадобится конкретная версия, то и судорожно перебираясь назад в прошлое — сомнительное удовольствие. К счастью, данная проблема решается крайне просто за счёт создание образов ВМ и контейнеров. С уже готовым набором инструментов под конкретную задачу и конкретную версию, что конечного продукта, что его зависимостей.
Виртуализация серверов
Виртуализация серверов – это технология, позволяющая создавать виртуальные серверы на одном физическом сервере. Это позволяет более эффективно использовать ресурсы физического сервера, что приводит к снижению затрат и повышению производительности.
- Снижение затрат: виртуализация серверов позволяет сократить количество физических серверов, что приводит к экономии на электроэнергии, охлаждении и оборудовании.
- Повышение производительности: виртуализация серверов позволяет более эффективно использовать ресурсы физических серверов.
- Улучшение масштабируемости: виртуализация серверов позволяет легко добавлять новые серверы в ИТ-инфраструктуру.
- Повышение безопасности: виртуализация серверов позволяет изолировать друг от друга разные среды и приложения.
- Повышение мобильности: виртуализация серверов позволяет легко перемещать виртуальные серверы между физическими серверами.
Виртуализация GPU
Как можно понять из всего что было ранее, виртуализация это в первую очередь про изоляцию одних инструкций исполняемых центральным процессором, от других. Но при этом также эмулируется и остальная периферия и видеокарты — в их числе. Однако, в отличие от оперативной памяти или сетевых портов видеокарты также исполняют инструкции. И если мы хотим добиться виртуализации, то нужно уметь изолировать. Что куда менее тривиально, чем это кажется, так как и просто проброс доступа к видеокарте без виртуализации на ней тот ещё квест. Но ограничиться только им и предоставляя для каждой ВМ свою видеокарту, допустимо разве что в домашних условиях.
В современных реалиях облачного рынка требуется масштабируемость, высокопроизводительная серверная видеокарта или их массив могут требоваться более чем одному клиенту, и уровень нагрузки для каждого из них будет отличаться в разное время. При этом мы конечно же хотим чтобы условный DGX A1000, будучи по цене как небольшая вилла на побережье Испании — окупался, и как можно скорее. А значит его простой для нас недопустим и его мощности нужно распределять между ВМ, и делать это динамически. Будь то в целях ускорения медиа-контента для онлайн кинотеатра или тренировки нейросети для крупного банка.
Что ждет виртуализацию в будущем
- Аппаратная виртуализация выходит на новый уровень — Такие проекты как Amazon Nitro, используют отдельные аппаратные модули для расширения и замены функционала предоставляемого программно, либо на уровне процессора. За счёт этого повышая эффективность используемого гипервизора.
- Эволюция операционных систем: Эксперименты над созданием монолитных ядер Linux, минимизация размера уже существующих. Объединение ОС и приложения в один пакет, который работает на одном и том же уровне защиты ЦП. Подобный подход также позволяет упростить и архитектуру гипервизоров, повышая их производительность.
- Рост облачных вычислений увеличивает спрос на легковесные решения виртуализации. Контейнеры являются наиболее популярным выбором, но они не предоставляют такого же уровня изоляции, как ВМ, и имеют проблемы с безопасностью из-за общего доступа к хост ОС. Поэтому, акцент на повышение их уровня безопасности с каждым годом всё увеличивается. Потенциально в будущем может случиться массовый переход от Docker к архитектурно более безопасному Podman.
- Поскольку энергопотребление технологий связи продолжает расти, возникает все большая необходимость в более энергоэффективных системах. Энергопотребление ВМ может значительно варьироваться в зависимости от нагрузки, и сокращение этого потребления является важным направлением исследований.
- Безопасность на уровне процессорной архитектуры: По мере того как разработка становится всё сложнее и затратнее, число ошибок в продукте как на уровне программном, так и железном, неуклонно растёт. Так Spectre и Meltdown в своём разрушительном потенциале к эскалации привилегий способны получить доступ ко всем исполняемым на процессоре инструкциям. В результате чего под угрозой оказываются даже виртуальные машины и контейнеры, а единственный вариант решения этой проблемы за собой понёс неизбежное замедление процессоров на x86 и ARM архитектуре. В ответ на это Безопасность и такие её ответвления как DevSecOps, становятся всё более востребованными во всех секторах IT-индустрии.
Как ITGLOBAL.COM может помочь с виртуализацией
vStack — это отечественная рзработка ITGLOBAL.COM, представляющая из себя гиперконвергентную платформу виртуализации. Предоставляющую все необходимые инструменты для создания и управления вашей ИТ-инфраструктурой любого масштаба. Высокая производительность и надежность платформы обеспечивается за счет использования передовых технологий и собственных разработок, а также благодаря низкому уровню CPU overhead, который составляет всего 2-5%.
Одним из главных преимуществ vStack является его гибкость и масштабируемость. Вы можете легко создавать и управлять виртуальными дата-центрами enterprise-уровня, квотировать ресурсы и предоставлять их вашим клиентам или отделам. При этом, благодаря широкому спектру поддерживаемого оборудования, экономию на затратах на покупку и обслуживание дорогостоящего серверного оборудования.
vStack уделяет особенное внимание на безопасности данных. Предоставляя механизмы отказо- и катастрофоустойчивости между центрами обработки данных, а также поддерживает шифрование данных и автоматическое резервное копирование. Это гарантирует, что ваши данные будут в безопасности и доступны в любое время, в любой ситуации.
Одним из ключевых отличий vStack от других платформ виртуализации является простота эксплуатации. Благодаря единому API и отсутствию разделения на слои, управление инфраструктурой становится простым и интуитивно понятным. Кроме того, vStack предоставляет автоматизированный учет потребляемых ресурсов до уровня отделов, что позволяет оптимизировать расходы на ИТ-инфраструктуру.
Еще одним важным преимуществом vStack является ее высокая экономическая эффективность. Благодаря CPU overcommit до 900% в production, ресурсы серверов используются эффективнее, снижая затраты на их обслуживание. Кроме того, в слое хранения vStack предоставляет механизмы самовосстановления, коррекции ошибок, компрессии и дедупликации, что также способствует экономии ресурсов.
Выбирая vStack, вы получаете не только надежную и эффективную платформу виртуализации, но и качественную техническую поддержку. Наша команда высококвалифицированных специалистов готова помочь вам в любых вопросах, связанных с внедрением и эксплуатацией платформы.
vStack включён в реестр российского ПО, а в ближайшем будущем планируется получение лицензии ФСТЭК, что позволит использовать vStack в государственных и муниципальных организациях.