Михаил Елашкин,
директор Elashkin Research

Сегодня виртуализация — одна из самых модных тем в информационных технологиях. По данным IDC(1), в 2004 году в мире работало 750 000 виртуальных серверов, а к 2009-му ожидается, что их число превысит пять миллионов штук, то есть ежегодный прирост составит пятьдесят с лишним процентов. Но лично я думаю, что как и все эволюционные прогнозы, этот прогноз занижен и не учитывает революционных эффектов, обычно сопровождающих бурное развитие какой-либо технологии.

Откуда же пришла эта столь модная сегодня идея? Как ни странно, истоки виртуализации лежат в 60-х годах прошлого века. Не будучи профессиональным историком в области ИТ, я не скажу, кто первый высказал эту идею, но наиболее активным и известным проводником ее в массы тогда выступала IBM. В 1968-м корпорация представила технологию виртуализации для своих мэйнфреймов — virtual machine (VM) Hypervisor, которая после длительной эволюции вошла в сегодняшние z/VM-продукты. Развитием этой технологии для мэйнфреймов стала появившаяся в 1988 году технология Processor Resource/System Manager (PR/SM), позволявшая создавать логические разделы — партиции (logical partitions, LPAR), каждая из которых могла содержать полноценную операционную систему. В результате на одном сервере можно:

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

Как я уже неоднократно писал в своих статьях, мэйнфреймы были своего рода венцом инженерного гения, и многие из примененных в них технологий до сих пор не превзойдены. Но если бы мир управлялся только техническими параметрами! увы, всё решает экономика, а клиент-серверные системы оказались на ничтожные доли центов выгоднее одноуровневой архитектуры, и этого было достаточно, чтобы оттеснить мэйнфреймы в тень.

Выросшие на технологиях клиент — сервер RISC-сервера, работающие под управлением той или иной формы UNIX, эти машины прошли долгий путь и стали домом для многих технологий, включая многозадачные, многопотоковые операционные системы. Такие ОС управляли аппаратными ресурсами компьютера, обеспечивали балансировку загрузки процессора, изоляцию приложений друг от друга, что было необходимо по соображениям устойчивости системы и безопасности. На них были отработаны многие вопросы аппаратного и программного обеспечения, в результате чего стали вполне обыденными системы с более чем сотней процессоров, работающих под управлением одной ОС и способные давать приют сотням различных приложений. Кроме того, архитектура ccNUMA, ставшая стандартом де-факто таких машин, позволяла легко реконфигурировать их от мощной SMP-системы до нескольких индивидуальных машин или объединяющего их кластера. Возможно, RISC-машины не были первооткрывателями физических партиций (разделов), но на них эта технология была отработана в совершенстве.

Главный недостаток таких систем состоял даже не в неполной загрузке процессора — а надо сказать, что в отличие от мэйнфреймов, способных годами работать при практически 100%-ной процессорной загрузке, нагрузка RISC/Unix-машин была несколько ниже. Нет, главная проблема для таких великолепных и достигших вершины своего могущества устройств находилась в не вызывавших поначалу никаких эмоций процессорах Intel, или, говоря более корректно, процессорах архитектуры х86.

Но сначала ничто не предполагало такого развития событий. Даже лучшие специалисты по прогнозам в отрасли не ожидали ничего подобного. Поэтому когда Скотт Мак-Нили, в то время глава Sun Microsystems, выступая в ноябре на выставке Comdex Las Vegas ‘2003, произнес: «Мы были не правы. Я сожалею, что давным-давно, разрабатывая свою стратегию, мы не делали это вместе с Intel. Продукты младшего класса на базе x86-совместимых процессоров являются в настоящее время самой быстроразвивающейся частью семейства наших компьютеров, предлагаемых для центров обработки данных»(2), — то это было более чем признание, учитывая, что Скотт являлся одним из наиболее активных сторонников «большого железа».

Если честно, то Скотта Мак-Нили можно понять. Архитектура х86 и вообще альянс Wintel тогда были предметами шуток: «Windows’95 — это 32-разрядная оболочка, которая создана для 16-разрядной системы, разработанной для 8-разрядного процессора...». Родовое проклятие процессоров х86, созданных как очень дешевая система для персональных компьютеров, попортило много крови конструкторам серверов и разработчикам прикладных и системных программ для них. Но, как и в соревновании мэйнфреймов с RISC’ами, победу одержал не лучший продукт, а более экономически выгодный. На дворе был конец ХХ века, и информационные технологии все больше становились массовым продуктом, для которого действуют совсем другие рыночные законы. Но «слабость» х86-серверов, умноженная на их общедоступность, вызвала к жизни феномен специализированного программного обеспечения, преодолевающего ограничения архитектуры. А когда Intel подобно марафонцу, для которого дистанция начинается ближе к концу второй половины, причём выигрывает не самый быстрый, обошла целый ряд конкурентов, то эти технологии внезапно получили необходимые им аппаратные ресурсы, и оказалось, что они способны на многое.

