Skip to main content

Самодельная внешняя SAS-полка для HP ProLiant DL360p Gen8

Самодельная внешняя SAS-полка для HP ProLiant DL360p Gen8

Статус проекта: проектирование / подготовка оборудования.

Цель проекта — использовать имеющуюся 8-дисковую SFF-корзину с backplane от HP ProLiant DL380 G5 как отдельную внешнюю дисковую полку для сервера HP ProLiant DL360p Gen8 под управлением Proxmox VE.

Полка должна иметь собственный серверный блок питания и отдельный контроллер управления на ESP32. Контроллер будет автоматически управлять последовательностью включения и выключения дисковой полки и основного сервера, контролировать реальные сигналы питания и в дальнейшем предоставлять Web-интерфейс, журнал событий и мониторинг.


1. Основная идея

В исходном сервере HP DL380 G5 имеется полноценная металлическая корзина на 8 SFF SAS/SATA-дисков, backplane и штатный RAID-контроллер HP Smart Array P400.

Вместо использования всего старого DL380 G5 планируется оставить только:

  • металлическую 8-дисковую корзину;
  • оригинальную backplane;
  • оригинальные салазки HDD;
  • штатные SAS-кабели;
  • HP Smart Array P400;
  • необходимую часть штатного кабеля питания backplane.

Основным сервером будет HP ProLiant DL360p Gen8 с установленным Proxmox VE.

Внутренняя 8-SFF корзина DL360p Gen8 продолжит работать через штатный Smart Array P420i. Дополнительная внешняя корзина будет обслуживаться отдельным Smart Array P400.

HP ProLiant DL360p Gen8
│
├── Smart Array P420i
│      │
│      └── штатные 8 SFF дисков DL360p Gen8
│
├── Smart Array P400
│      │
│      ├── SAS Channel A
│      └── SAS Channel B
│              │
│              ▼
│       внешняя корзина
│       DL380 G5 8×SFF
│
└── Proxmox VE

Таким образом отказ внешней полки не должен препятствовать загрузке DL360p Gen8 и работе остальных виртуальных машин и сервисов.


2. Общая архитектура внешней полки

                   HP DL360p Gen8
                  ┌───────────────┐
                  │   Proxmox VE  │
                  │               │
                  │ Smart Array   │
                  │     P400      │
                  └──────┬────────┘
                         │
                    2 × SAS
                         │
                         ▼
            ┌─────────────────────────┐
            │    Внешняя SAS-полка    │
            │                         │
            │   DL380 G5 drive cage   │
            │   [1][2][3][4]          │
            │   [5][6][7][8]          │
            │          │              │
            │       backplane         │
            │          │              │
            │      +12 V / +5 V       │
            │          │              │
            │   DC/DC + серверный PSU │
            │                         │
            │          ESP32          │
            └─────────────────────────┘

3. Имеющееся оборудование

3.1. Основной сервер

  • HP ProLiant DL360p Gen8;
  • исполнение на 8 SFF-дисков;
  • Proxmox VE;
  • штатный Smart Array P420i;
  • внутренние диски сервера остаются независимыми от внешней полки.

3.2. Внешняя дисковая корзина

  • 8-SFF drive cage от HP ProLiant DL380 G5;
  • оригинальная SAS/SATA backplane;
  • оригинальные HDD-салазки;
  • штатные SAS-кабели;
  • штатный силовой разъём backplane.

3.3. RAID-контроллер внешней полки

  • HP Smart Array P400;
  • PCI Express;
  • два внутренних SAS-канала;
  • 256 MB cache;
  • аппаратный RAID.

P400 планируется использовать на первом этапе, поскольку контроллер, кабели и backplane уже являются комплектной системой от DL380 G5.

В дальнейшем P400 при необходимости может быть заменён более современным SAS HBA, при этом сама механическая полка останется без изменений.

3.4. Блок питания полки

Основным кандидатом выбран серверный PSU:

  • HP HSTNS-PL28;
  • HP Spare 660184-001;
  • 460 W;
  • основной выход +12 V;
  • максимальный ток основной линии около 38,3 A;
  • имеется дежурный выход +12VSB.

Имеющийся HP HSTNS-PD18 / 750 W может использоваться как резервный вариант, однако мощности 460-ваттного PSU для 8 SFF-дисков более чем достаточно.

3.5. Неиспользуемый блок питания

Delta EDPS-350CBA с основным выходом около 56 V для данной задачи использовать не планируется, так как потребовалось бы дополнительное преобразование 56 → 12 V.


4. Питание дисковой корзины

Серверный HSTNS-PL28 является преимущественно 12-вольтовым источником. Backplane DL380 G5 требует проверки фактической распиновки силового разъёма.

Предварительно предполагается наличие как минимум:

  • +12 V;
  • +5 V;
  • GND;
  • возможных служебных линий.

До экспериментальной проверки мультиметром подключение выполнять запрещено.

Если наличие +5 V подтвердится, питание будет организовано следующим образом:

HP HSTNS-PL28
      │
      ├──────────── +12 V ────────────┐
      │                               │
      └── DC/DC 12 → 5 V ── +5 V ───┤
                                      │
                                      ▼
                              DL380 G5 backplane
                                      │
                                  8 × HDD

4.1. DC/DC-преобразователь

Предварительные требования:

  • вход около 12 V;
  • выход 5,0 V;
  • не менее 10–15 A длительно;
  • предпочтительно около 20 A с запасом;
  • нормальное охлаждение;
  • регулировка и контроль выходного напряжения до подключения HDD.

Маленькие модули класса LM2596 для питания всей корзины использоваться не будут.


5. Контроллер управления ESP32

ESP32 будет выполнять функции контроллера последовательности включения и выключения.

Контроллер не должен являться единственной системой, физически удерживающей питание полки во включённом состоянии.

Для этого планируется аппаратный самоподхват реле включения PSU.

5.1. Питание ESP32

230 V
  │
HP HSTNS-PL28
  │
+12VSB
  │
DC/DC 12 → 5 V
  │
ESP32

Благодаря питанию от standby-линии ESP32 работает даже тогда, когда основной выход PSU полки выключен.


6. Контролируемые сигналы

6.1. Состояние внешней полки

ESP32 должен контролировать не только свою команду включения PSU, но и фактическое наличие основного выходного напряжения.

SHELF_COMMAND = команда включить PSU
SHELF_POWER   = физически присутствует основное напряжение

Например:

SHELF_COMMAND = ON
SHELF_POWER   = OFF

→ ошибка питания внешней полки

Контроль желательно выполнять через гальваническую развязку или согласованную измерительную схему.

6.2. Состояние основного сервера

Для определения фактического состояния DL360p Gen8 планируется использовать коммутируемое питание оптического привода.

питание optical drive присутствует
→ SERVER_POWER = ON

питание optical drive отсутствует
→ SERVER_POWER = OFF

Сигнал нельзя подавать непосредственно на GPIO ESP32. Для развязки планируется использовать оптопару.

6.3. Управление кнопкой Power DL360p Gen8

ESP32 не будет подавать какое-либо напряжение на цепь кнопки сервера.

Небольшое реле с сухими контактами подключается параллельно штатной кнопке Power.

ESP32
  │
транзистор / драйвер
  │
реле
  │
сухой контакт
  │
Power Button DL360p

Для запуска сервера контроллер будет замыкать контакт примерно на 300–500 мс.


7. Аппаратный самоподхват питания полки

Питание полки после запуска не должно зависеть от постоянного уровня GPIO ESP32.

ESP32 подаёт только импульс START, после чего реле удерживает себя собственным контактом.

              +12VSB
                 │
                 ├─────────────┐
                 │             │
             START relay    контакт K1
                 │             │
                 └──────┬──────┘
                        │
                     катушка K1
                        │
                       GND

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

Это позволяет пережить:

  • зависание ESP32;
  • watchdog reset;
  • обновление прошивки;
  • обычную перезагрузку контроллера.

После полного исчезновения сетевого питания реле самоподхвата отпускает, поэтому после восстановления 230 V полка автоматически не запускается.


8. Поведение ESP32 после собственной перезагрузки

После запуска ESP32 не должен немедленно изменять состояние оборудования.

В течение первых примерно 30 секунд контроллер работает только в режиме наблюдения.

ESP32 boot
    │
инициализация входов
    │
30 секунд только чтение сигналов
    │
├── SERVER_POWER
└── SHELF_POWER
    │
восстановление текущего состояния системы

Основные комбинации:

Сервер Полка Действие после загрузки ESP32
OFF OFF Ничего не делать
ON ON Принять состояние RUNNING, ничего не переключать
ON OFF Сервер не выключать, зарегистрировать SHELF FAULT
OFF ON Запустить таймер ожидания, полку немедленно не выключать

