Замена диска в MegaCli

Данная утилита от 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 3PhysDrv[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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *