...

пятница, 30 сентября 2016 г.

Короткая заметка о плате управления сервером

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

Можно ли обойтись без этой платы?


Тут, может быть, сразу последует вопрос — а зачем вообще выносить функции управления с материнской платы на отдельную карточку? Зачем умножать число компонентов, не проще ли всё засунуть на материнку, как это обычно делают производители серверов?

Согласен, в обычных условиях и мы поступили бы именно так — но в этом проекте и в таком вопросе пришлось поступить нестандартно. Из-за плотности компоновки материнской платы просто не было лишнего места для размещения чипов BMC, USB-хоста, PCIe-коммутатора и разводки всех связанных с ними цепей. А кроме того, просто не было места на задней панели шасси для установки коннекторов Ethernet/USB напрямую на материнской плате. В общем, мы решили не усложнять и без того сложную системную плату, и вынесли все эти компоненты на отдельную плату управления. Этот способ, кроме всего прочего, даёт больше гибкости в плане будущих доработок и изменений.

Что внутри?


Собственно, структурная схема платы весьма проста:

Структурная схема платы управления сервером.

Главный компонент — чип BMC ASPEED AST2400, очень популярный и наверняка многим хорошо знакомый. У него есть своя выделенная память DDR3 объёмом 512 МБ.

Под спойлером краткая ориентировка про BMC, вряд ли интересная опытным в этих сферах людям.
BMC — это Baseboard Management Controller, контроллер управления системной платой. Он включается при подаче дежурного напряжения на системную плату (т.е. когда кабель подключается к блоку питания), загружает Linux из собственной ROM-памяти. В рабочем режиме мониторит работу системы — собирает информацию с датчиков (обороты вентиляторов, температуры, напряжения и токи на компонентах, датчик проникновения в корпус), считывает коды ошибок памяти, позволяет управлять компонентами системы как автоматически, так и вручную через сеть. Ведёт журналы мониторинга системы, может включать/выключать/перезагружать систему, обновлять прошивку ROM хоста, и т.д. В общем, недремлющая рабочая лошадка.

К BMC подключен хост USB3.0, для которого мы используем чип TI7340. От него два порта USB3.0 выводятся наружу. Также к BMC прицеплен двухканальный контроллер Gigabit Ethernet (BCM5720), порты которого выведены наружу. Это очень распространённый контроллер, который отлично поддерживается архитектурой POWER.

Всю эту компанию объединяет PCIe-коммутатор (по цене оптимально было поставить PEX8714), напрямую присоединённый к разъёму для подключения к системной плате. Он разводит PCIe x4 на x2 и 2 по x1.

Разъём для подключения к системной плате имеет небольшую особенность. Сам-то коннектор полностью стандартный. Но чтобы полностью исключить установку платы управления в обычный PCIe-слот (на материнке у нас есть специальный выделенный слот для платы управления), мы развернули коннектор на 180 градусов и сдвинули его относительно стандартного для PCIe размещения.

На схеме можно также заметить видеовыход VGA и два последовательных порта — их наружу не выводили, оставили в виде header-ов. Они нужны в основном для отладочных целей — да и на внешней панели низкопрофильной PCIe-карты просто не осталось места после размещения двух USB и двух Ethernet портов.

Как выглядит плата


Собственно, геометрия платы получилась такая (плата низкопрофильная, но длинная):

В левой стороне изображения задняя панель платы — из неё выведены 2 порта USB3.0, а под ними — сдвоенные порты GbE.

Покажу и нашу любимую техноживопись дорожками по плате:


Сигналы и питание разведены по 8 слоям.

Считаю, отлично годится, чтобы распечатать в цвете и повесить на стенку — нарядно, воодушевляюще, и очень жизненно! :)

Пожалуй, стоит ещё немного сказать про BMC. Прошивку для него мы разрабатываем сами на основе OpenBMC. Собственно, задачи стоят простые:

  1. зафиксировать требования к прошивке и расставить приоритеты по их реализации;
  2. поднять исходный вариант на нашем сервере (адаптировав базовый функционал к нашему железу);
  3. добавить нужный для нас функционал.

Получившуюся в результате версию, естественно, в OpenBMC будем коммитить.

Комментарии (0)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий