...
...

Хранение данных и Fibre Channel

Хранение данных и Fibre Channel

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

Проблема хранения данных и поиск решения
Традиционно накопители и их системы подключались либо к серверу сети, либо к каждому рабочему месту с использованием специального шинного интерфейса, обычно SCSI или IDE, и делались доступными для пользователей сети (выполняемой по привычным технологиям) непосредственно через компьютеры, к которым они были присоединены. При таком подходе ресурсы хотя и были общими, но не были полностью разделяемыми, и, пока сети были малы и объемы разделяемых данных невелики, все прекрасно работало. Рост масштабов сетей и объемов данных выявил три недостатка такого решения. Во-первых, максимальное быстродействие обеспечивается только в пределах данного узла, во всех остальных случаях оно зависит от загрузки и мощности сети. Во-вторых, так как прямой доступ к каждому накопителю имеет только один компьютер, к которому он непосредственно подключен, то к не использованной на нем памяти другие компьютеры такой доступ получить не могут. В-третьих, если данный компьютер в настоящий момент перегружен, то к хранящейся на его накопителе информации другие компьютеры и приложения доступа получить не смогут и помочь ему выполнить перегружающее его приложение тоже не смогут по причине отсутствия необходимых данных. Легко сообразить, что решением этих проблем является: во-первых, создание независимых подсистем хранения, во-вторых, подсистемы хранения должны являться полностью разделяемыми ресурсами, т.е. подключаться непосредственно к сети и быть способными обрабатывать запросы от всех ее устройств.

Решать такую задачу можно двумя способами. Первый — создать централизованное хранилище данных и подключить его к сети. Решения такого типа называются Network Attached Storage (NAS), являются, по сути, выделенными файл-серверами и ничего инновационного в себе не несут. Они удобны в администрировании, просты и дешевы в установке, плохо масштабируемы, поддерживают только файловый ввод-вывод и создают серьезные нагрузки для сети, которых та вполне может не вынести. Принципиально иной подход — создание для организации доступа к данным отдельной сети из устройств и систем хранения. Это называется Storage Attached Network (SAN).
SAN открывают новые широкие возможности по управлению памятью. Во-первых, оставаясь физически автономной, она теперь может быть логически консолидирована. После консолидации память может быть виртуализирована: множество подключенных к сети автономных устройств хранения могут быть представлены в виде единого пула памяти. Сети хранения изменяют привычную парадигму зеркалирования. Если ранее зеркалирование осуществлялось с использованием традиционных интерфейсов, и из-за их дистанционных ограничений зеркальные копии вынуждены были размещаться в той же комнате, что и их первичная копия, то в сетях хранения становится возможным зеркалирование на накопители, размещенные за десятки и сотни километров, по всему городу или в других городах. При этом у зеркалирования появляется новое качество: оно становится теперь не только средством резервирования данных, но и средством повышения их доступности. Процесс резервирования намного упрощается благодаря консолидированности данных во-первых, а во-вторых, теперь он не нагружает сеть передачи данных, по которой ранее требовалось передавать весь объем резервируемых данных, в-третьих же, сети хранения позволяют выполнять его в горячем режиме, уменьшая простои компьютерных систем. Т.е., подытоживая, SAN обеспечивает высокие гибкость, масштабируемость, отказоустойчивость, готовность и быстродействие, удобное централизованное управление, простое ненагружающее основную сеть резервирование и т.д. К их построению подойти можно тоже по-разному.

