LSI Hardware-RAID-Controller

Im Folgenden finden sich Befehle zum Arbeiten mit dem MegaCLI CommandLine-Tool von LSI um deren RAID-Controller zu konfigurieren. Die Informationen stammen sind eine Kopie der Hetzner-Homepage, welche hier zu finden ist und wurden leicht angepasst.

Den Status eines Hardware-RAID auslesen

Um den Status der LSI RAID-Controller auszulesen muss das Commandline-Tool megacli von LSI installiert sein.

Den Zustand des RAIDs erhält man mit folgenden Befehl (Zeige alle Logical Devices an allen Controllern):

MegaCli -LDInfo -Lall -Aall

Ausgabe Beispiel RAID-1:

Adapter 0 -- Virtual Drive Information:
Virtual Disk: 0 (Target Id: 0)
Name:
RAID Level: Primary-1, Secondary-0, RAID Level Qualifier-0
Size:697.560 GB
State: Optimal
Stripe Size: 64 KB
Number Of Drives:2
Span Depth:1
Default Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Enabled
Encryption Type: None

Exit Code: 0x00

Den Zustand der Festplatten erhält man mit folgenden Befehl:

MegaCli -PDList -Aall

Da dabei auch eine Menge unnützer Informationen herauskommt, empfiehlt es sich die Ausgabe zu filtern, z.B. mittels:

MegaCli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state"

Anlegen von ein Hardware-RAID

Bevor das Array angelegt werden kann, muß die bisherige Konfiguration eventuell gelöscht werden. Um nur die logischen Geräte zu löschen genügt ein CfgLdDel:

MegaCli -CfgLdDel -Lall -aAll

Um alles (inkl. z.B. Cache-Verhalten) zu löschen gibt es „Configuration Clear“:

MegaCli -CfgClr -aAll

Verwendbare Festplatten müssen im Zustand „Unconfigured (good)“ sein (siehe oben). Falls diese im Zustand „Unconfigured (bad)“ sind, kann man dies via:

MegaCli -PDMakeGood -PhysDrv[<Enclosure#>:<Slot#>] -a0

Syntax:

MegaCli -CfgLdAdd -r<RAID#> [E0:S0,E1:S1,...] [WT|WB] [NORA|RA] [Direct|Cached] -sz<Größe> [-sz<Größe>]

RAID-0, 1 oder 5 erstellen. Für „r1“ entsprechend „r0“ bzw. „r5“ einsetzen (HDDs an Enclosure 252, Port 0 und 1, WriteBack an, ReadCache auf adaptiv, Cache aktiv auch ohne BBU)

MegaCli -CfgLdAdd -r1 [252:0,252:1] WB RA Direct CachedBadBBU -a0

RAID-0, 1 oder 5 wie oben erstellen mit einer Größe von 20GB:

MegaCli -CfgLdAdd -r1 [252:0,252:1] WB RA Direct CachedBadBBU -sz10GB -a0

RAID-10 erstellen:

MegaCli -CfgSpanAdd -r10 -Array0[252:0,252:1] Array1[252:2,252:3] WB RA Direct CachedBadBBU -a0

Ein bestehendes Array (z.B. RAID5) erweitern

nachdem die zusätzliche HDD eingebaut ist, wird das gewünschte Volume entsprechend rekonfiguriert. Hier ein Beispiel für das Hinzufügen einer HDD zu einem bestehen RAID5:

MegaCli -LDRecon -Start -r5 -Add -PhysDrv[252:3] -L0 -a0

Festplatten als JBOD nutzen

Der LSI MegaRAID 9260 Controller beherrscht keinen JBOD-Modus, bei dem die Festplatten direkt durchgereicht werden. Es ist jedoch möglich, alle Festplatten als RAID-0 zu konfigurieren und so einzeln zu nutzen:

MegaCli -CfgEachDskRaid0 WB RA Direct CachedBadBBU -a0

Eine HDD als Hotspare setzen

Über das „Drives“-Menü eine unbenutzte („unconfigured good“) Festplatte auswählen und die Eigenschaften („Properties“) aufrufen. Dort kann die Festplatte entweder als dedizierte Hotspare für ein Array oder als Globale Hotspare für alle Arrays konfiguriert werden. Über das megacli Tool ist dies auch möglich

  • als globale Hotspare:
MegaCli -PDHSP -Set -PhysDrv[252:2] -a0
  • als dedizierte Hotspare für Array0:
MegaCli -PDHSP -Set -Dedicated -Array0 -PhysDrv[252:2] -a0

Hotspare Status entfernen:

MegaCli -PDHSP  -Rmv -PhysDrv[252:2] -a0

Ein Array als Bootlaufwerk setzen

Falls Array nicht bootfähig ist, kann man dies abfragen und auf ein logisches Device setzen:

MegaCli -AdpBootDrive -get -a0
    Adapter 0: No Virtual drive or Physical Drive is configured as boot drive.
    Exit Code: 0x00

MegaCli -AdpBootDrive -set -L0 -a0
    Boot Virtual Drive is set to #0 (target id #0) on Adapter 0
    Exit Code: 0x00

Die Konfiguration des Controllers sichern/wiederherstellen

Um die Konfiguration des Controller und aller Arrays zu sichern

MegaCli -CfgSave -f raidcfg.txt -a0

Um die Konfiguration des Controller wiederherzustellen

MegaCli -CfgRestore -f raidcfg.txt -a0

Ersetzen einer HDD im Array, wenn der Rebuild nicht automatisch startet

Eine neue Festplatte sollte im Zustand „Unconfigured (good)“ sein. Dies kann man mittels PDList überprüfen. Falls die Festplatte im Zustand „Unconfigured (bad)“ ist, muß diese erst wie folgt nutzbar gemacht werden:

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

MegaCli -PDMakeGood -PhysDrv [245:3] -a0

Wenn die Festplatte „good“ ist, kann diese nun die fehlende Festplatte ersetzen. Dazu muß sowohl das Array als auch die Position angegeben werden, welche ersetzt werden soll. Die Zahlen erhält man zum Beispiel aus der Ausgabe von megacli -CfgDsply -a0. Fehlt eine Festplatte in einem Array existiert ein Eintrag „Physical Disk:“, aber keine weiteren Informationen. Im Beispiel wird nun die 4. Festplatte des ersten Arrays (Array0) mit der Festplatte in Enclosure 245 Slot 3 („PhysDrv[245:3]“) ausgetauscht:

MegaCli -PdReplaceMissing -PhysDrv[245:3] -array0 -row4 -a0
    Adapter: 0: Missing PD at Array 0, Row 4 is replaced.
    Exit Code: 0x00

MegaCli -PDRbld -Start -PhysDrv[245:3] -a0
    Started rebuild progress on device(Encl-245 Slot-3)
    Exit Code: 0x00

MegaCli -PDRbld -ShowProg -PhysDrv [245:3] -aAll
    Rebuild Progress on Device at Enclosure 245, Slot 3 Completed 1% in 0 Minutes.

Die SMART Werte der Festplatten im RAID auslesen

Mittels smartmontolls kann direkt auf die physischen Festplatten hinter dem Controller zugegriffen werden, z.B. für die erste Festplatte. Dazu muß zunächst mit dem megacli Tool die Device Id ermittelt werden:

MegacCli -pdlist -a0| grep 'Device Id'
    Device Id: 4
    Device Id: 5

Diese kann man nun als Option nach „megaraid“ angeben, also z.B.

smartctl -d sat+megaraid,4 -a /dev/sda

Je nach Betriebssystem ist eine Aktualisierung der smartmontools oder des Kernels notwendig.

Nach Reboot RAID-Konfiguration leer

In seltenen Fällen kann es sein, dass nach dem ersten Anlegen eines RAID-Verbunds keine Konfiguration mehr gefunden wird, nachdem man den Server neu startet.

Um dieses Problem zu lösen, muss man die Konfiguration im Rescue System zweimal anlegen.

Beispiel für RAID-1:

Anlegen

MegaCli -CfgLdAdd -r1 [252:0,252:1] WB RA Direct CachedBadBBU -a0

Löschen (in dem Fall Alles)

MegaCli -CfgLdDel -Lall -aAll

Erneut Anlegen

MegaCli -CfgLdAdd -r1 [252:0,252:1] WB RA Direct CachedBadBBU -a0

Schreibe einen Kommentar