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

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

чи Можна обійтися без цієї плати?
Тут, може бути, відразу піде питання — а навіщо взагалі виносити функції управління з материнської плати на окрему картку? Навіщо множити число компонентів, чи не простіше все засунути на материнку, як це зазвичай роблять виробники серверів?

Згоден, в звичайних умовах і ми вчинили б саме так — але в цьому проекті і в такому питанні довелося вступити нестандартно. З-за щільності компонування материнської плати просто не було зайвого місця для розміщення чіпів 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 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.