За минувший год тема виртуализации превратилась не просто в мейнстрим современных корпоративных ИТ, а в какой-то набирающий силу горный поток, в котором не так-то просто отследить логику развития событий. Все мировые ведущие ИТ-поставщики говорят о своей приверженности идеям виртуализации, о разработке таких решений или об их поддержке в своих продуктах. При этом в условиях маркетинговой шумихи очень трудно разобраться, где речь идет о чем-то действительно новом, а где — лишь о представлении старых решений в новой “обертке”.
Вместе с тем в глазах общественности (да и аналитиков) явно отошла на второй план технологическая составляющая проблемы виртуализации. Проповедники этой технологии делают основной акцент на тех благах (разумеется, в первую очередь говорится о защите инвестиций и снижении совокупной стоимости владения), которые несут данные средства. Но при этом часто обходится стороной другой вопрос — почему существующие ИТ не способны решить проблемы, скажем, серверной консолидации и зачем понадобилось создание чего-то еще?
Остается нерешенным и еще один вопрос: какие архитектурно-технологические принципы лежат в основе создания виртуальных средств? Ведь можно предположить, что архитектурные основы у разных вендоров всё же чем-то различаются, а это имеет значение для оценки текущих и, что еще важнее, потенциальных возможностей предлагаемых продуктов.
Простой пример. Нынешним летом Microsoft выпустила решение Hyper-V. А чем оно помимо названия отличается от ранее имевшегося у нее Virtual Server? Подобный вопрос можно поставить и в отношении продуктов многих других поставщиков.
Объективная сложность рассмотрения архитектурных аспектов технологии виртуализации заключается в том, что за последние пару лет наряду с существенными технологическими достижениями серьезно расширился круг вопросов по всей этой теме. Следствием этого стало то, что до сих пор не существует устоявшейся структуризации данной проблематики и описывающей ее терминологии. В результате порой получается откровенная путаница, когда одни и те же вещи называют по-разному и, наоборот, различным сущностям присваивают общие термины (лучший пример того — “гипервизор”)*.
Поскольку тема виртуализации наверняка и дальше будет набирать силу, стоит все же попробовать разобраться в некоторых ее архитектурно-теоретических аспектах (в том числе внести важные уточнения в имеющиеся представления).
Краткий курс истории
Начать нужно с того, что в широком философско-методическом понимании идея виртуализации — отделения логического представления процессов от способа их физической реализации — лежит в основе всех ИТ как таковых. В этом плане с формальной точки зрения практически к любому ИТ-продукту (и в первую очередь к операционным системам) можно применить определение “виртуализационный”.
В узком смысле (уже в рамках ИТ) данное понятие связано с созданием механизма виртуальных машин (ВМ) корпорацией IBM для своих мэйнфреймов в начале 70-х гг. прошлого века. Это было обусловлено необходимостью одновременного запуска на одном компьютере нескольких разных ОС. Можно предположить, что решение такой задачи было не очень сложным, поскольку мэйнфреймы изначально проектировались как мощные системы коллективного доступа с высоким уровнем виртуализации и изоляции вычислительных ресурсов. Не говоря уже о том, что вся эта аппаратно-программная платформа (в том числе и разные версии ОС) принадлежала одному разработчику.
Появление компьютеров архитектуры x86 — сначала ПК, а потом и серверов — сделало идею ВМ просто неактуальной: в них был заложен принципиально иной (чем в мэйнфреймах) подход: один компьютер — одна ОС. Однако к концу 90-х, по мере роста мощности х86-систем, значимость задачи запуска нескольких ОС на одном компьютере вновь стала возрастать. Поначалу это касалось преимущественно вопросов разработки и тестирования ПО, а потом на первый план вышли проблемы консолидации серверов в “боевом” режиме работы информационных систем.
Но в случае x86 поддержка виртуальных сред была весьма непростой задачей. Тут можно выделить несколько аспектов. Во-первых, эта архитектура не была изначально предназначена для подобного применения. Во-вторых, речь шла не об одном вендоре, которому нужно было решать свои внутренние технические проблемы, а о большом ИТ-сообществе с непростыми конкурентными отношениями, а также о массовом рынке (разделенном на аппаратные и программные сегменты), а значит — о необходимости поддержки огромного числа унаследованных приложений от десятков тысяч разработчиков **.
Зачем нужна виртуализация?
Итак, механизм ВМ понадобился для запуска на одном компьютере нескольких разных ОС. Но зачем это нужно при консолидации серверов и уж тем более при запуске разных приложений на одном ПК в случаях, когда используется одна и та же версия OC? Ведь ОС и так обеспечивает многозадачный, многопользовательский режим. Почему же один ее экземпляр нельзя использовать для запуска, скажем, двух Web-серверов?
Короткий ответ на эти вопросы таков: на самом деле многозадачность ОС для x86-архитектуры является весьма и весьма условной. По большому счету, к ним лучше относиться как к однозадачным системам. Запускать в их среде несколько приложений можно, но с точки зрения надежности и балансировки нагрузки это не нужно. Упрощенно говоря, традиционные ОС не обеспечивают нужного (для бизнес-применения) уровня изоляции приложений, и современные методы виртуализации (тут есть несколько разных подходов) направлены на повышение этого уровня.
Здесь можно сформулировать промежуточный вывод: средства виртуализации сегодня являются не самодостаточным видом ПО (альтернативой современных операционных систем), а некоторым дополнением и расширением традиционных ОС.
Возникает естественный вопрос: зачем нужны какие-то “примочки” для исправления “кривой” архитектуры? Не проще ли создать качественно иные ОС на новых архитектурно-технологических принципах?
Да, сегодня можно вполне определенно говорить, что общая тенденция развития ОС будет направлена именно на повышение уровня поддержки многозадачности систем и в том числе более высокой изоляции приложений. И в этом плане скорее нужно говорить о глобальной тенденции к использованию новой модели распределенных вычислений в “облачном” стиле (Cloud Computing). Но очевидно и то, что такой процесс будет эволюционным и весьма долгим, более того — сегодня нельзя уверенно сказать, до какой степени нынешние средства виртуализации будут интегрированы в ОС. В этом плане нужно отметить два момента в пользу сохранения нынешнего статуса ОС.
Что бы мы ни говорили о преимуществах виртуализации, но функционал нынешних ОС большинство пользователей вполне устраивает. В то же время включение средств виртуализации на уровне ядра ОС может привести к неоправданному “утяжелению” систем в целом, в частности — негативно отразиться на их производительности.
И вот что еще важнее. Прикладные программы создавались и создаются для работы в среде традиционных ОС. Не говоря уже о проблеме поддержки унаследованных приложений, переход на чисто виртуализационную модель потребует радикального изменения всей схемы разработки ПО.
Вся эта проблема очень хорошо видна на примере развития технологий нынешнего лидера в области виртуализации — компании VMware. В начале нынешней осени ее руководство объявило о намерении создать ОС нового поколения — ОС для виртуальных дата-центров, virtual datacenter OS, VDC OS. Однако хотя реализация этого проекта уже находится в весьма высокой стадии готовности, все же прозвучавшая из уст CEO VMware Пола Марица угроза “отправить традиционные ОС на задворки истории” пока выглядит откровенным рекламных ходом. Собственно, более трезвая оценка ситуации была дана им же: “VDC OS не заменяет традиционные ОС, а вносит коррективу в общую структуру комплекса ПО”.
За этими словами скрывается вполне очевидная вещь: VDC OS может функционировать только при использовании традиционных ОС, в то время как сами эти ОС могут применяться и без каких-либо дополнительных средств виртуализации. Иное дело, что обнародованные VMware намерения обозначили другую ключевую проблему: кто будет играть лидирующую роль в этой новой структуре ПО (а точнее — всего программно-аппаратного комплекса)? До сих пор центром такой системы были именно ОС (под них делаются средства виртуализации). Пол Мариц обозначил глобальную для своей компании цель: изменить это положение вещей, чтобы традиционные ОС делались под VDS OS. Идея понятная, но реализовать ее будет весьма не просто.
Основные уровни виртуализации
На сегодняшний день в общей структуре виртуализационных средств выделяются три основных слоя: ·
- виртуализация вычислительных сред (ресурсов центрального процессора, включая ОЗУ, и операционной системы); ·
- виртуализация хранилищ данных; ·
- виртуализация сетей.
Именно такая структура просматривается и в VDC OS; при этом видно, что ключевым и наиболее проработанным на сегодня компонентом системы является слой ВМ. Он фактически уже представлен комплексом Virtual Infrastructure с ядром в виде EXS Server, в то время как остальные две части системы — vNetworks и vStorage — еще только предстоит создать.
В общем случае комплекс средств виртуализации вычислительных сред (или виртуализации ПО) можно представить в виде нескольких основных технологических подходов, которые приведены в таблице.
Виртуализация для консолидации серверов
Далее мы сосредоточим внимание на технологиях виртуализации преимущественно в контексте задачи консолидации серверов. Основным методом тут является механизм виртуальных машин. Однако здесь нужно сделать важное замечание.
С формальной точки зрения технологии ВМ вроде бы не зависят от назначения компьютера — сервер или рабочая станция. Но на самом деле это не так. Действительно, в обоих случаях речь идет о возможности запуска нескольких ОС на одном устройстве. Однако после решения данной общей задачи для серверов появляются другие проблемы — управление балансировкой нагрузок, обеспечение высокой надежности и доступности, управление всем комплексом виртуальных сред в целом. Такую постановку вопроса определяет тот факт, что для серверов требуются принципиально иные архитектурно-технологические принципы, чем для ПК.
Все это хорошо видно на примере развития современных средств виртуализации. VMware начала свою деятельность в 1999 г. с создания решения для ПК — Workstation. Затем появился вариант этой же технологии для серверов — GSX Server (сейчас просто VMware Server), и лишь потом вышел качественно иной вариант специально для серверов — ESX Server. В такой же последовательности двигалась и Microsoft: Virtual PC, на основе которой был разработан Virtual Server, и уже ему на смену пришел качественно новый Hyper-V.
Отдельно нужно сказать и о методе виртуальных контейнеров (ВК). С одной стороны, он имеет родственные черты с виртуализацией приложений, представляя собой создание индивидуального операционного окружения на базе одного ядра ОС. С другой стороны, технология ВК не просто позволяет формировать практически полноценный экземпляр ОС, но и изначально нацелена на решение перечисленного выше специфического комплекса серверных задач.
Учитывая это, ВК вполне можно рассматривать как частный вариант механизма серверных ВМ в условиях формирования однородных виртуальных сред (рис. 1). В то же время нужно сказать, что перспективность метода ВК вызывает некоторые опасения. В частности, настораживает то, что сегодня ни один из ведущих игроков на этом рынке (VMware, Microsoft, Citrix) такой вариант виртуализации не предлагает и ничего не говорит о своих планах по его реализации в будущем.
Преимущества использования виртуализации
Традиционный довод в пользу средств виртуализации со стороны вендоров звучит примерно так: их применение обеспечивает более эффективное использование ресурсов, предоставляет более гибкие возможности управления ИТ-системами, в том числе в плане управления изменениями. Для руководства предприятий-заказчиков это излагается в более понятной форме: такие средства позволяют снизить совокупную стоимость владения ИТ.
Среди разных сценариев применения виртуализации следует выделить два основных: ·
- разработка и тестирование ПО; ·
- консолидация ресурсов в варианте “боевой” эксплуатации приложений.
Первый из них является пионером освоения методов виртуализации и сегодня применяется наиболее широко. Но он же — наиболее простой вариант хотя бы потому, что речь тут обычно идет не о параллельном, а о последовательном использовании виртуальных машин, когда вопросы балансировки нагрузки и высокой доступности выглядят неактуальными. К тому же подобные задачи с точки зрения заказчика представляют ограниченный интерес.
Далее мы будет говорить о консолидации серверов. Предпосылки использования виртуализации здесь вполне очевидны: сегодняшние информационные системы организованы так, что для работы каждого отдельного ИТ- или бизнес-сервиса (электронная почта, Web-сайт, бухгалтериская система и пр.) требуется отдельный физический сервер, загрузка процессора в котором при этом составляет 3—10%, в то время как оптимальный уровень — от 40 до 60%. Средства виртуализации позволяют использовать один физический сервер вместо пяти-шести. Посмотрим, чего это стоит клиенту и что он от этого выигрывает.
Отметим для начала, что такая виртуализация оборудования позволяет не только снизить затраты на “железо”, но и на производственные помещения и электроснабжение, но как значительны эти статьи расходов, нужно обсуждать отдельно. К тому же нужно иметь в виду, что речь лишь только о процессорных модулях: к памяти, как внешней, так и оперативной, экономия ресурсов в общем случае не имеет отношения.
Что же касается техники, то тут к вопросу экономии нужно относиться очень осторожно. Даже если вы будете использовать один компьютер вместо уже имеющихся у вас пяти, то чисто финансовый эффект вы сможете получить, если вам удастся как-то с толком утилизировать освободившиеся четыре. Например, продать на вторичном рынке или использовать для расширения ИТ-инфраструктуры (передав их, скажем, в региональные отделения).
Однако на практике вам придется понести и расходы: при консолидации обычно надо переходить на более мощные серверы (объем ОЗУ в любом случае нужно увеличивать) — как правило, блейд-системы. Их покупка может вполне окупиться (скорее компенсироваться), если есть возможность “пристроить” освободившееся оборудование.
Что же касается ПО, то тут никакой экономии нет изначально. На лицензиях прикладных программ ее точно нет, а для операционных систем она может появиться только в виде специальных предложений со стороны поставщиков ОС. Плюс расходы на собственно виртуализационное ПО.
Откуда же идут разговоры о снижении затрат заказчиков? Оно действительно возможно, но только относительно последующих эксплуатационных затрат (той самой совокупной стоимости владения), а также комплексной оптимизации дата-центра в целом за счет перехода от статической модели его функционирования к динамической.
Использование виртуальных сред должно дать принципиально новые возможности гибкого управления ИТ-инфраструктурой: ВМ можно легко, без остановки их работы, переносить с одного компьютера на другой, выделять дополнительные вычислительные ресурсы в случае повышения нагрузки и т. д. Развертывание ИТ-сервисов (в том числе по требованию бизнеса) теперь будет занимать вместо нескольких дней сколько-то часов или даже минут, ИТ-сотрудники могут забыть о временах, когда приходилось работать в выходные дни или по ночам — профилактические мероприятия и ввод в действие новых сервисов теперь выполняются без остановки работы пользователей.
Отметим сразу: экономическая оценка эффективности ИТ-проекта — задача сложная, субъективная и неблагодарная. Ее объективная сложность заключается в том, что далеко не всё определяется прямыми финансовыми показателями, зачастую гораздо важнее оказываются вещи, которые в деньгах оценить не всегда возможно (повышение гибкости организации в целом, изменение требований к персоналу и т. д.)
Тем не менее рискнем привести черновой набросок финансовой эффективности проекта по переходу от физической инфраструктуры к виртуальной (рис. 2).
Капитальные (разовые) затраты ·
- Оборудование. Скорее всего придется покупать новую технику. Прямой выигрыш тут может быть только в том случае, если удастся удачно утилизировать освободившееся старое оборудование. ·
- Программное обеспечение. К уже имеющемуся ПО (ОС, приложения) нужно будет покупать ПО виртуализации. ·
- Услуги по реализации проекта. Понятно, что сам проект потребует дополнительных затрат человеческих ресурсов. Но тут нужно отметить важный момент: выполнение такого проекта в целом может быть по силам и имеющемуся ИТ-персоналу, т. е. его можно реализовать поэтапно в рамках текущих бюджетов.
Текущие (эксплуатационные) затраты
Здесь можно ожидать снижения расходов по всем статьям — аренда помещений, стоимость электроэнергии, администрирование, техническое обслуживание, модификация старых и развертывание новых ИТ-сервисов. Кроме того, могут быть получены качественно новые преимущества с точки зрения как ИТ (оптимизация ИТ-инфраструктуры в целом за счет гибкой балансировки нагрузок, повышение надежности и доступности), так и бизнеса (быстрая реализация требований пользователей).
Какой эффект будет в результате? В общем случае он видится скорее положительным, но более точно можно говорить только применительно к конкретным проектам. Вполне определенно можно сказать одно: успех проекта напрямую зависит от правильности общей методики его реализации, квалификации исполнителей, решимости руководства компании и ИТ-подразделений и т. д.
От статической модели ИТ к динамической
Итак, одна из ключевых идей (и преимуществ) виртуализации — переход от статической структуры дата-центов с использованием исключительно физических серверов к динамической организации на базе смешанной виртуально-физической инфраструктуры (рис. 3). Важно отметить, что применение средств виртуализации не отменяет (по крайней мере в видимой перспективе) необходимости в физических серверах (один компьютер — одна ОС). Причина тому вполне очевидна: наряду с достоинствами (гибкость управления, оптимизация нагрузок) ВМ имеют и недостатки по сравнению с автономными ОС (некоторые ограничения в использовании ресурсов, снижение производительности, возможные проблемы с совместимостью).
Посмотрев на структуры такого динамического дата-центра, легко оценить значимость задачи управления всей этой сложной системой. До сих пор обсуждение проблем виртуализации сводилось преимущественно к теме среды функционирования ВМ (в частности, гипервизоров). Однако следует четко понимать: гипервизоры — это хотя и базовый, но всего лишь один из компонентов ПО виртуализации. Второй компонент, но сегодня он по сути выходит на первый план, — это средства управления.
В свою очередь, ПО управления включает две основные категории инструментов: ·
- средства управления виртуальными машинами внутри отдельного сервера; ·
- средства управления системой виртуальных и физических серверов в целом.
Тут стоит обратить внимание на то, что если первая категория инструментов довольно жестко связана с конкретным гипервизором и соответственно обычно поставляется самим его производителем, то вторая представляет собой сферу пересечения интересов как поставщиков виртуальных сред, так и независимых разработчиков.
Сложность задачи управления динамической ИТ-инфраструктурой легко себе представить, если учесть, что речь идет о сугубо неоднородной системе, которая имеет дело с несколькими группами поставщиков (оборудования, ОС, приложений, ПО виртуализации), причем в каждой такой группе есть своя неоднородность (например, могут использоваться виртуальные среды разных разработчиков). Понятно, что в этой ситуации независимые (от конкретных гипервизоров) вендоры (такие, как HP, IBM, CA) могут получить определенные преимущества в сфере управления ИТ по сравнению с поставщиками, озабоченными продвижением своих базовых технологий.
Завершая наш обзор, отметим, что переход к использованию виртуальной ИТ-инфраструктуры для предприятий может стать важным этапом в переходе к модели аутсорсинга и “облачных” вычислений. Действительно, обеспечив легкое перемещение виртуальных машин внутри корпоративной ИТ-инфраструктуры, можно сделать следующий шаг, отправив крутиться эту виртуальную машину куда-то вовне — в облака.
Вид виртуализации |
Описание |
Назначение |
Где применяется |
Пример реализации (поставщики) |
---|---|---|---|---|
Виртуальные машины (Vitual Machine) |
Возможность запуска нескольких ОС, в том числе разнородных, на одном компьютере |
Повышение эффективности использования ресурсов центрального процессора |
ПК, серверы |
VMware, Microsoft, Citrix, Oracle, Red Hat, Sun, Parallels и др. |
Виртуальные контейнеры Virtual Container) |
Создание нескольких однородных изолированных операционных сред на базе одного экземпляра ОС |
Повышение эффективности использования ресурсов центрального процессора |
Серверы |
Parallels, Sun |
Виртуальные приложения |
Создание дополнительного операционного окружения вокруг отдельного приложения внутри ОС |
Повышение независимости приложения от версии ОС и уровня изоляции между приложениями |
ПК |
Microsoft, VMware, Symantec |
Виртуализация представлений |
Отделение бизнес-логики от пользовательского интерфейса |
Реализация идеи терминального доступа с использованием тонкого клиента |
ПК и другое клиентское оборудование |
Citrix, Microsoft и др. |
*Достаточно сказать, что вышедшая всего два года назад в Intel Press книга Applied Virtualization Techonogy (авторы — Sean Campbell и Michael Jeronimo), считавшаяся тогда основополагающей работой по теме, сегодня местами выглядит уже в значительной мере устаревшей. Добавим также, что раздел Virtualization в Wikipedia летом 2008 г. был радикально переработан, хотя в нем и сейчас есть некоторые противоречия.
**Еще два-три года назад основные ограничения виртуализации на уровне микропроцессорной x86-архитектуры (Intel, AMD) были устранены.