Хитро-рейд...

Mar 04, 2009 14:13

Хочу описать эротическое приключение, случившееся на днях. Чтобы не забыть и потом скинуть куда-нибудь в базу знаний.


Началось все с того, что мы купили сервер на платформе Intel SR1500 для одного проекта. Сервер формата 1U, модульный. Винты подключаются к материнской плате через объединительную плату -- так называемый BackPlate. Для этой материнки есть два варианта бэкплейта -- активный и пассивный. Активный отличается тем, что имеет встроенный SAS-контроллер на чипе LSI 1064E (Fusion-MPT). В теории активный бэкплейт поддерживает Raid и это указано как в документации на платформу, так и в даташите на чип.

Наше развлечение началось с того, что в конфигурационной утилите контроллера мы не нашли никаких упоминаний о рейде. Как будто его и нет вовсе... Зато есть соблазнительная опция "SW Raid" в разделе SAS-контроллера в биосе. Причем народ на форумах в один голос кричит, что это и есть включатель рейда LSI. Ну да, как же... Стоит только врубить его, как MPT-Bios сменяется на совсем другую утилиту -- Intel Embedded Raid.

Начинаю сверять версии биосов матери и контроллера, FRU/SDR и прочие микрокоды... Ситуацию усложняет то, что на сайте LSI не то, что прошивки нет, там даже вменяемой документации не найдешь -- ни на сам контроллер, ни на утилиту конфигурационную. Перебрав кучу обрывочных сведений, обнаружил интересную фишку: оказывается, в этот контроллер можно загружать разные прошивки с постфиксами -IT и -IR. У нас в биосе отображается IT (что значит Initiator/Target), а чтобы управлять массивами силами хардверного контроллера, нужен IR (Integrated Raid). Начинаю искать любые дрова с упоминанием LSI 1064E (Fusion-MPT), попутно узнаю о существовании LsiUtil -- утилиты, способной не только тонко настроить контроллер, но и собственно залить прошивку и биос. Она есть в составе Linux RescueCD. Гружусь с него, начинаю щупать контроллер -- все отзывается и распознается. Наконец нахожу архив с прошивками и пытаюсь какую-нибудь из них загрузить через LsiUtil -- ничего не выходит. Утилита вежливо предлагает пойти в лес: а именно -- в EFI-shell и сделать свои дела там. Благо, что в нашей матери есть эта странная ось, зашитая во флеш вместе с биосом.

В архиве (который, к слову, собран сотрудниками Intel) есть куча прошивок для самых разных контроллеров, применяющихся в платформах Intel, и несколько скриптов для обновления. Запускаю скрипт, который предназначен для нашего бекплейта. Он радостно затирает firmware и пытается записать новую, но благополучно обламывается. Несколько минут горюю, пытаюсь накатить фирмваре из под доса -- все бесполезно. Опять гружусь в EFI -- пытаюсь вручную записать прошивку в контроллер. Не смотря на идентичное название прошивки -- не пишет. Дескать не совпадает Dev ID... Что за?! Потом на дурачка вновь запускаю тот скрипт, который изначально превратил худо-бедно работающий контроллер в трупик и наблюдаю оптимистичное Firmawre download SUCCESFUL! А чуть позже -- BIOS download SUCCESFUL! Ухожу в ребут и с радостью вижу POST контроллера. Захожу и вижу, что версии прошивки и биоса свежие, но у прошивки опять постфикс -IT. Грязно ругаюсь...

Странно то, что в наборе базовых прошивок в наборе интела действительно есть IR-прошивка, но при обновлении официальным скриптом задействуется IT, которая не дает собирать рейд-массивы. Загадочно это, если учесть что на сайте интела про эту платформу написано вот чего:
SR1500ALSAS:
Активная объединительная панель SATA/SAS с технологией «горячей» замены и интегрированным контроллером SAS на 4 порта с поддержкой RAID 0, 1, 102


В итоге я совершенно случайно наткнулся на мануал к флешеру sasflash и узнал, как модифицировать прошивки под конкретные устройства. Иначе базовые прошивки не загружаются, ругаясь на отсутствие прицепленной NVDATA. Дальше подобрать нужные компоненты было делом техники:
Прошивка 106E[B1] версия IR: /Base_FW/106E/B1/6EI_R_L.fw
NVDATA на бэкплейт ASR1500SASBP: /Base_FW/datfiles/albp.dat

Далее надо прицепить NVDATA к прошивке:
sasflash -o -concat 6EI_R_L.fw albp.dat GoodFirmware.fw

И вуаля -- прошивка готова! Правда надо заменить дефолтный sasflash.efi на версию sasflash_efi_bios32_rel (в архиве есть..)

Дальше можно мучить контроллер:
sasflash -o -e 6 //стираем прошивку
sasflash -o -fwall GoodFirmware.fw //Заливаем хороооошую прошивку
sasflash -o -biosall mptsas.rom //Кладем правильный биос

В результате в биосе контроллера Fusion-MPT делается рейд 0, 1 или 0+1 уровня и под линуксом видится, как один SCSI-диск. Ура, хардверный рейд готов :)

Ссылки по теме:
Прошивки и SASFlash
Мануал на SASFlash
Previous post Next post
Up