Восстановление прошивки RAID-контроллеров LSI

Доброго времени суток, хабравчане!

Я хочу рассказать вам о том, как я восстанавливал прошивку RAID-контроллера LSI MegaRAID после неудачного обновления.
Когда эта беда случилась со мной, то информации об этом я практически не нашел, хотя, допускаю, что плохо гуглил.

Анамнез


В своей работе я уже достаточно давно использую серверы Supermicro, так как у них есть большой выбор платформ, достаточно демократичная цена и приличная надежность.

Зачастую, особенно в случае с 1U серверами я беру их уже с интегрированным контроллером LSI MegaRAID.

Но проблема с ними заключается в том, что сама Supermicro не очень охотно выкладывает прошивки для встроенных контроллеров, так что я их обычно прошиваю актуальной прошивкой (масло масляное, да) от аналогичного контроллера LSI. Проблем не возникало до этих пор.

Недавно привезли несколько серверов с контроллерами LSI 2208 на борту и достаточно старой прошивкой.
Т.к. дискретные контроллеры на этих чипах я тоже активно использую, то особо не сомневаясь загрузился с флешки с Linux-ом, запустил привычное:
./MegaCli64 -AdpFwFlash -f mr2208.rom -a0
и пошел заниматься дальше своими делами.

Когда я в следующий раз обратил взор на терминал сервера, то увидел ту же самую картину, что и была — «Flashing firmware...» и никакого результата. Беда, подумал Штирлиц.

Вход на сервер по SSH не удавался, посмотрев на VGA-консоль увидел сообщения что корневая ФС перешла в режим Read Only и вообще всё очень плохо, а в любой момент будет еще хуже.

Делаю Reset и вижу такую картину:

image

Да, беда. Поиски в интернетах не привели к какому-либо результату. Судя по всему, проблема достаточно редкая.

Лечение


Я попробовал загрузиться с флэшки и прошить контроллер заново, но ни под DOS, ни под Linux утилита MegaCli его уже не определяла вообще. Прошивать, соответственно, тоже отказывалась.

Так что я обратился в саппорт LSI, где добрый человек с индусским именем указал мне на документацию к MegaRAID, а именно на страницу 305, где есть такой достаточно незаметный подраздел, который толком не объясняет зачем же делать то, что в нем написано:

image

Ага, подумали партизаны, наверное это прошивка в режиме восстановления, и взялись за дело.

Под Windows флэшку с FreeDOS сделать проще всего используя утилиту Rufus, буквально в один клик.
Под Linux сделать аналогичное можно подручными средствами (используя syslinux или GRUB), на эту тему есть много статей.

Заливаем на нее MegaCli.exe и найденную на просторах ftp.supermicro.com прошивку.

Грузимся, запускаем:
MegaCli.exe -AdpM0Flash -f smc2208.rom

Обращаю внимание, что указывать адаптер (опция -a) не нужно, судя по всему он прошивает все какие найдёт, либо первый попавшийся на PCI шине.

Дело пошло:

image

Прошивка в этом режиме занимает достаточно долгое время, около 15 минут, так что наберитесь терпения.

Когда он закончит — выключаем сервер по питанию, включаем его обратно и ждем чуда.
Но вместо чуда видим мы такую вот безрадостную картину:

image

Гугление по такой ошибке приводит к единственной ссылке на блог нашего соотечественника, где он на чистом английском советует отключить от контроллера BBU, вынуть контроллер из сервера и потом поставить обратно.

В моем случае вынуть карту из сервера можно только лобзиком, BBU у меня нет, так что не вариант.
Пробую прошить стандартным способом, MegaCli обнаруживает контроллер, но говорит то же самое, мол F/W is in fault state, так что ничего делать не буду.

Обращаемся опять в саппорт, который разводит руками и советует попробовать LSI Pre-Boot USB and CD tool, а если он не поможет, то сдавать железо назад.

