11 сент. 2011 г.

Немного о SAS-экспандерах

За последние годы SAS успел окончательно вытеснить параллельный SCSI и даже понемногу начал занимать территорию FibreChannel (как для подключения хостов к СХД, так и дисков). Сменилось поколение стандарта SAS, скоро появится третье поколение (статья о SAS 3.0 и Multilink SAS), выпущено большое количество оборудования, в том числе и основным для нас вендором - компанией Supermicro. Речь, конечно же, пойдет прежде всего о корпусах Supermicro с SAS-экспандерами: по-прежнему вопросы о подключении дисков или контроллеров, совместимости, производительности поступают каждый день.

  1. Что такое SAS-экспандер?
  2. Применение SAS-экспандеров
  3. FAQ
  4. SAS-экспандеры в продуктах Supermicro

Что такое SAS-экспандер?

SAS-экспандер - это коммутирующее устройство, обеспечивающее подключение к общей топологии нескольких SAS-инициаторов и таргетов. Экспандер хранит таблицу маршрутизации с WWN-адресами подключенных к SAS-домену узлов и обменивается данными о маршрутизации и зонировании (начиная с SAS-2) с другими экспандерами в домене. Обычно экспандер обеспечивает через встроенный SMP-таргет мониторинг: показания термодатчиков, скорость вращения вентиляторов, состояние блоков питания.

Применение SAS-экспандеров

Применяются SAS-экспандеры для подключения нескольких SAS-таргетов (это могут быть специализированные СХД с интерфейсом SAS, либо отдельные SAS или SATA диски).
Обычно несколько PHY экспандера конфигурируются как входные (для подключения инициатора - хоста или предыдущего экспандера в топологии), остальные - в качестве выходных портов для подключения конечных устройств, часть может выводится для подключения дочерних экспандеров на отдельные разъемы. В большинстве случаев наружные порты состоят из 4-х PHY, образующих wide-порт при подключении к хосту или другому экспандеру.
SAS-экспандер также занимается тем, что распаковывает STP-фреймы (SATA Tunneling Protocol - протокол, обеспечивающий туннелирование SATA команд в SAS) для работы с подключенными непосредственно к нему SATA-дисками.
Если вас интересуют дальнейшие технические подробности (edge- и fanout-экспандеры в SAS-1, ZPSDS в SAS-2 и т.д.) - добро пожаловать на www.scsita.org.
Внутренний SAS-экспандер Chenbro
Готовым устройством может быть внутренний экспандер - плата с несколькими разъемами SAS 4x (SFF-8087 - внутренний 4x SAS разъем, SFF-8088 - внешний). На иллюстрации представлен внутренний экспандер производства Chenbro, имеющий один 4x входной разъем и 6 (2 внешних и 4 внутренних) - для подключения конечных устройств или других экспандеров. Например, 4 внутренних разъема 4x - это 16 PHY, к которым можно подключить 16 дисков, а 2 внешних использовать для подключения дополнительных дисковых полок.
Внешний экспандер Areca
Чип экспандера может находится непосредственно на плате RAID-контроллера, как в многопортовых Adaptec 51245/51645/52445 и LSI 9280-16i4e/24i4e. ROC-процессоры данных контроллеров имеют только 8 PHY, которые подключены к МС SAS-экспандера, что превращает 8-портовые контроллеры в 16/20/28-портовые.
Экзотическая разновидность - внешний экспандер, в виде отдельного устройства с несколькими внешними SAS-портами.
Еще одно и, пожайлуй, самое распространенное применение - в бэкплейнах дисковых корзин серверов. Например, в популярной серии корпусов Supermicro 846Exx (846E1, 846E2, 846E16, 846E26) можно разместить 24 SAS или SATA диска, при этом будет достаточно 4-портового контроллера (что будет с полосой пропускания - будет подробно описано ниже).
Корпус Supermicro 846E16-R1200B
Собственно говоря, в подобном корпусе может быть размещен не сервер (с системной платой, процессорм и т.д.), а только диски и небольшая плата управления питанием. В этом случае получится просто "коробка с дисками", часто называемая SAS-JBOD или просто JBOD (иногда возникает путаница в терминах, т.к. JBOD'ом еще традиционно называется способ объединения дисков в массиве с последовательным заполнением).
Дополнительная преимущество при подключении дисков через SAS-экспандер - возможность подключения к обоим портам SAS-диска. Все современные диски с интерфейсом SAS имеют два порта, каждый со своим WWN.
Использование двух экспандеров, подключенных к разным портам дисков, позволяет получить port-failover (защиту от выхода из строя phy диска и/или контроллера) или controller-failover - дополнительную защиту от выхода из строя контроллера, в случае использования специализированных внешних SAS СХД или специальных программных решений (например, Nexenta-HA на платформе Supermicro SBB).

FAQ

Пропускная способность
Увидев разницу в цене, например, между 4-портовым SAS-контроллером LSI 9260-4i и LSI 9280-24i4e (24 внутренних порта + 4 внешних), многие ждут подвоха в виде неизбежной потери производительности. В самом деле - достаточно ли полосы пропускания четырех портов SAS для подключения относительно большого количества дисков? Часто приводят следующий довод: "из опубликованных тестов и спецификаций мы видели, что скорость чтения даже на не самых быстрых, но современных SATA дисках составляет порядка 150МБ/с и выше, для 24-х дисков это будет 24x150=3600МБ/с, т.е. полосы 4x6*0,8Гбит (это около 2500МБ/с) никак не хватит".
Для того, чтобы развеять эти опасения, нужно вспомнить про IOPS'ы и ограниченную производительность самих контроллеров, а так же про особенность многопортовых (>8) контроллеров.
Ограничения по IOPS. В серверных системах нечасто встречаются линейное чтение или запись, разве что в системах видеонаблюдения или бэкап-серверах. В основном, речь идет о случайном доступе с различным распределением по размеру блоков и соотношением чтение/запись, особенно это касается СУБД. И вот тут ни о каких 150МБ/с и речи не идет, прогресс остановился - частота вращения шпинделя не превышает 15000об/мин, растет лишь плотность записи. На практике это означает, что даже с быстрого 15k SAS диска мы не можем, к примеру получить больше 250-300 операций ввода/вывода в секунду (IOPS) при чтении малыми блоками, а 7200об/мин дисками - еще меньше. Т.е. при размере блока 4КБ получаем порядка 1МБ в секунду для одного диска при полностью случайном доступе.
Способы решения данной проблемы:
  • использование SSD, производительность которых при случайном доступе в десятки и стони раз превышает возможности обычных HDD
  • наращивание количества шпинделей (есть системы, которые можно масштабировать до нескольких сотен дисков в одной дисковой группе)
  • применение кэширования в RAM-кэше контроллера (в сочетании с оптимизацией это помогает сделать обращение к массиву более последовательным) или так называемого tiered-storage - многоуровневого хранения SATA->SAS->SSD (с вытеснением часто используемых данных на более быстрые уровни)
В общем, фронтенда 4xSAS2 (4x6=24Гбит) и даже SAS1 (4x3=12Гбит) в 99 случаях из ста оказывается более чем достаточно, особенно если сравнить с 4/8Гбит FC и iSCSI или FCoE поверх 10GbE.
LSI 9280-24i4e
Многопортовые контроллеры. Помните, что все выпускамые сейчас SAS RAID контроллеры имеют максимум 8 портов SAS (Обновление: ситуация изменилась после анонса контроллеров Adaptec серии 7. Данные контроллеры имеют до 24 нативных портов SAS2). Большее количество портов, вплоть до 28-ми в контроллерах Adaptec 52445 и LSI 9280-24i4e, получается за счет размещения SAS-экспандера на одной плате с контроллером. Свои плюсы у такого решения есть: для подключения к набортному экспандеру задействованы 8 портов контроллера, а не 4, как в случае с подключением к одиночному внешнему экспандеру (как уже было описано выше - использование подключения к двум экспандерам требует SAS дисков, для SATA нужно дополнительное устройство - мультиплексор). К тому же всегда есть один внешний порт, который можно использовать для подключения большого количества дисков через JBOD'ы.
Ограничениченная производительность контроллеров. Наличие аппаратного блока вычисления контрольных сумм для RAID-5 и RAID-6 вовсе не означает, что контроллер просто обязан пропустить через себя неограниченное количество данных, плюс нужно учесть пропускную способность PCI-E 2.0 x8.
Пример: для контроллеров на базе процессора LSI 2108 (LSI 9260, LSI 9280, различные контроллеры Intel, Dell, Supermicro) предел по пропускной способности на запись в RAID 5 или 6 составляет 1360МБ/с (в массивах 0, 10 - до 3000МБ/с), предел по IOPS - 130000. Контроллеры 3ware на том же процессоре демонстрируют чуть лучшие результаты при многопоточном последовательном чтении/записи, но IOPS-предел у них в два раза меньше. Кстати, на SAS HBA от LSI последнего поколения (на базе LSI 2108) в сочетании с SSD и программным RAID можно получить и до 290000 IOPS.
У нового поколения на базе 2-ядерного LSI 2208 (контроллеры LSI 9265 и 9285) производительность выше - почти до полумиллиона IOPS и более 2000МБ на запись в RAID 5/6.
(Обновление от 18.04.2013. Контроллеры Adaptec 7-й серии демонстрируют лимит в 6600МБ/с.)
Так что если вы уверены в том, что вам нужно получить больше - используйте несколько контроллеров, а LUN'ы с них придется объединять в программный RAID.
Конечно, в реальных применениях достигнуть предела производительности контроллера не так уж просто, и при 20-40 дисках (без SSD) контроллеры Adaptec и LSI демонстрируют приблизительно равные результаты.
Совместимость
Часто задаваемый вопрос: "я подключил такие-то диски к такому-то контроллеру, корпус - Supermicro такой-то, часть дисков не определяется" или "наблюдаю выпадение дисков из массива".
Увы, совместимость между SAS-2 и SAS-1, совместимость между SAS-контроллерами и экспандерами разных производителей, полная поддержка SATA SAS-контроллерами и экспандерами существуют лишь на бумаге. В реальных условиях следует опираться на списки совместимости "контроллер + диски" и "контроллер + экспандер + диски":
Причины несовместимости - от широко известного отсутствия поддержки диском SCT Error Recovery Control (он же TLER в терминологии WD, без поддержки ERC возникает ситуация, когда диск слишком долго пытается получить доступ к сбойному сектору) до фатального сочетания багов в микрокоде контроллера диска, SAS-контроллера и экспандера.
Но помимо HCL (которые могут быть неполными или содержать неточности), есть следующие особенности:
  • Экспандеры первого поколения SAS-1 в корпусах Supermicro (xxxE1-Rxxx, xxxE2-Rxxx) на базе чипов LSI SASX28 и SASX36 довольно привередливы: в HCL от Supermicro по вышеприведенной ссылке очень мало дисков и большинство из них уже сняты с производства.
    C этими экспандерами работает большинство SAS-1 и SAS-2 дисков, в том числе nearline-SAS (диски с механикой от 7200об/мин SATA дисков, но SAS-контроллером), случаев несовместимости не выявлено. А вот c SATA-3 дисками, например, Hitachi 7K3000/A7K3000 есть проблемы: не определяется часть дисков, случайное выпадение дисков из массива под нагрузкой.
    По-прежнему несовместимы с SAS-1 экспандерами Supermicro контроллеры Adaptec 6-й серии (6405, 6805, 6445) - контроллер не видит весь экспандер, либо часть дисков. Данная проблема, возможно, будет устранена в следующем релизе firmware.
  • Дисковые корзины Supermicro CSE-M28E1 и CSE-M28E2, содержащие один или два экспандера LSI SASX12, несовместимы с контроллерами Adaptec 6-й серии и контроллерами LSI MegaRAID SAS-2 (все контроллеры на базе чипов LSI 2108 и 2208): экспандер не определяется, иногда с ошибкой "Invalid SAS topology" при запуске контроллера.
SAS-экспандер и кластеры
Первая идея, которая приходит в голову человеку, впервые увидевшему JBOD с двумя SAS-экспандерами: "А нельзя ли подключить два хоста с SAS RAID контроллерами к этому JBOD и использовать получившуюся конструкцию для кластера, требующего общий LUN?"
Стоимость подобного решения в сравнении с готовыми 2-контроллерными СХД начального уровня выглядит привлекательно. Но, увы, работать ничего не будет*:
  • Обычные RAID контроллеры не рассчитаны на такое подключение (но сейчас есть и исключения в виде LSI Syncro CS). Их firmware ничего не знает о том, как поделить доступ к дискам с другим контроллером. Если бы даже не существовало этой проблемы, то возникает проблема синхронизации кэшей и так далее. На практике вы увидите зависание одного или обоих контроллеров при инициализации, возможно с сообщением об ошибочной топологии SAS.
  • Возможен вариант не с RAID контроллерами, а с обычными HBA. Доступом к дискам управляет в данном случае специальное ПО или экзотической ОС (например, IBM AIX), стоимость которых уже не позволяет вести речь об экономии. Примеры реализаций: NexentaStor HA, или опять-таки готовые СХД.
    Мечты о том, что можно реализовать простой failover самостоятельно ("программно отключу HBA второго сервера и напишу скрипт, который поднимет его обратно при отсутствии отклика от первого сервера"), можно считать несбыточными - в подобный софт производители СХД вложили огромное количество ресурсов, простой кустарной реализации не получится.
  • Заблуждение о том, что "SAS-JBOD - это бюджетная система хранения данных" - основная логическая ошибка, которую многие почему-то не сразу замечают. JBOD - это просто корпус с дисками и SAS-экспандером, а от системы хранения данных мы должны получить готовый LUN, а не набор дисков.
  • Единственное, что можно сделать с JBOD'ом подручными средствами применить зонирование, отдав каждому хосту свой набор дисков. Переключив зонирование дисков с отказавшего хоста на исправный, можно быстро получить доступ к данным, но это не решает проблему с данными, находившимися в кэше. Зонирование требует подключения дисков к SAS-2 экспандеру, а для управления зонированием можно использовать SAS-коммутатор, например, LSI 6160, которому уже были посвящены несколько статей.
*Обновление от 14.10.2013. Времена меняются, и утверждение "SAS JBOD — не для кластеров" уже теряет актуальность. С появлением поддержки Parity Spaces для Failover Cluster'а в Microsoft Windows Server 2012 R2 использование Storage Spaces для кластеров Microsoft становится вполне обоснованным. Для vSphere есть VSA и с появлением vSphere 5.5 - еще и VSAN (наследие Virsto).

SAS-экспандеры в продуктах Supermicro

Корпуса с SAS-экспандерами. Развновидностей много: от 2U до 4U, с SAS-1 или SAS-2 экспандерами, с одним или с двумя экспандерами, под SFF и LFF диски, с обычным и двухсторонним размещением дисков.
Подробнее ознакомится с этим многообразием можно на сайте Supermicro.
Особенности:
  • 2U корпуса (и 4U с двухсторонним размещением дисков) имеют разновидности "LP" и "U" (например, SC216E26-R1200LPB и SC216E26-R1200UB). Первая предназначена для обычный плат размером до E-ATX, платы расширения - только низкопрофильные, устанавливаются напрямую, без райзера. Вторая - для системных плат форм-фактора UIO (с вырезом для размещения платы в нижний слот райзера) и позволяет устанавливать до 4-х плат полной высоты + 3-х низкопрофильных плат.
  • Большинство экспандерных бэкплейнов Supermicro имеют один вход и два выхода (с разъемами 4x SAS SFF-8087) для удобства каскадирования: последовательное подключение более 6-ти экспандеров LSI крайне не желательно, а два выхода позволяют построить топологию с ответвлениями. Вот пример топологии с каскадом из двух 2-экспандерных бэкплейнов на чипе LSI SAS2X36 (12 phy экспандера - на вход и выходы, оставшиеся 24 - для подключения дисков):
  • Корпуса с поддержкой более 24-х дисков содержат несколько бэкплейнов, каждый из которых - со своим экспандером. Пример: корпус 847E16-R1400LPB - это 4U корпус с двухсторонним размещением дисков. Спереди - бэкплейн SAS2-846EL1 на 24 диска (SAS2X36), сзади - SAS2-826EL1 на 12 дисков (LSI SAS2X24). Тут возникает свобода подключения: подключить первый бэкплейн к 4-портовому контроллеру и второй бэкплейн каскадом к первому, подключить оба бэкплейна к одному 8-портовому контроллеру или к разным контроллерам.
  • Платы многих 2-экспандерных бэкплейнов имеют ошибочную маркировку портов второго экспандера. Например, на 826EL2 порты второго экспандера SEC_J0 и SEC_J1 (вход и выход) промаркированы наоборот. Правильную информацию нужно искать в инструкции.
  • На основе корпусов Supermicro можно сделать SAS-JBOD. Для этого вместо системной платы устанавливается небольшая плата управления питанием, а входы и выходы бэкплейна выводятся наружу при помощи кабеля-переходника SFF8087->SFF8088.
  • Более того, некоторые варианты корпусов существуют исключительно в JBOD-исполнении, системную плату просто некуда установить (417E16-RJBOD1 на 88 дисков SFF).
И еще есть отдельные дисковые корзины на 8 SFF дисков CSE-M28E1 и CSE-M28E2. Занимают 3 отсека 5.25", имеют съемный вентилятор на задней стенке и 1 или 2 экспандера LSI SASX12. Интересной особенностью является подключение при помощи обычный SATA разъемов (по 4 на экспандера) и использованием нестандартных "перекрестных" кабелей 4xSAS->4 SATA. Сделано это потому, что два из четырех phy можно использовать не только на вход, но и на выход - для каскадирования. В комплекте идут два кабеля: с современными SFF-8087 разъемом и старым широким SFF-8484. Проблема номер один - кабели длиной 50см, такой длины хватает не всегда. Проблема номер два - несовместмость с SAS2 контроллерами, о чем уже упоминалось выше.
Альтернативой является корзина M28SAB с обычным бэкплейном без экспандера.
Вот и все. Задавайте дополнительные вопросы по почте и в комментариях, а за продукцией Supermicro, LSI и Adaptec обращайтесь в компанию True System.