Smartd und 3ware Raid

Vor kurzem bin ich über eine Kleinigkeit gestolpert, die mich auf meiner Linux-Arbeitsstation schon lange nervt, die ich bis jetzt aber nie behoben habe. Der PC ist mit einem 3ware Raid-Controller ausgestattet, der 2 mit RAID 1 Subsysteme (also insgesamt 4 Festplatten, von Samsung) verwaltet. Da die Platten in die Jahre kommen, dachte ich mir, dass ich mit Smart und dem smartd-Dämon doch mal den Zustand der Platten verifizieren könnte.

Ein Blick in die Dateien “/var/log/boot.msg” und “/var/log/messages” meines Opensuse 10.3-Linux Systems belehrt mich darüber,

1) dass auf meinem System der smartd-Dämon bereits vorhanden ist (Smart ist also vorinstalliert)

2) dass der Start von “smartd” bisher mit Fehlermeldungen abbrach.

Pkt. 1 wird durch einen Blick ins Paketmanagement bestätigt. Das Paket “smartmontools” liegt in der aktuellen Version vor. Die Ursache für das Versagen gem. Pkt. 2 ist das Raid-System, mit dem Smart ohne Zusatzbefehle nicht klarkommt. Für den 3ware-Controller müssen Zusatzoptionen verwendet werden. Nach Studieren der Man-Seiten probieren wir:

smartctl -a -d 3ware,0 -F samsung /dev/twa0

Dabei steht “-d 3ware,N” für die N-te Platte am Raidcontroller (gezählt wird ab 0!) und “/dev/twa0” für das Raiddevice. Die Option “-F samsung” berücksichtigt spezifische Samsung Vorgaben für die Platten, die sich in meinem Fall auch im Katalog von smartd befinden (s. smartctl -P show …. bzw. smartctl -P showall).

Um die richtigen Einstallungen für den smartd-Dämon im System für den nächsten Startup zu hinterlegen, füge ich der Datei “/etc/smartd.conf” folgende Zeilen hinzu:

/dev/twa0 -d 3ware,0 -a -F samsung
/dev/twa0 -d 3ware,1 -a -F samsung
/dev/twa0 -d 3ware,2 -a -F samsung
/dev/twa0 -d 3ware,3 -a -F samsung

Nun startet der Dämon korrekt (wie auch ein “rcsmartd restart” zeigt).

Bei nächster Gelegenheit (keine User, runlevel 1) führe ich dann mit Hilfe von smartctl dann auch einen ausführlichen Selbsttest der Platten durch. Gott sei Dank mit gutem Ergebnis. Hierzu lese man in den man-pages nach. Auf die Möglichkeit eines Kurztestes, z.B. mittels

smartctl -a -d 3ware,2 -F samsung /dev/twa0 -t short

sei hingewiesen. Die Ergebnisse kann man z.B. im 2 Minuten Takt mit

smartctl -a -d 3ware,2 -F samsung2 /dev/twa0 -l selftest

abfragen. Dabei erhält man im oberen Ausgabebereich auch Informationen dazu, wie weit der Test bereits vorangeschritten ist.

3 thoughts on “Smartd und 3ware Raid

  1. Hi,

    ich setze ebendfalls einen 3Ware Controller ein.
    Genauer gesagt den 9550SXU-4LP. Hat also 4 Ports.

    Da hängen 4 x 750 GB Platten von WD. Im Raid5 Verband, da ich Geschindigkeit + extreme Datensicherheit benötige.

    Da kommt mir dein Blog gerade recht.

    Das ganze ist ein Server, der wg. der Kühlung im Keller steht. Dort is Suse 10.3 drauf.
    Allerdings im minimalen Systemzustand.

    Smart hab ich derweilen schon nachinstalliert. LEider komme ich mit keinen Befehl auf den Controller. /dev/twa* hab ich schon garnicht.

    fdisk -l sagt mir
    Platte /dev/sdb: 1499.9 GByte, 1499977482240 Byte
    255 heads, 63 sectors/track, 182361 cylinders
    Units = Zylinder of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x00075187

    Gerät boot. Anfang Ende Blöcke Id System
    /dev/sdb1 1 182361 1464814701 83 Linux

    Aber selbst wenn ich deine Befehle mit sdb ersetze erfolgt nur eine Fehlerausgabe.

    Weißt du Rat?
    Muß noch etwas installiert werden? Linux selbst bringt ja einen 3Ware Treiber gleich mit. Ergo wurde auch dieser Installiert. Von 3Ware direkt hab ich noch nichts drauf

  2. Hallo Lord_icon,
    also für die 9000er Controller sollte /dev/twa0 der richtige Wert sein – falls dies der der einzige 3ware Controller im System ist.

    Achtung: Ein solches Device taucht bei fdisk gar nicht auf – es betrifft den Controller selbst und nicht die Plattenarrays.

    Falls das Device File nicht oder nicht mit den richtige major und minor numbers existiert, legt es smartctl es lt. man-page angeblich an. Ein normales SUSE hat aber bereits von Haus aus mehrere /dev/twa?-Files.

    Ich habe zur Sicherheit erstmal folgende Fragen:

    1) Gibt es noch mehr aktive Controller und Platten in deinem System ?

    2) Wenn das /dev/sdb Device das Ergebnis der raid5 Konfiguration aus 4 Platten zu je 750 GB ist, verstehe ich ich die Größe von nur 1.4 TB nicht. Das sollte größer sein (>~ 2TB). Oder ist /dev/sdb ein anderes Plattendevice als der Raidverbund ?

    3) Was sagt lsmod | grep 3w ?

    4) Was für Fehlermeldungen bringt smartctl -a -d 3ware,0 /dev/twa0 denn ?

    5) Welche Meldungen zeigt denn /var/log/messages zum evtl. versuchten Start von smartd ?

  3. Hier noch ein paar Zusatzinfos:

    Ich habe einen 9500S-4LP Controller und nutze ihn auch mit 4 Platten, die in 2 Raid_1 Arrays konfiguriert sind. Siehe nachfolgenden Auszug aus /var/log/boot.msg.

    <4>3ware 9000 Storage Controller device driver for Linux v2.26.02.009.
    <4>ACPI: PCI Interrupt Link [APC1] enabled at IRQ 16
    <6>ACPI: PCI Interrupt 0000:05:06.0[A] -> Link [APC1] -> GSI 16 (level, low) -> IRQ 16
    <6>scsi6 : 3ware 9000 Storage Controller
    <4>3w-9xxx: scsi6: Found a 3ware 9000 Storage Controller at 0xc400e000, IRQ: 16.
    <4>3w-9xxx: scsi6: Firmware FE9X 2.08.00.005, BIOS BE9X 2.03.01.052, Ports: 4.
    <5>scsi 6:0:0:0: Direct-Access AMCC 9500S-4LP DISK 2.08 PQ: 0 ANSI: 3
    <5>scsi 6:0:1:0: Direct-Access AMCC 9500S-4LP DISK 2.08 PQ: 0 ANSI: 3

    Wichtig ist, dass das richtige 3ware Modul geladen wird und dieses auch den Controller erkennt. Was erscheint da bei dir?

    Soweit ich mich erinnere, habe ich habe das von SuSE ausgelieferte Modul genommen. Wichtiger Hinweis:

    Eigentlich gibt es 2 solcher Module unter /lib/modules/DeinKernel/kernel/drivers/scsi :

    3w-9xxx.ko
    und
    3w-xxxx.ko

    lsmod sollte zeigen, dass das 3w-9xxx.ko aktiv ist.

    Falls das nicht der Fall ist: Probier, es mit modprobe zu laden. Geht das fehlerfrei, so sollten die Raid Arrays eigentlich korrekt unter fdisk erscheinen und du kannst dann deine Partitionen anlegen.

    Wenn du den Controller nicht schon beim Setup des Rechners sondern erst später eingebaut hast, musst du das richtige 3ware Modul in der initrd verankern, wenn es beim Booten geladen werden soll. Dies kannst du bei SuSE z.B. mit sysconfig-editor unter Yast tun:

    Siehe im sysconfig-editor den Punkt “System-> kernel->INITRD_MODULES”. Dort einfach 3w_9xxx ergänzen. Yast führt dann mkinitrd aus und beim nächsten Bootvorgang wird das Modul dann geladen.

Comments are closed.