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