Восстановление аппаратного RAID с помощью утилиты MegaCLI
Процесс замены вышедшего из строя физического диска на сервере с аппаратным RAID контроллером
Прежде всего определим тип RAID-контроллера. В данном примере будет рассмотрен вариант с LSI, для других типов будут отдельные статьи, когда под рукой окажется свободный котроллер другой модели.
# lspci | grep -i RAID
00:1f.2 RAID bus controller: Intel Corporation C600/X79 series chipset SATA RAID Controller (rev 06)
07:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)
После определения типа контроллера приступим к установке утилиты для работы с ним. (ПО обновляется, поэтому актуальную версию проверяйте на официальном сайте LSI.)
Adapter 0: Set Use Disk Activity For Locate to Enabled success.
Удаляем диск из RAID
# megacli -PdPrpRmv -PhysDrv [25:14] -a0
Prepare for removal Success
После этого выполняем процедуру физической замены диска(-ов).
В случае с новым диском, если он содержит метаданные от старого RAID массива, эти данные необходимо затереть.
Проверяем их наличие:
megacli -CfgForeign -Scan -a0
Если таковые имеются, то удаляем следующей их командой: (к счастью у меня такого добра не обнаружилось)
megacli -CfgForeign -Сlear -a0
Выполняем замену (нам потребуются значения параметров Array и Row из предыдущего пункта)
Данная утилита от LSI так же позволяет оперировать рейд-контроллерами от Dell. Но замена дисков через такую утилиту — целый hardcore, только для настоящих Tru-админов )). Тестовый стенд: контроллер PERC 6/i, RAID-1, Linux MegaCli64, выпал 1 диск.
Смотрим состояние RAID’a: # /usr/local/bin/MegaCli -LDInfo -Lall -aALL | grep State
State : Degraded
Какой диск стал причиной этому: # MegaCli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state"
Enclosure Device ID: 32
Slot Number: 0
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: FUJITSU MBC2073RC D506BV03P9605GU7
Enclosure Device ID: 32
Slot Number: 1
Media Error Count: 16655
Other Error Count: 15
Firmware state: Failed
Inquiry Data: SEAGATE ST973452SS 00076TA0EDKH
Enclosure Device ID: 32
Slot Number: 2
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST973451SS SM043PD1WB4Z
Enclosure Device ID: 32
Slot Number: 3
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST973451SS SM043PD1WBN7
Enclosure Device ID: 32
Slot Number: 4
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: SEAGATE ST973451SS SM043PD1T7EG
Enclosure Device ID: 32
Slot Number: 5
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: FUJITSU MBC2073RC D506BV03P9605GF0
Как видим, это диск [32:1]. Именно так к нему в дальнейшем нужно обращаться. Что бы заменить диск, нужно его перевести в offline, пометить как «пропавший» и удалить:
общий вид команд: # MegaCli -PDOffline -PhysDrv [E:S] -aN
# MegaCli -PDMarkMissing -PhysDrv [E:S] -aN
# MegaCli -PDPrpRmv -PhysDrv [E:S] -aN
в нашем случае это будет так: # MegaCli -PDOffline -PhysDrv [32:1] -a0
# MegaCli -PDMarkMissing -PhysDrv [32:1] -a0
# MegaCli -PDPrpRmv -PhysDrv [32:1] -a0
Да! Но и это ещё не всё. Потом нужно задать команду замены диска (эту команду выполнить уже после замены диска).:
общий вид: # MegaCli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN
в нашем случае это будет так: # MegaCli -PdReplaceMissing -PhysDrv [32:1] -Array0 -row1 -a0
Если нужно подсветить диск (что бы было видно, какой нужно менять)
делаем так (при этом диск будет непрерывно гореть зелёным светом): # MegaCli -PdLocate -start -PhysDrv [32:1] -a0
Что бы прекратить: # MegaCli -PdLocate -stop -PhysDrv [32:1] -a0
Но в моём случае мне повезло, так как в опциях рейда стояло autorebuild: # MegaCli -adpallinfo -a0 | grep 'Auto Rebuild'
Auto Rebuild : Enabled
и поэтому, после замены диска не пришлось выполнять команду замены диска — он сам начал процесс перестройки рейда: # MegaCli -PDRbld -ShowProg -PhysDrv [32:1] -a0
Rebuild Progress on Device at Enclosure 32, Slot 1 Completed 1% in 0 Minutes.
При этом Firmware state тоже в состоянии Rebuild: # MegaCli -PDInfo -PhysDrv [32:1] -a0 | grep 'Firmware state'
Firmware state: Rebuilding
Как заменить диск в массиве, если rebuild не начался автоматически (пример взят из http://wiki.hetzner.de)?
Статус нового диска должен быть «Unconfigured (good)«. Это можно проверить с помощью PDList. Если статус диска «Unconfigured (bad)«, то его надо сначала сделать пригодным для использования как показано ниже: root@rescue ~ # megacli -PDList -a0 | grep Firmware
Firmware state: Online, Spun Up
Device Firmware Level: CC45
Firmware state: Online, Spun Up
Device Firmware Level: CC45
Firmware state: Unconfigured(bad), Spun Up
Device Firmware Level: CC45
Firmware state: Online, Spun Up
Device Firmware Level: CC45 root@rescue ~ # megacli -PDMakeGood -PhysDrv [245:3] -a0
Ещё один момент. Иногда, после того, как вы перевели диск из bad в good, он может оказаться в «не родной» конфигурации: Foreign State: Foreign
и при попытке что-то с ним сделать получаем ошибку: # MegaCli -CfgLdAdd -r0[80:17] -a0
The specified physical disk does not have the appropriate attributes to complete
the requested command.
Exit Code: 0x26
Обнаружить сколько дисков в такой конфигурации можно так: # MegaCli -CfgForeign -Scan -a0
There are 1 foreign configuration(s) on controller 0.
Exit Code: 0x00
Очистить «не родную» конфигурацию: # MegaCli -CfgForeign -Clear -a0
Foreign configuration 0 is cleared on controller 0.
Exit Code: 0x00
Если диск «good«, то им можно заменить отсутствующий
диск. Для этого надо указать массив и позицию, где надо произвести
замену. Эти значения можно получить, например, из megacli -CfgDsply -a0. Если диск отсутствует в массиве, запись «Physical Disk:» будет показана, но без дополнительно информации. В следующем примере четвёртый диск первого массива (Array0) заменяется диком из Enclosure 245 Slot 3 («PhysDrv[245:3]«): root@rescue ~ # megacli -PdReplaceMissing -PhysDrv[245:3] -array0 -row4 -a0
Adapter: 0: Missing PD at Array 0, Row 4 is replaced.
Exit Code: 0x00
root@rescue ~ # megacli -PDRbld -Start -PhysDrv[245:3] -a0
Started rebuild progress on device(Encl-245 Slot-3)
Exit Code: 0x00
root@rescue ~ # megacli -PDRbld -ShowProg -PhysDrv [245:3] -aAll
Rebuild Progress on Device at Enclosure 245, Slot 3 Completed 1% in 0 Minutes.
А что если, у вас массив построен на JBOD дисках и нужно заменить диск в zpool’e? Тогда делаем так:
— после физической замены диска он становится: Firmware state: Unconfigured(good), Spun Up
Foreign State: None
Если не выходит его просто сделать JBOD’ом: # MegaCli -PDMakeJBOD -PhysDrv[68:16] -a0
тогда делаем его просто RAID0: # MegaCli -CfgLdAdd -r0[68:16] -a0
CopyBack state.
Это состояние диска, при котором информация переносится с hotspare диска на новый: Enclosure Device ID: N/A
Slot Number: 0
...
Firmware state: Copyback
...
Посмотреть, сколько осталось: # MegaCli -PDCpyBk -ShowProg -PhysDrv[:0] -a0
Copyback Progress on Device at Enclosure N/A, Slot 0 Completed 13% in 60 Minutes.
Exit Code: 0x00
По завершению, диск перейдёт в состояние Unconfigured(good), Spun Up. До тех пор RAID будет в состоянии Degrade: # MegaCli -LDInfo -Lall -aALL | grep State
State : Degraded
Дальше, переводим в Online: # MegaCli -PdReplaceMissing -PhysDrv[:0] -array0 -row0 -a0
# MegaCli -PDOnline -PhysDrv [:0] -a0
# MegaCli -LDInfo -Lall -aALL | grep State
State : Optimal
Комментариев нет:
Отправить комментарий