На руках сервер Dell R710, служащий верой и правдой более 10 лет. Пришло время сменить SAS диски и избавиться от аппаратного RAID. В сервере 4 корзины. Каким то чудом контроллер позволял работать с двумя дисками в режиме RAID1 и ещё двумя дисками без RAID. Но когда захотелось иметь доступ ко всем 4 дискам без RAID, то вылезла проблема, контроллер H200 (SAS2008) выдавал системе только первые два диска, остальные были недоступны ни в BIOS контроллера, ни в системе. Естественно в интернете много инструкций по прошивке контроллера из IR (Integrated RAID) режима в IT (Initiator Target), но в них не указаны некоторые нюансы, а именно:
- После прошивки сменится Product ID контроллера и он перестанет работать в специальном слоте Dell R710, можно будет его, конечно, переставить в любой другой доступный PCI-e слот, но тогда нужно будет менять SAS кабель на более длинный. Это не мой вариант, буду менять Product ID на походящий.
- В инструкциях уничтожают содержимое памяти контроллера полностью, потом прошивают только Firmware, а BIOS нет, в следствии чего с данного контроллера не загрузишься.
- Прошивать лучше на другой машине, сервер уйдёт в System Halted с сообщением, что установлено неопознанное устройство в слот контроллера дисков.
Начнём с того как вернуть всё «взад». Нужна флешка с FreeDOS (инструкция по созданию https://www.poweriso.com/tutorials/create-freedos-bootable-usb-drive.htm ). На неё распаковать содержимое с последней доступной официальной прошивкой от Dell: DELL_PERC-H200-ADAPTER_A04_R294620
Делаем следующее:
sas2flsh.exe -o -e 7
reboot
sas2flsh.exe -o -f H200A.FW
sas2flsh.exe -o -b mptsas2.rom
reboot
Здесь не будет SAS Address, нужно будет его прописать с помощью s2fp19.exe -o -sasadd 5B8CA3A0F7FCD400
Чтобы прошить в режим IT, перейти на Avago BIOS и самую свежую прошивку от LSI (Broadcom) делаем следующее:
sas2flsh.exe -o -e 7
reboot
sas2flsh.exe -o -f 6GBPSAS.fw
reboot
sas2flsh.exe -o -f 2118it.bin
sas2flsh.exe -o -b mptsas2.rom
s2fp19.exe -o -sasadd 5B8CA3A0F7FCD400
reboot
Убедиться что BIOS контроллера появляется в POST, в управление можно попасть через Ctrl+C, но без дисков он прожуёт и не зайдёт.
Dell R710 ожидает в специализированном PCI-e слоте определённые VID и PID. PID сменится после прошивки и нужно будет его вернуть на приемлемый, иначе брендовый сервер не захочет стартовать.
Тут нам помогут две утилиты lsirec и скрипт на Python для конвертации sbr записей.
Всё это можно найти на странице https://github.com/marcan/lsirec
Качаем репозиторий, распаковываем, ставим компилятор, в Ubuntu это apt install build-essential. Компилируем lsirec: make -f Makefile . Ставим права на выполнение chmod 770 ./lsirec
Смотрим текущие VID «Dell [1028]» PID [1f1c] и запоминаем адрес устройства (например 0000:01:00.0).
lspci -Dmmnn | grep 2008
./lsirec 0000:01:00.0 readsbr sbr_backup.bin
python3 sbrtool.py parse sbr_backup.bin sbr.cfg
nano ./sbr.cfg
Меняем PID на 1f1e (PERC H200 Integrated)
Строка SubsysPID = 0x1f1e
Убираем строку SASAddr (мы адрес уже приписали)
python3 sbrtool.py build sbr.cfg sbr_new.bin
./lsirec 0000:01:00.0 writesbr sbr_new.bin
# ./lsirec 0000:01:00.0 reset
# ./lsirec 0000:01:00.0 rescan
Проверяем, что PID изменился на нужный
lspci -Dmmnn | grep 2008
Вставляем в сервер, подключаем SAS кабель — радуемся что видно все диски. Также говорят в что в IT режиме контроллер имеет более высокое ограничение на IOPs.
Ссылки:
https://github.com/marcan/lsirec
https://servomarket.ru/blog/polezno-znat/raid-lsi-9211-4i-8i-izmenenie-rezhima-raboty-na-it-mode/
https://github.com/marcan/lsirec
https://ikus-soft.com/en_CA/blog/techies-10/how-to-flash-an-lsi-sas2008-controller-for-zfs-62