Рассмотрим процедуру обновления микрокода RAID контроллера Broadcom/LSI MegaRAID SAS 9361-8i (MegaRAID SAS-3 3108 "Invader"), работающего на аппаратной серверной платформе YADRO Vegman R120 с ОС VMware ESXi 8.0 U3. Хотя то, какая операционная система выполняется на сервере, в контексте процедуры обновления микрокода на самом деле не принципиально, так как обновление будет выполняться в офлайн режиме средствами UEFI Shell.
Определить текущую версию Firmware для RAID-контроллера можно по информации, выводимой в процессе загрузки сервера. В нашем примере здесь фигурирует версия 4.680.00-8274.

Однако стоит учесть, что в ходе загрузки сервера без включенной в BIOS поддержки Legacy ROM данное сообщение может не отображаться, и, как следствие, нет возможности войти в ROM утилиту для управления RAID контроллером с помощью сочетания клавиш "Ctrl" + "R". В этом случае при необходимости можно временно активировать режим поддержки Legacy ROM в BIOS CSM (Compatibility Support Module) в разделе "Advanced" > "SCM Configuration". В ходе экспериментов были перепробованы разные комбинации режимов ROM Execution и минимально необходимой и, при этом, не самой медленной, оказалась комбинация указанная на скриншоте:

Обратите внимание на то, что включение поддержки Legacy ROM может существенно увеличивать время загрузки системы (в зависимости от состава вашего оборудования), поэтому более оптимальным вариантом для сокращения времени загрузки может отказаться конфигурация, когда все опциональные ROM переведены в режим UEFI.
Ещё один вариант определить текущую версию Firmware для RAID-контроллера - войти в BIOS
в "Advanced" > "AVAGO MegaRAID" ... > "Main menu" > "Controller management"

Со стороны хостовой ОС, в случае, если используется VMware ESXi 8, также можем получить информацию о версии микрокода RAID-контроллера. Для этого сначала получим полное имя инстанса, связного с нашим контроллером (грепаем по имени драйвера):
[root@ESXi:~] /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -d | grep lsi
Key Value Instance: lsi_mr3-500605b010452130/LSI Incorporation
Получим информацию по инстансу по его имени с выборкой данных о версиях:
[root@ESXi:~] /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -l -i 'lsi_mr3-500605b010452130/LSI Incorporation' | grep -iE 'Name|Value'
Name: MR-DriverVersion
value: 7.728.02.00
Name: MR-HBAModel
value: MegaRAID 1000:5d:1000:9361
Name: MR-FWVersion
value: Pkg 24.21.0-0017 FW 4.680.00-82
Name: MR-ChipRevision
value: Chip Rev. C0
Name: MR-CtrlStatus
value: FwState c0000000
Как видим, в нашем случае используется пакет микрокода версии 24.21.0-0017 с Firmware 4.680.00-82
Идём на сайт сервисной службы YADRO и в разделе загрузок "Прошивки": Сервисный портал YADRO - Прошивки - Vegman R120. Ищем здесь последний пакет обновлений. На момент написания этой заметки это версия ADAPFW05082024 Update 2 (20.11.2024).

Скачаем архив ADAPFW05082024_upd2.zip и посмотрим, что у него внутри.
Во вложенном в архив файле ADAPFW05082024_upd2_list.txt находим нашу модель и видим что в пакете доступна версия прошивки "Broadcom - 9361-8i_24.21.0-0159_FW_IMAGE". Попробуем подробней узнать об этой версии и о истории предыдущих релизов.
Заглянем внутрь образа (например с помощью 7zip) ADAPFW05082024_upd2.img. В структуре файлов этого образа есть подкаталог, соответствующий модели нашего контроллера – "RAID_9361-8i".
В этом подкаталоге можно найти текстовый файл "24.21.0-0159_SAS_MR_FW_IMAGE_APP_4.680.00-8577.txt" с описанием истории внесённых изменений между релизами микрокода. Из этого файла становится понятно, что наша текущая версия пакета микрокода 24.21.0-0017 довольно старая и была выпущена где-то между релизами 24.21.0-0012 (MR 6.14) 2017 года и 24.21.0-0025 (MR 6.14 Point Release) 2018 года.
Перечень исправлений после этих релизов внушительный, поэтому будем обновлять наш контроллер.
Целевой версией будет пакет прошивки 24.21.0-0159 (MR 6.14 Point Release) с Firmware 4.680.00-8577 от 2022 года. Порядок прошивки изложен в файле "UEFI_update_guide.txt"
Монтируем образ ADAPFW05082024_upd2.img в качестве Virtual media в веб-интерфейсе BMC сервера.

Теперь нам потребуется загрузить сервер в UEFI Shell. Для этого в ходе загрузки сервера жмём "DEL" и попадаем в настройки BIOS. Здесь в предпоследнем разделе "Boot" меняем порядок загрузки таким образом, чтобы первым был пункт "UEFI: Built-in EFI Shell".
Обратите внимание ещё на один важный момент. Так как мы готовимся к процессу обновления микрокода контроллера через UEFI Shell, в упомянутом ранее разделе BIOS CSM (Compatibility Support Module) в настройках "Advanced" > "SCM Configuration" для категории "Storage" должен быть включен режим "UEFI". Если этого не сделать, то используемый в дальнейшем скрипт обновления будет выдавать ошибку обнаружения контроллера.

Выходим из BIOS с сохранением настроек ("F4"). При следующей загрузке сервера автоматически загрузится UEFI Shell, где нам сразу будет выведен список доступных устройств

В нашем случае примонтированный через BMC образ ассоциирован с первым пунктом (определяем это по по вхождению "USB"), поэтому для перехода к его файловой системе набираем команду "FS0:"
Далее, командой "dir" можем получить листинг файлов на устройстве. Если список файлов/каталогов большой может быть выведено несколько экранов. Для перемещения между экранами пользуемся клавишами "Page Up" / "Page Down". Здесь видим, что в структуре каталогов есть каталог с интересующей нас моделью контроллера.

Командой "cd RAID_9361-8i" перейдём в этот каталог и снова командой "dir" получим листинг файлов внутри каталога. В этом каталоге мы видим исполняемый скрипт upd_raid_9361-8i.nsh. Запустим этот скрипт, написав его имя и нажав "Enter".

Скрипт выведет таблицу обнаруженных контроллеров и предложит нажать любую клавишу для начала процесса обновления, либо "q" для завершения работы скрипта. Нажимаем "Enter".

Скрипт проведёт процесс обновления микрокода и задаст вопрос хотим ли мы обновить следующий контроллер. Так как контроллер у нас один, жмём "q" и скрипт завершает свою работу.

Если в вашем сервере несколько контроллеров MegaRAID разных моделей, то выполнять их обновление нужно отдельными этапами запуская по отдельности скрипты из соответствующих каталогов.
Последней командой "exit" выходим из оболочки UEFI Shell, перезагружаем систему, снова возвращаемся в BIOS и меняем обратно порядок загрузки так, чтобы первой стартовала хостовая ОС. И не забываем отмонтировать img образ с контроллера BMC.
Версию микрокода можно проверить уже в ходе следующей загрузки сервера…

… либо когда VMware успешно загружена переходим в консоль и проверяем версию микрокода
[root@ESXi:~] /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -l -i 'lsi_mr3-500605b010452130/LSI Incorporation' | grep -iE 'Name|Value'
Name: MR-DriverVersion
value: 7.728.02.00
Name: MR-HBAModel
value: MegaRAID 1000:5d:1000:9361
Name: MR-FWVersion
value: Pkg 24.21.0-0159 FW 4.680.00-85
Name: MR-ChipRevision
value: Chip Rev. C0
Name: MR-CtrlStatus
value: FwState c0000000
На этом процесс обновления микрокода RAID контроллера Broadcom/LSI MegaRAID SAS 9361-8i можно считать законченным.
Если по какой-то причине нет доступа к загрузке микрокода с сайта YADRO, то можно взять туже самую прошивку непосредственно с сайта Broadcom.
RSS - Записи
Добавить комментарий