# Sonstiges

# 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](http://hwraid.le-vert.net/wiki/DebianPackages "http://hwraid.le-vert.net/wiki/DebianPackages")

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](http://www.lsi.com/files/docs/techdocs/storage_stand_prod/sas/mr_sas_sw_ug.pdf "http://www.lsi.com/files/docs/techdocs/storage_stand_prod/sas/mr_sas_sw_ug.pdf") 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**

<div id="bkmrk-megacli--adpallinfo-"><div>```
megacli -AdpAllInfo -aN
megacli -CfgDsply -aN
megacli -AdpEventLog -GetEvents -f events.log -aALL && cat events.log
```

</div></div>**Informationen über das Enclosure**

<div id="bkmrk-megacli--encinfo--an"><div>```
megacli -EncInfo -aN
```

</div></div>**Information über virtuelle Laufwerke** (+Raid-Level und Cache-Status)

<div id="bkmrk-megacli--ldinfo--lal"><div>```
megacli -LDInfo -Lall -aN
megacli -LDGetNum -aN
```

</div></div>**Informationen zu physischen Laufwerke**

<div id="bkmrk-megacli--pdlist--an-"><div>```
megacli -PDList -aN
megacli -PDInfo -PhysDrv [E:S] -aN
megacli -PDGetNum -aN
```

</div></div>**Physical Error Counters**

<div id="bkmrk-megacli--phyerrorcou"><div>```
megacli -PhyErrorCounters -aN
```

</div></div>**Infos zu den Controllerbatterien**

<div id="bkmrk-megacli--adpbbucmd--">```
megacli -AdpBbuCmd -aN
megacli -AdpBbuCmd -GetBbuStatus -aN
megacli -AdpBbuCmd -GetBbuCapacityInfo -aN
```

</div>#### Controller management

**aktiven Alarm abschalten**

<div id="bkmrk-megacli--adpsetprop-"><div>```
megacli -AdpSetProp AlarmSilence -aN
```

</div></div>**Alarm deaktivieren**

<div id="bkmrk-megacli--adpsetprop--0"><div>```
megacli -AdpSetProp AlarmDsbl -aN
```

</div></div>**Alarm aktivieren**

<div id="bkmrk-megacli--adpsetprop--1"><div>```
megacli -AdpSetProp AlarmEnbl -aN
```

</div></div>**Uhrzeit abfragen und setzen**

<div id="bkmrk-megacli-%E2%80%93adpgettime-">```
MegaCli –AdpGetTime -aN
MegaCli –AdpSetTime yyyymmdd HH:mm:ss -aN
```

</div>#### Battery backed unit (BBU) verwalten

**Automatischen Learn-Cycle deaktivieren** hierzu gibts ein kleines Script

<div id="bkmrk-%23%21%2Fbin%2Fsh-tmpfile%3D%24%28"><div>```
#!/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
```

</div></div>**aktuellen Status von Auto-Learn abfragen**

<div id="bkmrk-megacli--adpbbucmd---0"><div>```
megacli -AdpBbuCmd -GetBbuProperties -aALL | grep "Auto-Learn Mode:"
```

</div></div>**manuellen Cycle starten**

<div id="bkmrk-megacli--adpbbucmd---1">```
megacli -AdpBbuCmd -BbuLearn -aALL
```

</div>#### CacheCade (SSD-Caching) verwalten

**aktuellen Status anzeigen**

<div id="bkmrk-megacli--ldinfo--lal-0"><div>```
megacli -LDInfo -LALL -a1
```

</div></div>**CacheCade einem Array zuweisen**

<div id="bkmrk-megacli--cachecade--"><div>```
megacli -Cachecade -assign -L1 -a1
```

</div></div>**CacheCade von einem Array entfernen (deaktivieren)**

<div id="bkmrk-megacli--cachecade---0">```
megacli -Cachecade -remove -L1 -a1
```

</div>#### Read Cache, Write Cache, ReadAhead und BBU

**Read Cache aktivieren**

<div id="bkmrk-megacli--ldsetprop--"><div>```
megacli -LDSetProp -Cached -LAll -aAll
```

</div></div>**Festplatten Cache deaktivieren**

<div id="bkmrk-megacli--ldsetprop-d"><div>```
megacli -LDSetProp DisDskCache -LAll -aAll
```

</div></div>**ReadAhead aktivieren**

<div id="bkmrk-megacli--ldsetprop-a"><div>```
megacli -LDSetProp ADRA -LAall -aAll
```

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

<div id="bkmrk-megacli--ldsetprop-w"><div>```
megacli -LDSetProp WB -LAll -aAll
```

</div></div>**Write Cache deaktivieren**

<div id="bkmrk-megacli--ldsetprop-n"><div>```
megacli -LDSetProp NoCachedBadBBU -LAll -aAll
```

</div></div>**Statusabfrage**

<div id="bkmrk-megacli--ldinfo--lal-1">```
megacli -LDInfo -LAll -aAll
```

</div>#### Physische Laufwerke verwalten

**Laufwerk offline schalten**

<div id="bkmrk-megacli--pdoffline--"><div>```
megacli -PDOffline -PhysDrv [E:S] -aN
```

</div></div>**Laufwerk online schalten**

<div id="bkmrk-megacli--pdonline--p"><div>```
megacli -PDOnline -PhysDrv [E:S] -aN
```

</div></div>**Als vermisst markieren**

<div id="bkmrk-megacli--pdmarkmissi"><div>```
megacli -PDMarkMissing -PhysDrv [E:S] -aN
```

</div></div>**zum Entfernen vorbereiten**

<div id="bkmrk-megacli--pdprprmv--p"><div>```
megacli -PdPrpRmv -PhysDrv [E:S] -aN
```

</div></div>**fehlendes Laufwerk ersetzen**

<div id="bkmrk-megacli--pdreplacemi"><div>```
megacli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN
```

</div></div>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**

<div id="bkmrk-megacli--pdrbld--sta"><div>```
megacli -PDRbld -Start -PhysDrv [E:S] -aN
megacli -PDRbld -Stop -PhysDrv [E:S] -aN
megacli -PDRbld -ShowProg -PhysDrv [E:S] -aN
```

</div></div>**automatischen Rebuild verwalten**

<div id="bkmrk-%23-aktuelle-einstellu"><div>```
# aktuelle Einstellung anzeigen
megacli -AdpAutoRbld -Dsply -aN
# automatischen Rebuild aktivieren
megacli -AdpAutoRbld -Enbl -aN
# automatischen Rebuild deaktivieren
megacli -AdpAutoRbld -Dsbl -aN
```

</div></div>**Rebuild-Rate konfigurieren**

<div id="bkmrk-%23-aktuelle-einstellu-0"><div>```
# 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
```

</div></div>**ein fehlerhaftes Laufwerk als „OK“ (funktionierend) markieren**

<div id="bkmrk-megacli--pdmakegood-"><div>```
megacli -PDMakeGood -PhysDrv [E:S] -aN
```

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

**Blinken der Laufwerks-LED ein-/ausschalten**

<div id="bkmrk-megacli--pdlocate--s"><div>```
megacli -PdLocate -start -Physdrv [E:S] -aN
megacli -PdLocate -stop -Physdrv [E:S] -aN
```

</div></div>**Hostspare definieren**

<div id="bkmrk-%23-globales-hotspare%3A">```
# Globales Hotspare:
megacli -PDHSP -Set -PhysDrv [E:S] -aN
# Dediziertes Hotspare festlegen:
megacli -PDHSP -Set -Dedicated -ArrayN -PhysDrv [E:S] -aN
```

</div>#### RAID konfigurieren

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

<div id="bkmrk-%23-festplatten-anzeig">```
# 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
```

</div>#### Walkthrough: ein Laufwerk austauschen

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

<div id="bkmrk-megacli--pdoffline---0"><div>```
megacli -PDOffline -PhysDrv [E:S] -aN
```

</div></div>**Das Laufwerk als vermisst markieren**

<div id="bkmrk-megacli--pdmarkmissi-0"><div>```
megacli -PDMarkMissing -PhysDrv [E:S] -aN
```

</div></div>**Laufwerk fürs Entfernen vorbereiten**

<div id="bkmrk-megacli--pdprprmv--p-0"><div>```
megacli -PDPrpRmv -PhysDrv [E:S] -aN
```

</div></div>**Laufwerk ersetzen** Wenn man Hot-Spare Laufwerke einsetzt wird das ersetzte (neue) Laufwerk zum neuen Hot-Spare Laufwerk:

<div id="bkmrk-megacli--pdhsp--set-"><div>```
megacli -PDHSP -Set -PhysDrv [E:S] -aN
```

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

<div id="bkmrk-megacli--pdreplacemi-0"><div>```
megacli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN
megacli -PDRbld -Start -PhysDrv [E:S] -aN
```

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

<div id="bkmrk-megacli--cfgforeign-">```
megacli -CfgForeign -Scan -aN
megacli -CfgForeign -Clear -aN
```

</div>