Serial-Attached SCSI

Автор: niknik
Дата: 15.12.2004
Все фото статьи

Что такое SAS, предыстория


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

Два ключевых фактора, которые подталкивают производителей совершенствовать интерфейсы винчестеров - это растущая производительность систем хранения данных при большом количестве обслуживаемых транзакций и скорость выборки данных из крупных библиотек. Разумеется, "свято место пусто не бывает", и появление интерфейсов вроде оптического FCAL или последовательного SATA в какой-то степени позволило избавиться от "узких мест" и внести разнообразие в список архитектур систем хранения данных. Однако, привыкшие к возможностям SCSI пользователи по-прежнему остаются поклонниками этого стандарта. Тем более, что в его развитие вложены очень и очень большие деньги.

Вот такие предпосылки сложились к моменту зарождения нового индустриального стандарта, названного последовательно-подключенный SCSI - Serial-Attached SCSI, или просто SAS.


Ради справедливости стоит отметить, что новый стандарт появился не вдруг и не сразу: официальному анонсу технологии SAS, состоявшейся 28 января 2004 года предшествовала серьезная работа команды разработчиков из разных компаний и промышленных групп - SCSI Trade Association (STA) и International Committee for Information Technology Standards (INCITS), под эгидой American National Standards Institute (ANSI). Впервые о новом стандарте заговорили в декабре 2001 года, когда совет директоров SCSI Trade Association (STA) проголосовал за определение спецификаций Serial Attached SCSI. Далее 2 мая 2002 года разработка стандарта была передана созданному специально для поддержки, развития и продвижения SAS комитету T10 при INCITS (InterNational Committee for Information Technology Standards), а первые черновые спецификации SAS были опубликованы в середине 2003 года.

Итак, самое главное, на что стоит опираться при попытке сформулировать определение стандарта SAS: Serial-Attached SCSI является логичным и естественным последовательным расширением технологии параллельного интерфейса SCSI, используемого для подключения периферии к компьютерам.
От этого, для начала, и оттолкнемся.

Назначение SAS


Для определения назначения стандарта SAS и его места среди современных периферийных интерфейсов обратимся к формулировкам, изложенным в "FAQ по Serial Attached SCSI" на сайте T10.

Интерфейс Serial Attached SCSI является продуктом логической эволюции современных интерфейсов и разработан для применения в промышленных центрах сбора и хранения данных. Стандарт SAS опирается на электрические и физические характеристики интерфейса Serial ATA, обеспечивает масштабируемость, производительность, надежность и управляемость данных в серверах и подсистемах хранения данных. Архитектурная схожесть с SATA не мешает SAS обладать наиболее востребованными чертами SCSI, в то же время избавляясь от его недостатков: крупных разъемов, малой длины соединительных кабелей, ограниченной производительности и адресации.

В широком смысле понимания SAS - это своеобразный полнодуплексный SATA с поддержкой двух портов, больших возможностей адресации, расширенной надежностью, производительностью и логической совместимостью со SCSI. Интерфейс Serial ATA, с другой стороны, можно рассматривать как упрощенное подмножество Serial Attached SCSI для работы в простых системах без критических требований к надежности и производительности. Это совсем не значит, что устройства Serial Attached SCSI не могут использоваться в обычных рабочих станциях и настольных ПК, необходимо лишь наличие соответствующего хост-адаптера.

По сути, Serial Attached SCSI - это SCSI, но не с привычной параллельной, а с point-to-point (точка-точка) последовательной архитектурой, с непосредственным подключением контроллера к накопителям. SAS поддерживает до 128 накопителей различных типов и размеров, совместно подключенных более тонкими и длинными (нежели в случае SCSI) кабелями. В то время как интерфейс SCSI "проталкивает" по своим проводам данные со скоростью порядка 20 МБ/с, а полудуплексный SATA первого поколения - 1.5 ГБ/с в одном направлении в единицу времени, полнодуплексный сигнальный последовательный интерфейс SAS с поддержкой "горячего" подключения в нынешней реализации обеспечивает обмен данными на скорости до 3.0 Гб/с на порт.

Ключевым отличием SAS от SCSI является возможность подключения SAS-накопителей одновременно к двум различным портам, каждый из которых представляет различные домены SAS. Можете себе представить, насколько значительным образом это отражается на надежности хранения данных и отказоустойчивости системы. К тому же, "коммутаторная" природа архитектуры SAS позволяет в теории подключать "покаскадно" тысячи накопителей (до 16384 приводов без снижения производительности!), что делает масштабируемость таких систем теоретически неограниченной. Основные отличия технологий SCSI и SAS приведены в таблице ниже.



Спецификации разъемов и кабелей SAS


Одной из ключевых особенностей интерфейса SAS при его разработке была определена возможность значительного наращивания скорости обмена данными. Разрабатываемые сейчас спецификации следующего поколения SAS подразумевают обмен данными со скоростью до 6.0 ГБ/с при полной совместимости с первым поколением SAS-устройств. Следующее за этим поколение всерьез пока не рассматривалось, но поговаривают о возможности достижения скорости обмена данными до 12 ГБ/с.


При разработке разъемов под устройства SAS был заложен перспективный рост скорости обмена данными, и одновременно с этим учтен опыт миниатюризации, просматриваемый в спецификациях SATA. Специфика разъема заключается в размещении второго порта данных, ибо каждый из портов SAS-устройства размещается в различных доменах и служит для организации независимых путей от одного SAS-устройства к другому для обеспечения безаварийной работы. В случае, если один из накопителей в цепочке выходит из строя, это никоим образом не отражается на работе других устройств. Таким образом на свет появился дизайн разъема для периферии с интерфейсом SAS, по сути имеющий архитектурное сходство с 68-контактными разъемами для накопителей с классическим параллельным интерфейсом SCSI или SCA-2, но в то же время, по аналогии с SATA, поддерживающей "горячее подключение" и надежный контакт.

Кабельная система SAS имеет гораздо более компактные размеры, нежели аналогичная для параллельных интерфейсов ATA и SCSI, что обеспечивает меньшую путаницу и лучший обдув воздухом компонентов внутри системного корпуса. Типичная длина интерфейсных кабелей SAS для применения, например, в рабочих станциях, не превышает 1 м, максимальная длина такого кабеля может достигать 8 м. Теоретически это сравнимо с длиной кабеля для интерфейса SCSI, поскольку некоторые современные устройства допускают соединение между хост-контроллером и SCSI-периферией на расстоянии более 8 м. Однако, в случае нужды расстояние между SAS-устройствами может быть значительно увеличено за счет так называемых SAS-экспандеров - своеобразных "станций подкачки трубопровода".


Интересно отметить, что при разработке спецификаций SAS рабочая группа сразу же приняла во внимание необходимость определения параметров разъемов и кабелей не только для внутренних, но и для внешних подключений, аналогичных современным SCSI-вариантам вроде "сервер - JBOD система". Для интерфейса SATA принятие таких спецификаций было отложено "на потом", и, как результат, разработка External SATA до сих пор еще не закончена.

Что касается внешних SAS-подключений, за основу было принято предложение компании Infiniband, где внешние разъемы и кабельная система рассчитаны на 4 устройства и в то же время обеспечивают производительность первого поколения внешних SAS-соединений на уровне 1.2 ГБ/с в каждом направлении, то есть до 2400 МБ/с в полнодуплексном режиме! Согласитесь, более чем впечатляюще для внешнего интерфейса.

Системная топология SAS


Использование конфигураций класса "точка-точка" позволяет получить высокую пропускную способность, однако, обратной стороной медали является организация специфической топологии, где при взаимодействии инициирующих (хост) устройств и периферии подразумевается поддержка более чем двух устройств "в связке". При разработке стандарта SAS в спецификации сразу же было заложено существование недорогих экспандеров, позволяющих создавать системы с количеством инициирующих хостов более одного, с поддержкой более чем одного периферийного устройства.

Еще одна важная цель, которую ставили перед собой разработчики нового стандарта - уйти от ограничения классического SCSI, подразумевающего не более 16 устройств в одной цепочке. В результате каждая SAS-система при применении соответствующего количества экспандеров способна поддерживать адресацию до 16256 устройств в едином SAS-домене. Обязательно стоит отметить гибкость конфигурации SAS-экспандеров: их спецификации подразумевают создание гетерогенных систем, где в качестве периферийных накопителей могут уживаться как SAS, так и SATA устройства. Согласитесь, очень удобно, особенно, при формировании бюджетных систем хранения данных или устройств с закладываемым на перспективу масштабированием.


Иллюстрация к принципу организации SAS домена
максимальной емкости

Обратите внимание на иллюстрацию выше: темно-зеленый модуль в центре представляет собой тот самый экспандер-коммутатор (fanout expander). Такой "коммутационный" экспандер может присутствовать в одном SAS-домене в единичном количестве и объединять собой до 128 SAS-устройств. Однако, не стоит под SAS-устройствами понимать исключительно жесткие диски, поскольку здесь подразумевается любая возможная комбинация из так называемых "периферийных экспандеров" (edge expanders, светло-зеленые модули), инициирующих устройств и собственно накопителей. Периферийные экспандеры, в свою очередь, могут также поддерживать до 128 SAS-устройств, однако, к ним можно подключить уже не более одного дополнительного экспандера. Голубыми модулями на схеме отмечены инициаторы (хосты), а коричневыми цилиндрами - SAS или SATA приводы.

Протоколы SAS


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

В результате рабочей группой по развитию протокола SAS было принято решение выбрать в качестве идентификаторов уникальные в глобальном плане 64-битные имена - WWN (WorldWide Name) для всех типов SAS-устройств. Опять же, ничего нового под Луной, именно такая адресация давно используется при наименовании Fibre Channel устройств.


Таким образом, в момент включения питания все устройства, объединенные в единое SAS-пространство, обмениваются друг с другом своими WWN, и только после этого комплект SAS-устройств становится "осмысленной" SAS-системой. Добавление в SAS-систему нового устройства (под добавлением в этом случае подразумевается как раз "горячее подключение") или его изъятие из системы приводит к появлению извещения, которое оповещает о событии все инициаторы и позволяет подстроить систему под новую конфигурацию. На экспандеры, в свою очередь, ложится обязанность "выдачи" WWN всем SATA-устройствам системы, как в случае ее включения, так и в случае "горячего" подключения нового устройства. По завершению процесса инициализации системы, SATA устройства взаимодействуют с помощью SATA протоколов, для SAS-устройств используется SAS-протокол, описанный в других SCSI-стандартах типа SPI (SCSI Parallel Interface).

Дальше все проще: обмен командами, данными, статусами и другой информацией между SAS-устройствами производится пакетами, спецификации которых очень схожи на характеристики пакетов для обмена информацией при работе с параллельными SCSI или Fibre Channel устройствами. Формат пакетов данных SAS, называемых "фреймами", особенно схож со спецификациями Fibre Channel: каждый из них состоит из блоков командных дескрипторов - CDB (command descriptor block) и других SCSI-конструкций, определяемых другими стандартами SCSI, вроде SCSI Primary Command Set или SCSI Block Command. Вот Вам еще одна выгода от стандарта SAS: использование SCSI-подобного протокола и архитектуры позволяет объединять SAS-конструкции с другими системами хранения и обработки данных с архитектурой Infiniband, iSCSI или Fibre Channel, которые, по сути, также являются SCSI-объектами.

Протокол SAS содержит четыре традиционных уровня: физический (phy layer), коммуникационный (link layer), уровень портов (port layer) и транспортный уровень (transport layer). Объединение четырех уровней в каждом порте SAS означает, что программы и драйверы, используемые для работы с параллельными портами SCSI, могут с равным успехом использоваться и для обслуживания портов SAS, лишь с незначительной модификацией.


Архитектура SAS

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

Уровень портов SAS отвечает за обмен пакетами данных с коммуникационным уровнем (link layer) в порядке установления соединений, а также за выбор физического уровня, с помощью которого будет осуществляться передача пакетов одновременно на несколько устройств. Под физическим уровнем SAS подразумевается соответствующее аппаратное окружение - трансиверы и модули кодирования, которые подключаются к физическому интерфейсу SAS и отправляют сигналы по проводным цепям.




Кстати, напомню, на физическом уровне соединения в случае последовательного интерфейса SAS представляют собой полнодуплексные дифференциальные пары цепей, которые также могут объединяться для увеличения производительности (ну прямо как PCI Express) в "широкие" порты. Соответственно, каждое устройство может иметь более одного порта, и каждый из них может быть сконфигурирован как "узкий" или "широкий". Интерфейсы хостов и экспандеров могут быть составлены из нескольких портов, при этом адрес каждого хоста доступен каждому периферийному устройству, а пропускная способность при этом суммируется. Организация множества путей прохождения данных за счет наличия "широких" портов подразумевает параллельное исполнение команд и соответствующее снижение потерь времени на ожидание очереди.

Заключение


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

Главное определение SAS, которое, по-моему, не стоит забывать - новый последовательный интерфейс Serial Attached SCSI был разработан для нужд широкого списка систем хранения данных корпоративного уровня, однако, все же он представляет собой интерфейс "близкого действия" и ни в коем случае не призван заменить собой какие-либо сетевые интерфейсы, не надо "покупаться" на схожую реализацию архитектуры "точка-точка".

При всей своей "заточенности" для работы в крупных и чуть ли не бесконечно масштабируемых системах хранения данных, интерфейс Serial Attached SCSI подразумевает полную совместимость с относительно недорогими накопителями Serial ATA, что позволяет конструировать вполне доступные системы даже в масштабе малых предприятий. В то же время поддержка 2-портовых Serial Attached SCSI приводов позволяет обеспечить производительность уровня, который и не снился нынешним системам на SCSI-приводах.

Для тех, кто готов самостоятельно окунуться в изучение особенностей Serial Attached SCSI, мы приводим в заключение список сайтов, где расположены учебные и стандартообразующие документы.

ресурсы сайта компании Adaptec
ресурсы сайта компании Maxtor
ресурсы сайта компании Seagate

T10:

Serial Attached SCSI –
SCSI Architecture Model – 3 (SAM-3)
SCSI Primary Commands – 3 (SPC-3)
SCSI Block Commands – 2 (SBC-2)
SCSI Stream Commands – 2 (SSC-2)
SCSI Enclosure Services – 2 (SES-2)

Спецификации разъемов SAS:

SFF 8482 (internal backplane/drive)
SFF 8470 (external 4-wide)
SFF 8223, 8224, 8225 (2.5", 3.5", 5.25" form factors)
SFF 8484 (internal 4-wide)

Спецификации Serial ATA:

Serial ATA II: Extensions to Serial ATA 1.0
Serial ATA II: Port Multiplier
Serial ATA II: Port Selector
Serial ATA II: Cables and Connectors Volume 1

Дополнительные ресурсы:

International Committee for Information Technology Standards
T11 (стандарты Fibre Channel)
SCSI Trade Association
SNIA (Storage Networking Industry Association)