Admins:MegaCli пример

Материал из Справочная система
Перейти к навигацииПерейти к поиску

Данная утилита от LSI так же позволяет оперировать рейд-контроллерами от Dell. Но замена дисков через такую утилиту – целый hardcore, только для настоящих Tru-админов )).

Тестовый стенд: контроллер PERC 6/i, RAID-1, Linux MegaCli64, выпал 1 диск.

Смотрим состояние RAID’a:

  1. /usr/local/bin/MegaCli -LDInfo -Lall -aALL | grep State

State : Degraded

Какой диск стал причиной этому:

  1. 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, пометить как “пропавший” и удалить:

общий вид команд:

  1. MegaCli -PDOffline -PhysDrv [E:S] -aN
  2. MegaCli -PDMarkMissing -PhysDrv [E:S] -aN
  3. MegaCli -PDPrpRmv -PhysDrv [E:S] -aN

в нашем случае это будет так:

  1. MegaCli -PDOffline -PhysDrv [32:1] -a0
  2. MegaCli -PDMarkMissing -PhysDrv [32:1] -a0
  3. MegaCli -PDPrpRmv -PhysDrv [32:1] -a0

Да! Но и это ещё не всё. Потом нужно задать команду замены диска (эту команду выполнить уже после замены диска).:

общий вид:

  1. MegaCli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN

в нашем случае это будет так:

  1. MegaCli -PdReplaceMissing -PhysDrv [32:1] -Array0 -row1 -a0

Если нужно подсветить диск (что бы было видно, какой нужно менять) делаем так (при этом диск будет непрерывно гореть зелёным светом):

  1. MegaCli -PdLocate -start -PhysDrv [32:1] -a0

Что бы прекратить:

  1. MegaCli -PdLocate -stop -PhysDrv [32:1] -a0

Но в моём случае мне повезло, так как в опциях рейда стояло autorebuild:

  1. MegaCli -adpallinfo -a0 | grep 'Auto Rebuild'

Auto Rebuild : Enabled

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

  1. MegaCli -PDRbld -ShowProg -PhysDrv [32:1] -a0

Rebuild Progress on Device at Enclosure 32, Slot 1 Completed 1% in 0 Minutes.

При этом Firmware state тоже в состоянии Rebuild:

  1. 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

и при попытке что-то с ним сделать получаем ошибку:

  1. MegaCli -CfgLdAdd -r0[80:17] -a0

The specified physical disk does not have the appropriate attributes to complete the requested command. Exit Code: 0x26

Обнаружить сколько дисков в такой конфигурации можно так:

  1. MegaCli -CfgForeign -Scan -a0

There are 1 foreign configuration(s) on controller 0. Exit Code: 0x00

Очистить “не родную” конфигурацию:

  1. 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’ом:

  1. MegaCli -PDMakeJBOD -PhysDrv[68:16] -a0

тогда делаем его просто RAID0:

  1. MegaCli -CfgLdAdd -r0[68:16] -a0


CopyBack state.

Это состояние диска, при котором информация переносится с hotspare диска на новый:

Enclosure Device ID: N/A Slot Number: 0 ... Firmware state: Copyback ...

Посмотреть, сколько осталось:

  1. 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:

  1. MegaCli -LDInfo -Lall -aALL | grep State

State : Degraded

Дальше, переводим в Online:

  1. MegaCli -PdReplaceMissing -PhysDrv[:0] -array0 -row0 -a0
  2. MegaCli -PDOnline -PhysDrv [:0] -a0
  3. MegaCli -LDInfo -Lall -aALL | grep State

State  : Optimal