Одной из таких технологий была технология виртуальных машин VMware (упомянем Xen, SWSoft Virtuozzo, но есть и другие проекты). Эта технология позволяла на одном процессоре х86 создавать несколько независимых виртуальных машин, каждая из которых имела собственную копию операционной системы. При этом каждая виртуальная машина была независима, и крах приложения на ней не приводил к проблемам для других приложений. Важным направлением развития данной технологии стали системы, которые позволяют перераспределять аппаратные ресурсы между виртуальными машинами. Таким образом удается оптимизировать загрузку процессора так, что он используется практически на 100%, что для многопроцессорных машин архитектуры х86 является не меньшей фантастикой, чем плавленый сыр для снежных людей в известном рекламном сюжете. А уж когда к хору «виртуализаторов» присоединилась Microsoft с Windows Virtual Server 2005 R2, а IBM собрала все свои продукты в IBM Virtualization Engine Platform, то стало понятно, что виртуализация — это всерьез и надолго.

Правда, остается одна неясность. В Интернете давно бродит некий набор риторических вопросов — вроде: «Когда машина едет, крутится ли воздух внутри колеса?» Но гораздо более соответствующий теме вопрос из этого набора таков: «Почему самолеты не делают из того же материала, что и черные ящики для них?»

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

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

Наверное, я бы так и уверился в силе волшебных виртуальных машин, если бы не подход Sun, которая в операционной системе Solaris 10 ввела контейнеры (containers), обеспечивающие необходимую изоляцию и балансировку нагрузки. Оказывается, все-таки можно не вводить дополнительный слой между аппаратной частью и операционной системой.

Как всегда, не попадают в нашу стройную систему блейд-серверы. С одной стороны, это обычные х86-машины, но с другой — находясь в общем конструктиве, они способны на большее, чем отдельные серверные коробки. Вообще, по моему мнению, наиболее «продвинутой» в области работы с «лезвиями» и их виртуализации является компания Fujitsu Siemens Computers. Но, как известно, размер имеет значение: многие решения FSC не становятся общепризнанными, и когда гранды через некоторое время запускают аналогичный продукт, то все считают, что первыми открыли Америку именно они. К чести FSC, она строит свою политику так, чтобы появление популярного пакета управления приводило только к замене одного программного компонента стека решений компании, не изменяя общей линейки. В результате на сегодняшний день управление набором блейд-серверов позволяет перераспределять ресурсы не только в масштабах одного процессора, но и на нескольких ЦП, а также автоматически «заливать» необходимые образы дисков на другие «лезвия» и запускать там приложения, динамически изменяя задействованные ресурсы.

Еще один «несистемный» объект для виртуализации — это системы хранения данных. Действительно, когда в информационной системе компании параллельно работают десятки приложений и каждое из них требует какого-то количества быстрых дисков, какого-то — более медленных, своих систем резервного копирования на ленту и так далее, то система становится слишком сложной и дорогой. Виртуализация таких носителей информации позволяет объединить аналогичные по свойствам подсистемы в несколько виртуальных «быстрых дисков», «медленных дисков», «ленточных библиотек» и проч. Теперь приложению назначается не физическое хранилище, а виртуальное, в соответствии с его запросом, а система обеспечения виртуализации уже сама будет распределять данные с учётом прописанных правил. Это оказывается много проще и дешевле.

И тут мы уже подходим к ключевому вопросу — зачем нужна виртуализация? Но сначала — экскурс в совсем недавнее прошлое(3). Несколько лет назад собравшиеся с духом руководители компаний попытались понять, куда делись триллионы долларов, вложенных в информационные технологии. Стало ясно, что многие инвестиции просто пропали или оказались неэффективными. Было решено оценивать ИТ не только по техническим показателям, но и по экономическим. В ответ производители оборудования и программного обеспечения предложили новую «Большую Идею», которая будет стоить дополнительных больших денег, но позволит существенно сэкономить на обслуживании инфраструктуры, а главное, сделает ИТ-услуги такими же удобными и простыми, как телефон или водопровод. Техническая реализация такой технологии получила название Grid, но потом оказалось, что эта «торговая марка» не принадлежит какой-то конкретной компании, и каждый крупный производитель вложил в идею свое содержание и дал ей свое «торговое название». Так, у IBM появился On Demand, у HP — Adaptive Enterprise, а Oracle поступила еще проще: поскольку никто не претендовал на «родовое название» Grid, эта фирма стала использовать его.

Виртуализация является важной частью «Больших Идей» каждого производителя, но ее назначение далеко от первоначального технического. Но независимо от производителя у этого подхода есть общая мотивация: в сегодняшнем мире самые большие затраты приходятся не на технику, а на людей. Упрощая инфраструктуру и управление, можно достичь гораздо большей экономии, чем на стадии закупки техники.