9. Автоматический запуск

В режиме AUTO пользователь нажимает общую кнопку включения системы.

AUTO POWER
    │
    ▼
включить PSU полки
    │
    ▼
проверить SHELF_POWER
    │
    ├── OK
    │    │
    │    ▼
    │  ожидание spin-up HDD
    │    около 30 секунд
    │
    └── FAIL
         │
         └── зарегистрировать ошибку
                │
                ▼
        запустить DL360p Gen8

Важный принцип проекта:

Неисправность дополнительной полки не должна препятствовать запуску основного сервера.

Если полка не запустилась, контроллер отображает ошибку, однако DL360p Gen8 всё равно получает команду запуска.

Это позволяет сохранить доступ к Proxmox, внутреннему массиву, виртуальным машинам и прочим сервисам.


10. Автоматическое выключение

При штатном shutdown Proxmox сервер сначала должен полностью завершить работу.

После исчезновения SERVER_POWER ESP32 не выключает полку сразу.

SERVER_POWER = OFF
        │
        ▼
запуск Grace Timer
например 180 секунд
        │
        ├── SERVER_POWER снова ON
        │        │
        │        └── отменить таймер
        │            полку оставить ON
        │
        └── 180 секунд истекли
                 │
                 ▼
            выключить полку

Таким способом обычная перезагрузка сервера не вызывает остановку и повторный spin-up дисков.


11. Обработка reboot сервера

Специально определять «reboot» отдельным коротким таймером не требуется.

Используется общий Grace Timer, например 180 секунд.

Если сервер вернулся в течение этого периода:

SERVER OFF
    │
через 20–90 секунд
    │
SERVER ON
    │
отмена выключения полки

Таким образом длительность BIOS/POST не имеет принципиального значения.


12. Режимы работы

12.1. AUTO

Полностью автоматическое управление сервером и полкой.

  • сначала запускается полка;
  • после задержки запускается сервер;
  • при shutdown сервера полка отключается через Grace Timer;
  • при reboot полка остаётся включённой;
  • ошибка полки не блокирует запуск сервера.

12.2. MANUAL SHELF

Ручное управление внешней полкой независимо от сервера.

Обычное короткое нажатие не должно выключать полку, если ESP32 видит работающий сервер.

Для принудительного отключения можно использовать длительное нажатие, например 5 секунд.

12.3. SERVER POWER

Отдельная кнопка может формировать обычное нажатие Power на DL360p Gen8.

Это позволит при необходимости запустить сервер без внешней полки.


13. Органы управления

Предварительно планируются три кнопки:

Кнопка Назначение
AUTO Автоматический запуск/останов всей системы
SHELF Ручное управление полкой
SERVER Имитация кнопки Power основного сервера

Необходимость третьей кнопки будет окончательно определена после испытаний.


14. Индикация

Минимальный вариант:

  • CONTROL — ESP32 работает;
  • SHELF — питание полки присутствует;
  • SERVER — сервер включён;
  • AUTO — включён автоматический режим;
  • FAULT — обнаружена ошибка.

В дальнейшем возможно использование небольшого OLED-дисплея.

SHELF : ON
SERVER: ON
MODE  : AUTO
STATE : RUNNING
FAULT : NONE

15. Корпус внешней полки

Корпус планируется изготовить на 3D-принтере.

При этом оригинальная металлическая drive cage DL380 G5 сохраняется полностью.

Печатный корпус выполняет только функции:

  • внешнего кожуха;
  • крепления PSU;
  • крепления ESP32 и DC/DC;
  • формирования воздушного канала;
  • крепления вентиляторов;
  • размещения кнопок и индикации.

Основную нагрузку от установки и извлечения HDD должна воспринимать металлическая корзина, а не пластиковые детали.

15.1. Материал

Предпочтительно:

  • PETG;
  • ASA;
  • ABS.

PLA для деталей рядом с горячими HDD и PSU нежелателен.


16. Охлаждение

Для SAS HDD необходимо организовать принудительный поток воздуха через всю корзину.

холодный воздух
      │
      ▼
┌─────────────────────┐
│ HDD HDD HDD HDD      │
│ HDD HDD HDD HDD      │
└─────────────────────┘
      │
      ▼
вентиляторы
      │
      ▼
горячий воздух наружу

Рассматривается использование тихих вентиляторов 92 или 120 мм.

В дальнейшем ESP32 может контролировать:

  • температуру;
  • обороты вентиляторов;
  • аварийный перегрев.