Имея базовые знания, нетрудно догадаться, что с помощью шин ввода-вывода, стандартно используемых для подключения накопителей, построить выделенную сеть подсистемы хранения нельзя. Высокая производительность — их положительное качество в данной роли, но, поскольку достигалась она с использованием параллельной передачи, то это выливалось в небольшую протяженность шин (суммарная длина соединительных кабелей в IDE не должна превышать 70 см, а в параллельном медном SCSI (тогда только такой и был) — не более 25 метров даже в дифференциальных высоковольтных версиях, причем ограничением снова являлась уже описанная неравномерность распространения сигнала по проводам), что ограничивало возможное пространство не только комнатой, но даже какой-то ее частью, т.е. это уже совсем не то, что нужно, а сами по себе параллельные соединительные кабели и шлейфы обходились в немалую копеечку. В непригодности традиционных интерфейсов нет ничего удивительного: они изначально создавались для других применений, и потому никаких соображений масштабируемости в их разработке не было.
Первый правильный путь — адаптация существующих шинных и сетевых технологий для использования в сетях хранения — например, традиционных технологий IP-сетей на базе стандарта Ethernet. Сегодня это уже стало возможным, так как даже Gigabit Ethernet стоит смешных денег. Но протокол TCP/IP, используемый Ethernet, изначально оптимизирован под ненадежные глобальные сети (сам по себе он не гарантирует доставку, а контроль за передачей перекладывает на вышележащие уровни) и не приспособлен для блочного ввода-вывода, при котором важно высокое время реакции на соединение, гарантированная доставка пакетов, причем в верном порядке, отсутствие тайм-аутов и перегрузок. Для обеспечения этих условий необходима доработка: создание нового программного и аппаратного обеспечения и аппаратных средств, ревизирование стандартов на предмет выявления нечеткостей описания, приводящих к несовместимости оборудования различных поставщиков. Но, тем не менее, это реально развивающееся направление SAN-строения — в первую очередь благодаря своей простоте и дешевизне.
Второй — создание принципиально новой специально адаптированной технологии. Этим и занялась в 1988 году специальная группа X3T11. В результате и появился герой сегодняшней статьи — Fibre Channel — коммуникационный протокол, соответствующий всем вышесформулированным требованиям. Результат оказался крайне удачным, так как благодаря привлечению специалистов с богатым опытом разработок сетевых и канальных интерфейсов в новой технологии удалось объединить лучшие черты обоих указанных путей.

Вкратце Fibre Channel обладает следующими преимуществами:
— гибкие топологии;
— большие протяженности;
— высокая пропускная способность;
— возможность для большинства существующих сетевых и канальных протоколов использоваться на одном физическом интерфейсе.
Кто заинтересовался, может почитать дальше чуть подробнее, хотя тоже в общих чертах.

Технология Fibre Channel
Архитектурная модель Fibre Channel может быть представлена в виде многослойного стека функциональных уровней.
Издалека похоже на модель OSI, но при детальном рассмотрении оказывается, что точного соответствия нет. FC-0 и FC-1 вместе образуют то, что в OSI понимается под физическим уровнем. FC-2 соответствует подуровню MAC канального уровня. FC-3 — и вовсе не слой (во всяком случае, в обычном понимании), а FC-4 — правила перехода от протоколов FC-AL к протоколам других технологий и обратно. Но по совокупности выполняемых функций, проводя параллель с OSI, можно считать, что в FC определены снизу вверх уровни до четвертого включительно (Fibre Channel — полностью определенная транспортная система, как, собственно, уже и было сказано в определении). Рассмотрим каждый уровень более детально.
FC-0 занимается передачей битов по физическим каналам связи. Определяет тип используемой физической среды и ее характеристики, электрические сигналы, скорости передачи, виды коннекторов и назначение их контактов.
Несмотря на название стандарта выбор физических сред отнюдь не ограничен оптическими. В понимании FC Fibre — это просто волокно, по которому ведется передача (кстати говоря, именно чтобы избежать путаницы привычное английское Fiber, присутствовавшее в названии изначально, было заменено на Fibre, взятое из какого-то другого языка). В Fibre Channel может использоваться и привычная медь (экранированная витая пара с разъемами типа DB-9, коаксиальный и твинаксиальный кабель c разъемами TNC/BNC), и оптические волокна (одномодовые и многомодовые 50/125 мкм и 62,5/125 мкм с соединителями типа SC). В качестве источников сигнала для оптических кабелей могут использоваться длинноволновые и коротковолновые лазеры, причем более популярными в настоящее время кажутся последние. Коротковолновые передатчики могут быть как OFC, так и более распространенные в настоящее время non-OFC. Fiber Channel организует полнодуплексную связь. Для передачи в каждом направлении используется отдельное волокно.

Выбранное волокно и источник сигнала определяют максимально достижимую скорость и протяженность соединений. Понятно, что даже в Fiber Channel медь не конкурент оптике и может быть применена в ограниченном числе случаев. Протяженность соединений на медных проводах не превышает 30 метров. Наилучший результат (скорости до 10 Гбит/с, расстояния до 80 км) достижим при использовании одномодового оптического фибра (именно так часто переводят в русскоязычных публикациях термин Fibre) и длинноволнового лазера, но и с применением других технологий также можно строить быстрые и протяженные сети. Вообще, как и положено при правильно выполненной декомпозиции, этот уровень абсолютно независим от вышележащих и может легко подвергаться изменениям.

К уровню FC-0 можно отнести следующие устройства:
GLM (Gigabaud Link Modules) — 20-разрядные интерфейсы с управляющими и кодирующими схемами Fibre Channel, в состав которых обычно входит и устройство преобразования сигналов из параллельной формы в последовательную (SERDES). Используются главным образом для конфигурирования на предприятии-изготовителе, хотя допускают также внесение изменений на месте или модернизацию самими пользователями.
GBIC (Gigabit Interface Converters) — внешний Fibre Channel трансивер, подключаемый одной стороной к SERDES конечного устройства, а другой — к среде передачи и преобразующий сигналы устройства в используемые Fibre Channel. Может быть рассчитан на подсоединение к медному проводу и оптической среде.
MAI (Media Interface Adapter — интерфейсный адаптер линии) используются для преобразования сигналов, поступающих с медных кабелей с разъемами DB-9, в оптические сигналы для многомодовых оптоволоконных линий.
FC-1 — протокол передачи. Описывает используемые правила кодирования и декодирования, обеспечивает обязательный контроль ошибок, определяет служебные символы. На этом уровне выполняется преобразование 8B/10B (его суть я неоднократно описывал в других статьях и сегодня не буду). Это дает возможность обнаруживать ошибки, улучшает самосинхронизирующиеся свойства передаваемого битового потока, позволяет избежать низкочастотных токов благодаря сбалансированному чередованию нулей и единиц.
FC-1 определяет специальный символ для выявления в передаваемом потоке команд, который называется К28.5. Он не может быть получен из символов ASCII путем 8B/10В-преобразования, и, таким образом, его появление на входе приемника говорит о том, что дальше последует команда.
FC-2. Сердце технологии Fibre Channel — механизм транспортировки. Во-первых, здесь описывается иерархия групп данных, использующихся при передаче по Fibre Channel. Объектами иерархии являются слова, кадры, последовательности, обмены.

Слово — минимальная единица передачи информации по Fibre Channel. Группа состоит из четырех байт (или 10-разрядных последовательностей после 8B/10B-кодирования). Определено четыре категории слов. Три из них являются служебными и начинаются символом К28.5:
— Ограничители начала и конца кадра (Start-Of-Frame — SOF и End-Of-Frame — EOF).
— Примитивные сигналы: Idle — сигнал-пустышка — выдается в линию, когда передача данных по ней не ведется, также в некотором количестве (не менее 6) выдается после передачи кадра во избежание наползания кадров друг на друга из-за разных скоростей приемника и передатчика (что, понятное дело, уменьшает полезную пропускную способность шины, но и увеличивает надежность); Receive Ready (R_RDY) — сообщает о наличии места в буфере для приема кадров и готовности порта к приему и др.
— Примитивные пакеты (последовательности) — повторяющиеся не менее трех раз служебные слова (Not Operational, NOS, Link Reset (LR) и др.) для обозначения особенного состояния порта и пр.

Кадр — как и в сетях передачи данных, единица данных, пересылаемая по сети.



