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

Поиск в Google на словосочетание «storage virtualization» дает свыше 51 тыс. ссылок, на «server virtualization» — поменьше, около 20 тыс., а на «i/o virtualization» — всего чуть более сотни. В разгар масштабной кампании под названием «виртуализация» подобная диспропорция не может не показаться странной: обойден вниманием важнейший, системообразующий компонент. Еще более странно то, что виртуализацию ввода/вывода или коммутируемые вычисления, как иначе называют эту область, активно развивают лишь две небольшие компании: Topspin Communications и Infinicon Systems. Коммутируемой в данном случае называют такую модель вычислений, которая коммутируемыми сетевыми средствами обеспечивает замену классической модели, основанной на распределяемых шинах.

Есть убедительные свидетельства того, что положение может измениться, и в ближайшее время виртуализация ввода/вывода станет не менее актуальной, чем виртуализация остальных составляющих компьютерных систем. К числу таких свидетельств, прежде всего, следует отнести тот факт, что в 2003 году Topspin была названа в числе двенадцати наиболее перспективных американских «стартапов». Кроме того, обращает на себя внимание и соглашение между Topspin и Sun Microsystems о совместной разработке второго поколения кластерных grid-архитектур.

Необходимость в виртуализации ввода/вывода связана с тем, что существующая его архитектура далеко не совершенна: она сложилась в результате стихийного эволюционного процесса и, как следствие, оказалась чрезвычайно неоднородной. Стоит вспомнить, как развивались средства ввода/вывода. Уже к самым первым компьютерам требовалось подключить какие-то внешние устройства, в том числе для ввода и вывода на перфокарты, на магнитные ленты, нужны были принтеры, а затем диски и множество других устройств. Однако эти подключения оставались частными решениями, выполненными без соблюдения каких-либо общепринятых стандартов. Когда началось массовое производство миниЭВМ, потребовались технологии для унификации ввода/вывода, в ответ на это появилась архитектура общей шины, которая обеспечила единообразие подключения периферии, открыв, тем самым, рынок внешних устройств. В последующем, для связи с периферией была выделена отдельная специализированная шина PCI (Peripheral Connection Interface); она оказалась настолько удобной, что сохранилась до сих пор без радикальных изменений.

Идеология шины PCI, из самого названия которой следует, что она служит для подключения периферии, складывалась в то время, когда сервер рассматривался как нечто изолированное. Поэтому в нее естественным образом заложена возможность подключения ограниченного количества периферийных устройств через контроллеры, соответствующие каждому типу устройства. Традиционный ввод/вывод предполагает подключение накопителей напрямую к стандартной шине PCI; для этого широко используются параллельные интерфейсы SCSI (Small Computer Systems Interface), ATA (Advanced Technology Attachment) или Fibre Channel Arbitrated Loop (FC-AL). Одновременно постепенно происходит сериализация интерфейсов; компьютерная индустрия мигрирует на Serial Attached SCSI и Serial ATA.

Однако современный сервер — это уже не изолированный остров, а часть корпоративной системы. Он включен в целый ряд сетей.

Сети расширения ввода/вывода (I/O Expansion Network, IOEN). Позволяют подключать процессор хоста с помощью коммутаторов к адаптерам ввода/вывода. Примеры таких решений можно найти в конфигурациях, состоящих из серверов-лезвий, и в «тяжелых серверах». Среди них — сеть IBM Remote I/O (RIO) в серверах pSeries и iSeries, HP Superdome I/O network, HP ServerNet, а также сеть XIO компании Silicon Graphics.

Кластерные сети (Cluster Area Network, CAN). Обеспечивают передачу сообщений между узлами кластеров. Это могут быть стандартные решения на базе Ethernet или Infiniband, либо специализированные архитектуры, в том числе SP fabric и InterSystem Channel (IBM), Myrinet (Myricom), QsNet (Quadrics) и Hyperfabric (HP).

Сети хранения (Storage Area Network, SAN). Помимо распространившихся за последнее время сетей хранения на основе Fibre Channel в эту категорию входят сети ESCON и FICON, разработанные IBM.

Локальные, городские и глобальные сети. Образуют внешний периметр серверов.

Для работы в сетях к PCI подключаются многочленные контроллеры и адаптеры. Увеличение сетевого трафика привело к тому, что PCI становится еще одним бутылочным горлом компьютерных систем, поэтому была создана вдвое более быстрая шина PCI-X, на очереди еще более быстрая шина PCI Express (ранее известная как Arapahoe/3GIO). С появлением тонких серверов и технологий консолидации серверов проблема разнообразия интерфейсов ввода/вывода заметно усугубляется. При сборке тонких серверов количество внешних связей пропорционально возрастает, например, при объединении в одну стойку 16 серверов их общее количество кабельных соединений достигает 300, еще острее эта проблема стоит при создании кластерных grid-структур из серверов-лезвий. Сегодня эта проблема решается путем встраивания промежуточных контроллеров, размещаемых на одной полке, они выполняют функции коммутаторов, благодаря чему внешними связями снабжается общая полка, объединяющая 16 или 24 лезвия, но это паллиативное, вынужденное решение.

Однако у любого изобретения есть свой жизненный цикл. Есть он и у PCI. Выявившиеся со временем недостатки привели к тому, что PCI стали в шутку расшифровывать как «проблематичный интерфейс» (Problematic Computer Interface). В качестве альтернативы консорциум, включающий в свой состав практически всех крупных вендоров, в 2000 году предложил интерфейс InfiniBand. В первом приближении новый интерфейс InfiniBand должен был заменить шинную архитектуру коммутирующей примерно так, как, начиная с середины 90-х годов, системная шина в мощных серверах наподобие SunFire, HP Superdome и IBM Regatta стала замещаться коммутаторами. Однако совершенно неожиданно внедрение InfiniBand «началось не с той стороны», то есть не с совершенствования внутренней архитектуры ввода/вывода мощных серверов, а с консолидации тонких и сверхтонких серверов. Интерфейс InfiniBand оказался тем средством, используя которое, можно изменить традиционную технологию создания серверных пулов и упростить доступ к сетям хранения данных. Более подробно история интерфейса InfiniBand изложена в [1].

В данном случае руководящая идея состоит в том, чтобы заменить три или четыре сети (LAN/WAN, SAN, CAN, а иногда еще и дополнительная сеть управления), в которые должен входить сервер-лезвие, одной. Проще говоря, множество разнотипных подключений можно заметить одним InfiniBand-подключением к скоростному коммутатору, оставив PCI до поры в покое. Суть же виртуализации заключается в том, что существующие подключения Ethernet, Fibre Channel сохраняются, но реализуются внутри подключения InfiniBand, которое по аналогии с серверными пулами можно назвать пулом подключений. Когда все внешние ресурсы собраны на одном коммутаторе, как это показано на рисунке, то они в равной степени доступны всем серверам, чем обеспечивается масштабируемость, конфигурирование по запросу и многие другие требования, предъявляемые к центрам обработки данных, причем гораздо меньшей ценой.

Ключевым элементом виртуализированного ввода/вывода является замена реальных физических портов логическими сервисами, выполняющими функции IP или Fibre Channel. Когда в виртуализированной среде сервер обращается за соответствующим сервисом, коммутатор осуществляет переадресацию к нужному порту или шлюзу. Например, если пакет IP содержит конечный IP-адрес, то он переадресуется на нужный Ethernet-порт. То же самое относится и к сетям хранения: соединения по InfiniBand конвертируется в шлюз. Главный эффект виртуализации заключается в уменьшении сложности: стойка, содержащая N серверов, больше не нуждается в N соединениях с каждой из сетей.