17. Электробезопасность

Несмотря на пластиковый внешний корпус, металлическая корзина HDD и корпус серверного PSU должны быть соединены с защитным PE.

PE сетевого ввода
      │
      ├── корпус PSU
      │
      └── металлическая drive cage

Также должны быть предусмотрены предохранители на силовых линиях после окончательного определения рабочих токов.


18. Настройки DL360p Gen8

В BIOS/UEFI необходимо отключить автоматический запуск сервера после восстановления сетевого питания.

Требуемая логика:

230 V восстановилось
       │
       ├── ESP32 загрузился
       │
       ├── PSU полки остаётся только в standby
       │
       └── DL360p остаётся выключенным

Запуск должен происходить только по команде ESP32 либо штатной кнопкой сервера.


19. Будущий Web-интерфейс

На втором этапе разработки ESP32 может предоставлять локальную Web-страницу.

Предполагаемые параметры:

DL360p Gen8
------------------------
Server        ONLINE
Shelf         ONLINE
Mode          AUTO
State         RUNNING

Shelf +12 V   OK
Shelf +5 V    OK

Last start    08.10.2026 08:42
Last fault    none

Возможные дальнейшие функции:

  • журнал событий;
  • температуры;
  • контроль вентиляторов;
  • счётчик включений;
  • счётчик аварий;
  • MQTT;
  • Zabbix;
  • Prometheus;
  • уведомления.

План реализации проекта

Этап 0. Инвентаризация оборудования

  • ☐ Зафиксировать точную модель backplane DL380 G5.
  • ☐ Зафиксировать маркировку силового кабеля backplane.
  • ☐ Зафиксировать модель и firmware Smart Array P400.
  • ☐ Проверить наличие и состояние cache-модуля P400.
  • ☐ Проверить возможность установки P400 в DL360p Gen8.
  • ☐ Определить способ вывода двух SAS-кабелей наружу.
  • ☐ Проверить физические размеры drive cage.
  • ☐ Зафиксировать модель PSU HSTNS-PL28.

Результат этапа: полная ведомость оборудования и разъёмов.


Этап 1. Исследование питания backplane

  • ☐ Найти точную распиновку силового разъёма.
  • ☐ Проверить распиновку мультиметром.
  • ☐ Определить контакты +12 V.
  • ☐ Определить контакты +5 V.
  • ☐ Определить GND.
  • ☐ Определить назначение оставшихся служебных контактов.
  • ☐ Не подключать диски до завершения проверки.

Результат этапа: подтверждённая таблица контактов backplane.


Этап 2. Проверка серверного PSU

  • ☐ Определить pinout HSTNS-PL28.
  • ☐ Найти ENABLE.
  • ☐ Найти PRESENT, если требуется.
  • ☐ Найти +12VSB.
  • ☐ Проверить запуск PSU без сервера.
  • ☐ Измерить напряжение основной 12 V линии.
  • ☐ Измерить standby-напряжение.
  • ☐ Определить необходимость breakout-платы.

Результат этапа: PSU стабильно запускается и выключается на стенде.


Этап 3. DC/DC 12 → 5 V

  • ☐ Подобрать преобразователь 12 → 5 V.
  • ☐ Обеспечить ток не менее 10–15 A, предпочтительно до 20 A.
  • ☐ Проверить выход без нагрузки.
  • ☐ Проверить под нагрузкой.
  • ☐ Проверить нагрев.
  • ☐ Настроить выход ровно около 5,0 V.

Результат этапа: стабильные 12 V и 5 V для backplane.


Этап 4. Первый запуск backplane без HDD

  • ☐ Подключить backplane к подготовленному питанию.
  • ☐ Проверить отсутствие перегрева.
  • ☐ Проверить ток потребления.
  • ☐ Проверить напряжения непосредственно на разъёмах HDD.
  • ☐ Только после проверки установить один тестовый HDD.

Результат этапа: один HDD безопасно получает питание через backplane.


Этап 5. Проверка SAS-тракта

  • ☐ Установить P400 в DL360p Gen8.
  • ☐ Проверить обнаружение контроллера сервером.
  • ☐ Проверить обнаружение P400 в Proxmox.
  • ☐ Подключить один тестовый HDD.
  • ☐ Проверить обнаружение HDD контроллером.
  • ☐ Проверить создание тестового Logical Drive.
  • ☐ Проверить работу через Linux/Proxmox.