Попробуем теперь, когда мы рассмотрели большинство компонентов и причин появления виртуализации, сложить все это в одну картинку. Для начала нам придется признать, что сегодня не существует единой виртуализации, как не существует единого типового сервера. Технологии виртуализации HP Integrity под управлением HP-UX будут отличаться от виртуализации IBM zSeries под управлением z/OS, но при всём различии в «начинке» внешне они будут похожи. А вот решения для виртуализации для HP ProLiant и IBM xSeries сходны.

Для того чтобы представить, каким образом идея виртуализации остается неизменной, а техническая реализация различается, сравним HP Integrity и IBM pSeries. Рассмотрим, какие возможности предоставляет HP Integrity(4). На первом уровне возможно разбиение на аппаратные разделы — партиции (nPartition), каждая из которых имеет собственную физическую память, свои процессоры и системы ввода-вывода. Следующий уровень — это виртуальные разделы (vPartition), напоминающие виртуализацию Vmware: каждая такая партиция использует собственную копию операционной системы. ОС HP-UX позволяет динамически реконфигурировать такие партиции на лету — скажем, когда у одного из приложений возникла потребность в дополнительных процессорных ресурсах, ему могут передать процессоры из другой партиции. Третий уровень виртуализации составляют Secure resource partition. В рамках одной копии операционной системы может существовать несколько таких партиций. Это уже очень похоже на ОС, но позволяет лучше контролировать ресурсы, выделяемые на каждую задачу, вплоть до работы такого приложения на мощности в 1% от процессорной.

Виртуализация для IBM pSeries двухуровневая и основывается на идее хорошо зарекомендовавших себя на мэйнфреймах LPAR. На первом, аппаратном уровне каждая партиция представляет электрически разделенные модули с процессорами и памятью. Но дальше начинаются различия. Ключевым компонентом в реализации виртуализации в pSeries является POWER5 hypervisor, встроенный в системное firmware: любое программное обеспечение работает уже поверх hypervisor, и, таким образом, даже обычный режим работы представляет собой виртуализацию на один ресурс. Этот модуль выделяет логическим разделам — партициям — процессоры, системы ввода-вывода и память; кроме того, он может создавать разделяемые процессоры, пользоваться которыми будут несколько партиций одновременно.

Следует отметить, что сама IBM представляет свою трехуровневую систему: аппаратный уровень, уровень hypervisor, или firmware, и уровень программного обеспечения — LPAR, где исполняется прикладное приложение. Таким образом, здесь второй уровень НР разделяется на два, а уровень Secure resource partition HP у IBM не выделяется отдельно. IBM предпочитает использовать стандартные средства операционной системы виртуальной машины, такие как LPAR.

В качестве дополнительных модулей у IBM реализованы средства управления ресурсами и администрирования системы: Virtual I/O Server, обеспечивающий разделы разделяемыми виртуальными ресурсами ввода-вывода; Integrated Virtualization Manager — система для управления ОС, создания партиций, управления виртуальными хранилищами и сетевыми картами; Partition Load Manager — модуль, автоматически управляющий системой и распределяющий ресурсы по динамическим LPAR’ам. Партиции LPAR являются основными виртуальными разделами. Запускаемые в них приложения полностью изолированы друг от друга, а технология Micro-Partitioning позволяет выделять LPAR’ам вычислительные ресурсы кусочками до 1/10 процессора. Здесь интересно отметить, что аналогичный набор утилит предлагает и HP, но на мой взгляд их самое важное отличие заключается в том, что IBM традиционно идет от технологий к бизнес-применению, а модель HP для Virtual Server Environment (VSE) и Integrity Essentials Virtualization Manager больше основывается на понятиях необходимого уровня сервиса для приложения (service-level objectives — SLO); но эти различия носят скорее гносеологический, нежели идеологический характер.

В заключение отметим еще одну важную черту перечисленных технологий: все они уже вышли из лабораторных условий, и компании-производители демонстрируют их в своих презентациях вживую. Буквально в течение одной недели работающие решения по виртуализации показали HP, IBM и EMC. Возвращаясь к прогнозу IDC, приведенному в начале статьи, надо отметить, что его явно можно считать весьма консервативным — уж слишком очевидны преимущества виртуализации.

1) «Server Virtualization Goes Prime Time»//ServerWatch, October 12, 2006; http://www.serverwatch.com/tutorials/article.php/3637631.
2) Роберт Макмиллан. «Границы дозволенного»//Computerworld, № 05/2004.
3) Михаил Елашкин. «Четыре источника grid для бизнеса»//Открытые системы, № 12/2004.
4) «The HP Partitioning Continuum for HP Integrity and HP 9000 servers»;
http://h71028.www7.hp.com/ERC/downloads/4AA0-1469ENW.pdf.