Ок, качаем ISO, подключаем его через IPMI к серверу и грузимся.
Выбираем в меню загрузки пункт recovmr, затем нам предлагают написать в командной строке recover и наступит счастье. Но не наступило.
BAT-файл не может найти подключенный диск D:, видимо драйвер CDROM в FreeDOS на этом образе LSI не дружит с виртуальным приводом IPMI.

Хорошо, заглядываем в BAT файл и смотрим, что же он там собирался делать:
MegaCli.exe -AdpFwFlash -f D:\FW\RECOVER\TB_16MB.ROM -aALL

Открываем ISO, ищем этот загадочный файл и видим, что он размером аж 16 мегабайт (да, мы уже догадывались из названия), что вдвое больше стандартной прошивки. Видимо, этот образ ROM полностью переписывает микросхему Flash на контроллере.

Пытаемся прошить его так же, как это собирался делать BAT-ник, но получаем знакомое: F/W is in fault state
Да, так себе Recovery-образ подготовила нам LSI.
Ладно, используем наш предыдущий опыт и пытаемся прошить этот файл через Mode0.

На этот раз прошивка заняла минут 30, так как файл вдвое больше обычного. После прошивки обесточиваем сервер, включаем его обратно и видим заветный экран:

image

Салют, шампанское, сервер спасён!

Но этот живительный образ содержит не самую свежую версию прошивки, так что я с легким сердцем опять загрузился с FreeDOS-флешки и пошел прошивать его свежей прошивкой от Supermicro… и опять получил зависание на той же стадии, как в самом начале:
image

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

Методом проб и ошибок было выяснено, что после прошивки образа восстановления нужно сделать сброс к заводским настройкам:
MegaCli.exe -AdpFacDefSet -a0

и выключить-включить сервер.

После этого прошивается уже без зависания, и мы видим свежую версию прошивки:
image

Всё, на этот раз получилась 100% победа над непокорным железом!

Выписка


Мораль сей басни такова: если не хочется потратить пару дней на восстановление или еще больше на возврат оборудования, то лучше все-таки прошиваться предназначенными производителем железа прошивками (если он их выкладывает, у того же Supermicro я ее нашел только копаясь в дебрях FTP — на странице сервера или материнской платы ссылок нет), либо ничего не трогать и жить с той, которая уже есть.
Хотя я не уверен что проблема была вызвана именно «инородной» прошивкой, а не каким-то случайным глюком, но проверять это еще раз мне не хочется.

Бывают и такие случаи, когда прошивка просто по какой-то причине портится (выключили электричество во время прошивки или еще какой гамма-всплеск случился в ближнем космосе), и тогда придётся прибегнуть к аварийному восстановлению.

Надеюсь, что эта статья поможет тем, кто наткнётся на похожую проблему в будущем.
Поделиться публикацией

Похожие публикации

Комментарии 36
    +6
    Мой начальник большой противник обновлений ради обновлений и считает, что ставить апдейты нужно только в том случае, если есть конкретная проблема, которую они решают. Я с ним не согласен, но иной раз почитаешь подобные посты и понимаешь, что он таки во многом прав.
      +4
      Да, тут ситуация двоякая.

      Просто LSI, в отличии от многих других компаний, предоставляет достаточно подробные Changelog-и, где можно четко увидеть что было исправлено в очередной версии прошивки. И местами там такое встречается, что может в определенных обстоятельствах привести к потере данных. Так что я стараюсь себя обезопасить заранее купировав возможные проблемы.

      Судя по моей практике ситуации подобные этой встречаются крайне редко и, как видно, решаются достаточно просто, если знаешь что делать :)

      Те же BIOS-ы в материнках Supermicro можно аналогично восстановить после неудачного обновления используя простую флешку в FAT, файлом биоса на ней под именем SUPER.ROM и зажатых клавиш Ctrl+Home при запуске сервера. Мне пока делать этого не приходилось, но на заметке держу…

      Так что я голосую за обновление, если есть возможность и особенно если есть список изменений.
        +3
        Ровно так же бывает грустно узнавать, что тот data corruption или странный глюк был пофикшен год назад и были все возможности на него не налетать.

        Тот же PCI DSS, например, требует использования последних версий.
          0
          Ну так это попадает под определение «ставить апдейты нужно только в том случае, если есть конкретная проблема, которую они решают». Если в в changelog есть описание, что исправлен раз в год встречающийся глюк с потерей данных — определённо стоит прошиться, а не ждать проблемы.
            0
            Опять таки — это если changelog доступен, что бывает совсем не всегда, особенно с биосами и прошивками.
            В опенсурсе с этим всё попроще, можно просто посмотреть коммиты в GIT :) и решить — ставить или нет — обычно просто.

            Так что если ченджлога нет — я обычно обновляю, за 10 лет работы еще не пожалел об этом.
              0
              Тут софт то обычный обновишь и можно потом плеваться. Я вот сижу всё ещё на Skype 5.10, потому что в более поздних отобрали возможность менять местами комбинации Ctrl+Enter и просто «Enter». Мелочь, а дико бесит. Так что в случае со всякими биосами раз 10 подумаю и почитаю кучу отзывов, прежде чем обновить.
              0
              «Раз в год» в чейнжлоге не напишут, а баги фиксят в каждой версии обычно. И в описании бага чаще всего описание бага, а не драматичных последствий.
                0
                «Исправлен баг с потерей данных на SATA-дисках» (условно) например — отсюда не видна драматичность последствий?) Ну ок. Но, если не придираться к формулировкам, мы ведь поняли друг друга, правда?
            +1
            IBM рекомендует обновлять прошивки раз в полгода, периодически выпуская наборы с проверенными версиями.
            Best Practices:
            — Install the UXSP for your system unless you need the latest driver or firmware not contained in that package to provide support for new hardware or to fix a specific problem you’re encountering. In this case start from the baseline of the UXSP then supplement it with any individual code updates.
            — Quarterly updates are recommended for dynamic environments and those using new hardware or operating systems.
            Semiannual updates are recommended for most customer environments.
            — Annual updates should be adequate for static environments using mature technology.
              +1
              Особенно когда в оповещении от HP или кого еще от серьезных брендов читаешь, что «рекомендуем срочно обновить прошивку, чтобы не отгрести редкой и маловероятной ситуации потери данных, здоровья и вообще в результате бага прошивки контроллера, который вообще никогда не сработает». Читаешь и думаешь, что глупее — ставить в план работу, про которую написано, что она важна, но борется с чем-то, чего не бывает, или не делать ничего, а, как петух клюнет, оправдываться, что ты, хоть и знал, был введен в заблуждение авторами оповещения.
                0
                Я обычно всегда накатываю последние обновления на стадии подготовки сервера, а вот на боевых серверах, особенно высоконагруженных, стараюсь не ставить апдейты без необходимости, обусловленной Critical оповещениями вендора.
              0
              Сталкивался с похожей проблемой, но в моём случае мне никто не помог — пришлось менять материнку. Автор, респект за терпение, это очень знакомая ситуация.
                0
                В данном случае я и сам уже собирался забить на это дело т.к. контроллер там не особо то и нужен на данном этапе, да и времени убил почти целый день.

                Но из принципа захотелось его побороть :)
                0
                А мы арендуем железо, и если что-то такого рода случается, то замена гарантирована.
                  +2
                  Может я старомоден, но люблю когда под боком своя серверная и своё железо.

                  Если бы это были какие-то высоконагруженные веб-проекты, то, наверное, тоже бы арендовал.
                  А так это просто компания средних размеров и почти весь ИТ (кроме хостинга сайтов) варится внутри.
                  0
                  Большое спасибо за то, что поделились опытом! Чувствую себя уже смелее!
                    0
                    Не за что. Времена, когда надо было микросхему биоса выпаивать, судя по всему, уже прошли :)
                    +1
                    Дано: массив среднего уровня, производства весьма уважаемого вендора, стоимостью в несколько сот тысяч баксов.

                    ВНЕЗАПНО, как водится по закону Мёрфи, в выходной день, в 4 часа утра, массив совершает на**новение. после на**новения, несмотря на два контроллера и отсутствие пресловутой единой точки отказа (хотя пи**ёж, конечно), назад не поднимается.
                    к чести уважаемого вендора, сервисный инженер приехал быстро-быстро. осмотрел поле битвы, и говорит:

                    а! эту прошивку я знаю! она содержит баг — после 290 дней аптайма массив самопроизвольно перезагружается!

                    занавес.

                    (за кулисами происходит стон и вой, 6 Тб саповских баз, ушедших по п****, медленно и печально читаются с плёнки).

                    такие дела.

                    (с) ЖЖ oldman.

                    P.S. в комментах тоже много интересного
                      0
                      Я подумал, что это мой бывший коллега, ибо когда-то ко мне тоже приезжал инженер и говорил 1-в-1 эти слова:).
                      Вендор, наверное, E*C, а железка V*X**** ?:)
                      У нас правда все завершилось успешно — без даунтайма — по одному контроллеру.
                        0
                        P.S. там проблема не просто в перезагрузке, а в деградации ПО управления.
                        Кстати, ни за что не поверите, какая ОС стоит на сервис процессоре:)
                          0
                          Ну если уже «не поверите», то точно Windows XP :)
                            0
                            Почему же только Windows, да ещё такая свежая как XP?) На одном известном мне заводе часть техпроцесса всё ещё крутится под DOS… ну по крайней мере, так было 3-4 года назад.
                              0
                              Ну, завод это еще нормально, у меня отец в ВТБ24 работает, там до сих пор очень большая часть бановского софта под DOS-ом крутится, еще на FoxPro или чем-то подобном писанного.
                                0
                                У меня друг-админ на предущей работе (несколько государственных детски поликлиники и больниц, общая организация обслуживания у них) использовал DosBox, ибо часть софта под DOS. В том числе для оборудования какого-то.

                                Так что много где как… Так что в WinXP легко поверить, даже в Dos) А вот появлению какого-нибудь KolibriOS — удивило бы только так!
                              0
                              Она:), только что-то из рода embedded.
                          0
                          Второй раз за месяц, почти дочита все комменты, уже собираюсь дать ссылку на Господина Инженера, как натыкаюсь на неё…
                            0
                            Недавно у нас был случай-дисковый массив был сконфигурирован как H/W RAID5 и поверх S/W RAID1. Контроллеров тоже было два. В один прекрасный день массив отвалился. Сиали смотреть-перестали определятся больше половины дисков из массива! Еле-еле восстановил.

                            А в вашем случае странно что обычный перезагруз привел к потере данных. Ну перебутился и ладно…
                            0
                            Шедеврально, поклон вам от наших инженеров Дата Центра, сколько раз бывали подобные проблемы, что чинились по неделе :)
                              0
                              у меня в прошлом году умерло 4 LSI контролера, в разных серваках(железо 2006-2008 годов).
                              Симптомы одинаковы — ругается PCI шина, диски моргают как гирлянда. В эвентах пусто.
                              В одном — умер кеш. Вылечилось снятием и установкой планки на место.
                              Заморачиваться не стал, купил новое железо.

                              Но это лучшие контролеры того времени. У меня буквально на днях умер E200 (hp) — я ругался чёрным матом на его создателей, ибо за 3 дня БАНАЛЬНО я не смог заменить диск в RAID5. Он даже ОСи не даёт грузить с LiveCD, если нет 1 диска в системе. Горите в аду!
                                0
                                Да, лет 5-7 назад я покупал Адаптеки, но с ними у меня как-то не сложилось.

                                Один из контроллеров (52445, огромный такой, на 28 портов, бешеных денег стоил) у меня первые пару лет работы периодически глючил — то сам контроллер в резет уходит, то винты с него отваливаются с большим кол-вом I/O ошибок, хотя они здоровые (это решилось обновлением прошивки самих винтов, хотя с другими контроллерами они не глючили), то еще какая-то напасть. Он до сих пор трудится и после крайнего обновления прошивки вроде как успокоился глючить и работает ровно :)

                                А про Smart Array вообще лучше говорить не буду, один тот факт, что для настройки контроллера и создания массивов (кроме самых простых режимов) — то нужно загрузиться с HP Smart Start, нормальный BIOS компания HP не осилила.
                                  0
                                  меня до сих пор трясёт, как вспомню что нельзя посмотреть прогресс ребилда, и почему ребилд прекращается и встаёт read only
                                  А ещё забавнее, когда при загрузке со smart диска смотришь прогресс ребилда массива он СБРАСЫВАЕТ ребилд на 0%. Ну кому в голову мог придти такой бред??? Никогда больше не куплю HP
                                0
                                Все же по моему это косяк именно производителя, потому что железо должно иметь 100% защиту от того что прошивка не приведет его в неработоспособное состояние. В этом же случае прошивка заливается а железо не стартует.
                                особенно порадовала опция -а которая обновляет все контроллеры, которые найдет…
                                  0
                                  Конечно, производитель должен был обеспечить нормальный образ восстановления, загрузившись с которого и нажав одну кнопку я бы получил работающий контроллер.

                                  И у них это почти получилось :) Непонятно только зачем образ восстановления пытается шить в обычном режиме, а не в Mode0, ну и косяк с виртуальным приводом CDROM, который во всех остальных местах работает ОК.

                                  Опция -a указывает какие контроллеры шить, например -a0,1 или -aALL, а вот уже в режиме восстановления (Mode0) этой опции вообще нет.
                                  0
                                  На самом деле LSI PreBoot USB вещь очень удобная но, к сожалению, недооцененная среди конечных пользователей. Дело в том, что для Recovery контроллеров в этот образ вмонитрованы заводские прошивки, объем которых в 2 раза больше тех, что выложены на официальном сайте. Это позволяет в ряде случаев оживить flash контроллера, загубленный некорректной fw. На моей памяти есть случай, когда пользователь умудрился в Nytro MegaRAID вогнать прошивку от обычного контроллера. Защиты «от дурака» в Firmware на тот момент не было, в итоге Nytro был выведен из строя. Preboot USB тогда очень здорово помог. Ну и пару HBA’шек, коряво прошитых, тоже удалось оживить. Так что для админа Preboot USB – из категории «must have».
                                    0
                                    Имею в наличии LSI 9240i — год назад после обновлений случилась трагедия и контроллер перестал инициализироватья как раз после обновления прошивки(как щас помню из за плясок с mfi.ko модулем для ядра FreeBSD 8.0), пол года общения с поддержкой привели к совету купить у них же новый контроллер, а то что дело произошло после обнов их не смутило ни капли. И уже почти смирился я с утратой столь ценного мне девайса, как он инициализировался на одной из старых материнок, и я подумал что это чудо чудесное, сразу же откатил обнову и все стало работать как и прежде. Ну как «сразу же», там глюк был веселый, практически на всех материнках не выделялась память для контроллера, глюки с адресацией вобщем, пока выяснил что же заставило её инициализироваться, времени потратилось прилично.
                                    Дак вот к чему я это, поддержка у них унылая, от слова совсем.
                                      0
                                      на всех материнках не выделялась память для контроллера

                                      А какой параметр в биосе отвечает за это? Я тоже не удачно обновился на после дню версию прошивки контроллера.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое