Skip to main content

MegaCLI cheatsheet

Dieses CheatSheet soll beim Umgang mit LSI MegaRAID Controllern helfen. Das dazugehörige Tool ist leider recht umständlich zu bedienen.

MegaCLI ist verfügbar für Linux, DOS, Windows, Netware und Solaris. Man kann es von der LSI-Webseite herunterladen (suche nach MegaRAID SAS). Für Debian basierte Distributionen gibt es ein praktisches Repository

Dieses Notfall-Cheatsheet deckt nicht alles ab, sollte aber in den meisten Fällen ausreichend sein. Für eine komplette Übersicht einfach „megacli -h“ aufrufen oder in das PDF-Handbuch schauen:

Es gibt viele verschiedene Parameter für MegaCLI, einige davon sind immer gleich. Diese werden hier kurz beschrieben:

Adapter parameter -aN Der Parameter -aN (wobei N eine Nummer von 0 beginnend ist oder der String ALL) bestimmt die PERC5/i Adapter ID. Wenn man nur einen Controller hat, ist es kein Problem ALL zu verwenden anstelle der ID. Sicherer ist es wenn man bei Arbeiten am RAID immer die Adapter-ID mit angibt.

Physical drive parameter -PhysDrv [E:S] Für Kommandos, die mit einem oder mehreren physischen Laufwerken arbeiten, wird der Parameter -PhysDrv [E:S] verwendet. E ist dabei die „enclosure device ID“ in dem die Platte steck und S die Slotnummer (beginnend bei 0). Man kann die „enclosure device ID“ über das Kommando „megacli -EncInfo -aALL“ herausfinden. Die E:S Syntax wird auch verwendet um die Platten zu bestimmen, die in einem neuen RAID verwendet werden sollen.

Virtual drive parameter -Lx Der Parameter -Lx wird verwendet, um ein spezifisches virtuelles Laufwerk auszuwählen (x ist dabei eine Nummer beginnend bei 0 oder „ALL“).

Informationen

Controller Informationen

megacli -AdpAllInfo -aN
megacli -CfgDsply -aN
megacli -AdpEventLog -GetEvents -f events.log -aALL && cat events.log

Informationen über das Enclosure

megacli -EncInfo -aN

Information über virtuelle Laufwerke (+Raid-Level und Cache-Status)

megacli -LDInfo -Lall -aN
megacli -LDGetNum -aN

Informationen zu physischen Laufwerke

megacli -PDList -aN
megacli -PDInfo -PhysDrv [E:S] -aN
megacli -PDGetNum -aN

Physical Error Counters

megacli -PhyErrorCounters -aN

Infos zu den Controllerbatterien

megacli -AdpBbuCmd -aN
megacli -AdpBbuCmd -GetBbuStatus -aN
megacli -AdpBbuCmd -GetBbuCapacityInfo -aN

Controller management

aktiven Alarm abschalten

megacli -AdpSetProp AlarmSilence -aN

Alarm deaktivieren

megacli -AdpSetProp AlarmDsbl -aN

Alarm aktivieren

megacli -AdpSetProp AlarmEnbl -aN

Uhrzeit abfragen und setzen

MegaCli –AdpGetTime -aN
MegaCli –AdpSetTime yyyymmdd HH:mm:ss -aN

Battery backed unit (BBU) verwalten

Automatischen Learn-Cycle deaktivieren hierzu gibts ein kleines Script

#!/bin/sh
TMPFILE=$(mktemp -p /tmp bbu.relearn.off.XXXXXXXXXX) || exit 1
echo "autoLearnMode=1" > $TMPFILE # or =0 to enable the bbu relearn
megacli -AdpBbuCmd -SetBbuProperties -f$TMPFILE -aALL
rm -f $TMPFILE

aktuellen Status von Auto-Learn abfragen

megacli -AdpBbuCmd -GetBbuProperties -aALL | grep "Auto-Learn Mode:"

manuellen Cycle starten

megacli -AdpBbuCmd -BbuLearn -aALL

CacheCade (SSD-Caching) verwalten

aktuellen Status anzeigen

megacli -LDInfo -LALL -a1

CacheCade einem Array zuweisen

megacli -Cachecade -assign -L1 -a1

CacheCade von einem Array entfernen (deaktivieren)

megacli -Cachecade -remove -L1 -a1

Read Cache, Write Cache, ReadAhead und BBU

Read Cache aktivieren

megacli -LDSetProp -Cached -LAll -aAll

Festplatten Cache deaktivieren

megacli -LDSetProp DisDskCache -LAll -aAll

ReadAhead aktivieren

megacli -LDSetProp ADRA -LAall -aAll

Write Cache aktivieren Write Cache sollte nur aktiviert werden, wenn der Controller über eine BBU verfügt, sonst kann es zu schwerem Datenverlust kommen.

megacli -LDSetProp WB -LAll -aAll

Write Cache deaktivieren

megacli -LDSetProp NoCachedBadBBU -LAll -aAll

Statusabfrage

megacli -LDInfo -LAll -aAll

Physische Laufwerke verwalten

Laufwerk offline schalten

megacli -PDOffline -PhysDrv [E:S] -aN

Laufwerk online schalten

megacli -PDOnline -PhysDrv [E:S] -aN

Als vermisst markieren

megacli -PDMarkMissing -PhysDrv [E:S] -aN

zum Entfernen vorbereiten

megacli -PdPrpRmv -PhysDrv [E:S] -aN

fehlendes Laufwerk ersetzen

megacli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN

Die Zahl N des Array Parameters ist die Referenz auf SPAN, die man über den Befehl „megacli -CfgDsply -aALL“ erhält und der „row“ Parameter ist das physische Laufwerk in diesem Span oder Array beginnend mit der Ziffer 0 (es ist NICHT die Zahl des Slots des physischen Laufwerks!).

Rebuild-Vorgang starten

megacli -PDRbld -Start -PhysDrv [E:S] -aN
megacli -PDRbld -Stop -PhysDrv [E:S] -aN
megacli -PDRbld -ShowProg -PhysDrv [E:S] -aN

automatischen Rebuild verwalten

# aktuelle Einstellung anzeigen
megacli -AdpAutoRbld -Dsply -aN
# automatischen Rebuild aktivieren
megacli -AdpAutoRbld -Enbl -aN
# automatischen Rebuild deaktivieren
megacli -AdpAutoRbld -Dsbl -aN

Rebuild-Rate konfigurieren

# aktuelle Einstellungen anzeigen
megacli -AdpGetProp RebuildRate -aN
# Rebuild-Rate ändern (in Prozent)
megacli -AdpSetProp RebuildRate "rate in %" -aN
# Rebuild Status zeigen
megacli -PDRbld -ShowProg -PhysDrv [E:S] -aAll

ein fehlerhaftes Laufwerk als „OK“ (funktionierend) markieren

megacli -PDMakeGood -PhysDrv [E:S] -aN

Das ändert den Status des Laufwerks von „Unconfigured-Bad“ zu „Unconfigured-Good“.

Blinken der Laufwerks-LED ein-/ausschalten

megacli -PdLocate -start -Physdrv [E:S] -aN
megacli -PdLocate -stop -Physdrv [E:S] -aN

Hostspare definieren

# Globales Hotspare:
megacli -PDHSP -Set -PhysDrv [E:S] -aN
# Dediziertes Hotspare festlegen:
megacli -PDHSP -Set -Dedicated -ArrayN -PhysDrv [E:S] -aN

RAID konfigurieren

Hiermit wird ein logisches Laufwerk mit RAID 5 an einem MegaCLI Controller konfiguriert:

# Festplatten anzeigen
megacli -PDList -aN | grep -e '^Enclosure Device ID:' -e '^Slot Number:'
# RAID konfigurieren
megacli -CfgLdAdd -r5 [E:S],[E:S],[...] -aN
# Beispiel:
megacli -CfgLdAdd -r5 [0:0,0:1,0:2,0:3,0:4,0:5,0:6] -a0

Walkthrough: ein Laufwerk austauschen

Das Laufwerk offline schalten, sofern dies nicht bereits schon durch einen Fehler passiert ist

megacli -PDOffline -PhysDrv [E:S] -aN

Das Laufwerk als vermisst markieren

megacli -PDMarkMissing -PhysDrv [E:S] -aN

Laufwerk fürs Entfernen vorbereiten

megacli -PDPrpRmv -PhysDrv [E:S] -aN

Laufwerk ersetzen Wenn man Hot-Spare Laufwerke einsetzt wird das ersetzte (neue) Laufwerk zum neuen Hot-Spare Laufwerk:

megacli -PDHSP -Set -PhysDrv [E:S] -aN

Sollten keine Hot-Spares eingesetzt werden, muss man das neue Laufwerk dem virtuellen RAID hinzufügen und das Rebuilding manuell starten:

megacli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN
megacli -PDRbld -Start -PhysDrv [E:S] -aN

Sollten die neuen Disks nicht erkannt worden sein, kann man auch manuell danach scannen:

megacli -CfgForeign -Scan -aN
megacli -CfgForeign -Clear -aN