Механизм виртуализации Ethernet определен в спецификации InfiniBand Architecture Specification и стандарте IP-over-InfiniBand (IPoIB), которые определяют, как IPoIB выделяет пакет IP из InfiniBand и передает его по Ethernet, а также обратное действие — как входящие фреймы Ethernet с адресацией IP конвертируются в InfiniBand.

В решении, предложенном компанией Topspin, виртуализация Ethernet состоит из двух компонентов:

  • Service Mapping — служба отображения адресов с использованием стандартного протокола ARP;
  • Bandwidth Scaling — масштабирование полосы пропускания.

Компонент Service Mapping осуществляет в, некотором смысле, функции маршрутизации пакетов IP в Ethernet на основании динамической связи, устанавливаемой между сервисами IP и физическими портами Ethernet. Компонент Bandwidth Scaling осуществляет автоматическое отображение адресов, используя для этого стандартный протокол IP. В этой процедуре участвует каждый из шлюзов коммутатора ввода/вывода серверов, шлюзы «обучаются» тому, как ассоциированы IP-адреса и порты. В процессе работы коммутатор направляет прямо на тот шлюз, который связан с требуемым IP-адресом. Системный администратор может участвовать в этом процессе, ему предоставляется возможность конфигурировать разделы в коммутаторе ввода/вывода, создавать виртуальные локальные сети (VLAN). В таком случае шлюзы транслируют разделы InfiniBand в подсети IP и VLAN так, как задано в процессе ручного конфигурирования. Разделы, подсети и VLAN работают в обе стороны, на вход и на вывод. Компонент Bandwidth Scaling позволяет администратору задавать нужную полосу пропускания для Ethernet, чтобы обеспечить требования, предъявляемые серверами. Для масштабирования применяются два приема — агрегирование связей (Link Aggregation) и изменение числа шлюзов (Multiple Gateways), которые служат для повышения качества работы и оптимизации использования оборудования. По сути выполняемых ими действий приемы Link Aggregation и Multiple Gateways противоположны. Первый позволяет собрать несколько портов на одном шлюзе так, как это определено в стандарте IEEE 802.3ad LACP (link Aggregation Control Protocol). Динамическое управление Link Aggregation осуществляется шлюзом. А в том случае, если кластер подключается к большей по размерам сети Ethernet, компонент Multiple Gateways позволяет системному администратору выделить в коммутаторе ввода/вывода несколько шлюзов, чтобы расширить полосу пропускания.

Виртуализация интерфейса Fibre Channel, являющегося основой сетей хранения, осуществляется в соответствии со спецификацией The InfiniBand Architecture Specification и протоколом ANSI SCSI RDMA (SRP). Этими документами определены требования к инкапсуляции SCSI в InfiniBand. Протокол SRP был стандартизован комитетом T10 ANSI, который отвечает за все процессы стандартизации семейства протоколов SCSI. Работа шлюзов, поддерживающих Fibre Channel и сети хранения, полностью аналогична описанной выше функциональности, характерной для сети Ethernet. Шлюз от лица сервера выполняет все команды SCSI и осуществляет взаимодействие с сетью хранения. Визуализированный интерфейс Fibre Channel умеет обнаруживать необходимые ресурсы в сети хранения и управлять устройствами, автоматически отображать адреса в процессе сессии, а также управлять полосой пропускания либо агрегируя, либо распределяя шлюзы.

Анализ происходящего в области виртуализации ввода/вывода приводит к занятному выводу. Если раньше центром системы были серверы, а с появлением сетей хранения акцент сместился в пользу этого типа оборудования, активно заговорили о «датацентричных» системах, то виртуализация ввода/вывода все расставляет по своим местам, она помещает в центр не исполнительный орган и не хранилище, а управление. Коммутация заменяет не шину PCI, а множество сетевых контроллеров, которое к ней подключают. Интуиция подсказывает, что у такого взгляда на информационные системы большое будущее.

Литература
  1. Леонид Черняк, InfiniBand и серверы-лезвия. «Открытые системы», 2002, № 6.