— SOF — признак начала кадра.
— Frame Header — заголовок кадра. Его структурную схему приводить не буду. Вкратце там содержится информация об источнике кадра (S_ID), об узле назначения (D_ID), тип (TYPE), идентификатор последовательности (Seq_ID) (если кадр не является самодостаточным — что это такое, скажу позже) и номер кадра (Seq_Cnt) в ней, идентификатор обмена Exchange_ID (об обменах тоже позже).
— Data Field — поле данных — полезная нагрузка. Содержит данные более высоких уровней.
— CRC — контрольный код для обнаружения ошибок передачи.
— EOF — признак начала кадра.

Для эффективного использования имеющегося канала в зависимости от объема данных, подлежащих передаче, или подстройки под возможности приемного или передающего портов максимальная длина кадра может гибко изменяться (но, поскольку минимальная единица — слово — равна четырем байтам, то размер кадра должен быть кратен четырем. Если условие не выполняется, то в информационное поле вставляется необходимое число байт-наполнителей для подгонки размера). Максимальный размер — 2148 байт, из которых 36 являются служебными, а оставшиеся 2112 — полезными. При передаче кадров максимального размера издержки оказываются крайне незначительными — около 1,7% (против минимум 7% у конкурирующей SSA).
Пакет, или последовательность — группа логически связанных между собой кадров. Получается при делении на кадры подлежащих пересылке данных, если их объем превышает максимальный размер одного кадра. Для того, чтобы получатель не перепутал кадры, получаемые одновременно из нескольких последовательностей, им присваивается номер (вышеупомянутый Seq_ID в заголовке), все кадры нумеруются (Seq_Cnt), для того чтобы иметь возможность восстановить их верную очередность, если они поступали не по порядку. Все продумано и надежно.

Обмен (exchange) — набор пакетов, которыми обмениваются узлы для обслуживания работающего через них приложения. Вообще говоря, он не является структурой данных, но непосредственно с ними связан. Все взаимодействие между портами происходит как сеанс обмена между инициатором (originator) и ответчиком (responder). Каждый порт имеет свой собственный передатчик и приемник и может быть как инициатором и ответчиком, так и тем, и другим одновременно. Обмен является двунаправленным и после начала может быть открытым как угодно долго. Благодаря наличию в заголовке кадра поля Exchange_ID, указывающего на принадлежность кадра к конкретному обмену, порт может одновременно поддерживать огромное число обменов.

Во-вторых, уровень FC-2 определяет механизмы управления потоком, позволяющие согласовать скорость передачи кадров с возможностями устройств и коммутирующей структуры. Передача осуществляется только в том случае, если порт назначения сообщает о своей готовности принять кадр. Получив кадр, удаленный порт должен сообщить об успешном акте передачи. Для ускорения обмена источник может отправлять несколько кадров подряд, не дожидаясь подтверждения каждого. Количество кадров, которое он может отправить таким образом, зависит от возможностей приемника и сообщается им при установлении соединения между ними. В Fibre Channel предусмотрено два типа управления потоком: сквозное (End-to-end) и межбуферное (buffer-to-buffer). В любом из двух случаев порт-отправитель ведет счет посланных кадров, подтверждение которых не было получено. При сквозном контроле с каждым отправленным кадром счетчик увеличивается на 1. Передача ведется до тех пор, пока число неподтвержденных кадров не достигнет установленного при подключении порога, после чего приостанавливается до получения сигнала о готовности к приему. В свою очередь приемник обрабатывает кадры по мере их поступления и по факту обработки каждого из них посылает передатчику сигнал R_RDY, означающий, что кадр обработан, и в буфере есть место для приема следующего. При получении такого уведомления передатчик уменьшает значение своего счетчика неподтвержденных кадров на 1 и продолжает передачу. Межбуферный контроль потока аналогичен описанному. Отличие его лишь в том, что приемник не выдает R_RDY после обработки каждого кадра, а время от времени присылает кадры-подтверждения (ACK), в которых указывает число кадров, которые успел обработать, а передатчик, получив такой кадр, уменьшает значение счетчика неподтвержденных на величину, указанную в кадре ACK. Применение того или другого определяется классом сервиса (будет описано позже).

Korg
Продолжение следует


компьютерная газета


© Компьютерная газета

полезные ссылки
Аренда ноутбуков