Результат этапа: полный тракт HDD → backplane → P400 → Proxmox работает.


Этап 6. Испытание восьми дисков

  • ☐ Установить все 8 дисков.
  • ☐ Измерить пусковой ток.
  • ☐ Проверить падение напряжения +12 V.
  • ☐ Проверить падение напряжения +5 V.
  • ☐ Проверить нагрев DC/DC.
  • ☐ Проверить нагрев PSU.
  • ☐ Проверить температуру HDD.

Результат этапа: силовая система подтверждена под полной нагрузкой.


Этап 7. Макет ESP32

  • ☐ ESP32.
  • ☐ Питание от +12VSB через DC/DC.
  • ☐ Вход SERVER_POWER через оптопару.
  • ☐ Вход SHELF_POWER.
  • ☐ Выход SHELF START.
  • ☐ Выход SHELF STOP.
  • ☐ Реле Power Button DL360p.
  • ☐ Три кнопки управления.
  • ☐ Светодиодная индикация.

Результат этапа: контроллер работает на лабораторном стенде без HDD.


Этап 8. Реализация конечного автомата ESP32

Отдельно хранить:

ServerState
ShelfState
Mode
FaultState

Реализовать состояния:

  • ☐ OFF;
  • ☐ SHELF_STARTING;
  • ☐ HDD_SPINUP;
  • ☐ SERVER_STARTING;
  • ☐ RUNNING;
  • ☐ SHUTDOWN_PENDING;
  • ☐ SHELF_STOPPING;
  • ☐ SHELF_FAULT.

Этап 9. Отработка аварийных сценариев

  • ☐ ESP32 reset при работающем сервере.
  • ☐ ESP32 завис.
  • ☐ PSU полки не стартовал.
  • ☐ DC/DC 5 V не стартовал.
  • ☐ сервер не включился после импульса Power.
  • ☐ обычный reboot сервера.
  • ☐ штатный shutdown сервера.
  • ☐ потеря 230 V.
  • ☐ восстановление 230 V.
  • ☐ ручное включение сервера без полки.
  • ☐ ручное включение только полки.

Результат этапа: ни один единичный отказ ESP32 не вызывает неожиданного отключения работающей полки.


Этап 10. Механический корпус

  • ☐ Замерить drive cage.
  • ☐ Определить положение PSU.
  • ☐ Определить положение DC/DC.
  • ☐ Определить положение ESP32.
  • ☐ Спроектировать воздушный канал.
  • ☐ Выбрать вентиляторы.
  • ☐ Добавить крепления кнопок и индикации.
  • ☐ Добавить точки PE-заземления металлических частей.
  • ☐ Напечатать тестовый прототип.

Этап 11. Web-интерфейс и мониторинг

  • ☐ Wi-Fi.
  • ☐ Web UI.
  • ☐ просмотр текущих состояний;
  • ☐ журнал событий;
  • ☐ напряжения;
  • ☐ температуры;
  • ☐ управление режимом;
  • ☐ Zabbix/MQTT — при необходимости.

Этап 12. Финальные испытания

  • ☐ 24 часа работы.
  • ☐ 72 часа работы.
  • ☐ несколько холодных запусков.
  • ☐ несколько reboot.
  • ☐ несколько штатных shutdown.
  • ☐ проверка отказа одного HDD.
  • ☐ проверка поведения RAID-контроллера.
  • ☐ проверка температур.
  • ☐ проверка логов ESP32.

20. Текущие открытые вопросы

  1. Точная распиновка питания backplane DL380 G5.
  2. Точная схема запуска HSTNS-PL28.
  3. Выбор DC/DC 12 → 5 V.
  4. Способ вывода SAS-кабелей из корпуса DL360p Gen8.
  5. Фактическая совместимость P400 с DL360p Gen8.
  6. Точное место съёма SERVER_POWER с разъёма optical drive.
  7. Аппаратная схема START/STOP и самоподхвата PSU.
  8. Выбор вентиляторов и алгоритма их управления.
  9. Окончательная RAID-конфигурация восьми внешних дисков.

21. Правило дальнейшей разработки

Каждый следующий этап выполняется только после проверки предыдущего.

Распиновки, номиналы и схемы, подтверждённые только предположением, в финальную электрическую схему не переносятся.

По мере реализации эта статья должна дополняться фактическими фотографиями, измерениями, распиновками, командами Proxmox и окончательными схемами подключения.