Serverloft - RAID Health überwachen

dogma-sam

New Member
Hallo Forum!

Wir haben uns - vom starken Angebot und den positiven Berichten geleitet - mal einen Serverloft PerfectServer L zugelegt, um zu testen und dann eventuell einige Kunden von Hetzner zu Serverloft zu holen. Sind auch bislang super zufrieden.

Allerdings habe ich ein Problem, das aber an eigener Blödheit liegt: wie kann ich den RAID Gesundheitszustand des Servers überwachen?

Bei Hetzner haben wir auf jedem Server so ein kleines Tool von 3ware laufen, dass Statusinformationen ausspuckt. Dieses 3ware Tool findet auf dem ServerLoft Server keinen Controller. Laut /var/log/dmesg wird ein 3ware Storage Controller geladen.

Die Frage ist also: welcher RAID Controller lebt in meinem PerfectServer L und mit welchem Kommandozeilentool für Debian kann ich seinen Status abfragen?

Vielen Dank für die Hilfe!
Steffen
 

dogma-sam

New Member
Ah, danke! Dazu finde ich auch was in der dmesg. Habe nun mpt-status installiert, aber das sagt nur

Code:
> mpt-status -p
Nothing found, contact the author

mpt-status scheint also auch die falsche Wahl zu sein - kennt ihr ein Tool, mit dem ich den Status des LSI Controllers abprüfen kann?

Vielen Dank,
Steffen
 
Last edited by a moderator:

dogma-sam

New Member
Hallo Whistler,

vielen Dank für den Link. Leider scheint sich das FSC Tool nicht unter Debian AMD64 installieren zu lassen. Wenn ich die Installation mit alien (da RPM) versuche, erhalte ich:

Code:
> alien -i ServerView_RAID-3.01-04.i386.rpm
[.......]
dpkg-gencontrol: error: current build architecture amd64 does not appear in package's list (i386)
dh_gencontrol: command returned error code 65280
make: *** [binary-arch] Error 1

Läuft das Tool bei dir unter Debian?

Grüße,
Steffen
 

CentY

Registered User
Du solltest vielleicht auch nen 64bit RPM auswählen wenn du ein 64bit Debian hast ;)
 

dogma-sam

New Member
Laut der Website war es das, eine andere Version für 64 Bit gab es nicht:

Code:
ServerView RAID Manager Installationspaket für Linux und VMware (32 und 64 Bit)
 

CentY

Registered User
ServerView_RAID-3.01-04.i386.rpm

Der Name sagt ja dass es nur für i386 ist und nicht für 64bit. Es spricht aber nicht für den Hersteller weder Sourcen noch echte 64bit Pakete anzubieten.
 

dogma-sam

New Member
Begeistert mich auch nicht gerade. Aber vielleicht unterstützt Fujitsu Siemens nur ausgewählte OS, für die ihre Server zertifiziert sind, wer weiß...

Es muss doch noch andere Tools geben, die den RAID Status auslesen können, oder was? Wie machen das denn andere Serverloft Kunden? Prüft Ihr das RAID anders?
 

dogma-sam

New Member
Danke für den Link, Whistler. Leider ist dort nur eine fette Java GUI Anwendung verlinkt, die das CLI Tool nicht beinhaltet.

Ich habe nun verschiedene RPMs für MegaCLI ausprobiert (da es sich um einen amd64 debian server handelt, mit alien geöffnet und binary rausgefischt):

Alle Versionen liefen zwar, aber keine der Versionen erkannte den Controller. Auf der LSI Seite kann ich ihn auch nicht in der unterstützten Controllerliste finden. Wo kriege ich eine passende Version von MegaCLI her? Oder mache ich irgendwas erheblich falsch?

Ihr anderen Serverlofter: wie macht ihr das?
 

beam

New Member
versuch mal
Code:
modprobe mptctl
mpt-status
oder lass es mpt-status machen mit

Code:
mpt-status --autoload
 

CryoGenID

New Member
Hallo!

Also wir haben uns auch etwas rumgeärgert dass das RAID nicht zentral überwacht wird und hier nach einigem hin- und her ein Scriptchen geschrieben mit dem wir den Status des RAIDs überwachen und dann
autom. auswerten lassen...
Bei uns läuft CentOS5 x64...

Code:
#!/bin/sh
# --------------------------------------
# The script above returns "BAD" if there is an error
# and "OK" if everything is OK
# Christian Fasold (cfasold-at-fasoft.de)
# Version: 1.0
# Date: 02.01.2009
		
OS=`uname`
case $OS in
  Linux)
                if /opt/MegaRAID/MegaCli/MegaCli64 -PdList -aALL | awk -f /opt/MegaRAID/MegaCli/analysis.awk | grep -qEv "*: Online|Hotspare"
                then
                  # Something is wrong with the Arrays (HDD failure, etc.)
                  echo "BAD"
                else
                  # Arrays are OK
                  echo "OK"
                fi;;
  *) echo 'unsupported OS';;
esac

Man kann sich ja auch im Falle eines Fehlers z.B. ne Mail schicken oder so...

Ich hoffe das hilft Euch weiter :)

Viele Grüße,

Chris
 

dogma-sam

New Member
Gelöst!

Hallo Forum!

Habe es jetzt geschafft! Unendliche Freude ;-) Vielen Dank an Firewire2002, der mir per PM den richtungsgebenden Tipp gegeben hat.

Für alle die es interessiert, hier was ich herausgefunden habe:

Habe in der /var/log/kern.log folgende Einträge gefunden, die belegen, dass das RAID Set den MPT Treiber (?) verwendet und dadurch die MegaCLI ausgeschlossen. Auszug aus kern.log:

Code:
Feb 16 10:49:42 titan kernel: mptbase: ioc0: Initiating bringup
Feb 16 14:10:20 titan kernel: mptctl: Registered with Fusion MPT base driver
Feb 16 14:10:20 titan kernel: mptctl: /dev/mptctl @ (major,minor=10,220)

mpt-status ist also das richtige Tool und mptctl scheint geladen zu sein. Nochmal mit lsmod | grep "mptctl" überprüfen:

Code:
mptctl                 32264  0
mptbase                64996  3 mptctl,mptsas,mptscsih
scsi_mod              170808  7 mptctl,mptsas,mptscsih,scsi_transport_sas,sd_mod,libata,3w_xxxx

Sieht auch gut aus. Neben dem mptctl Modul benötigt mpt-status noch den Device /dev/mptctl. Mit "l /dev/mptctl" prüfen, ob er da ist:

Code:
crw-rw---- 1 root root 10, 220 2009-02-16 14:10 /dev/mptctl

Trotzdem lief mpt-status nicht, das Set wurde einfach nicht gefunden. Kräftiges googeln lieferte einen eventuell passenden Bug, der in Version 1.2... von mpt-status behoben sein dürfte. Die Version in Etch Stable ist aber noch 1.1... Also nach einer aktuellen Version gesucht, die unter Etch läuft, und wie erwartet bei den Etch Backports gefunden (Debian -- Package Download Selection -- mpt-status_1.2.0-4~bpo.1_amd64.deb).

Diese Version lief auf anhieb. Ich bin seeehr zufrieden. Nochmal vielen Dank!

Ich schreibe in den nächsten Tagen ein kleines PHP Skript, dass den RAID Health Status überprüft und bei Problemen eine E-Mail verschickt. Werde das Skript hier posten wenn es fertig ist.

Grüße,
Steffen
 

dogma-sam

New Member
Hier das versprochene Kontrollskript. Einfach mit passenden Rechten in /etc/cron.hourly kopieren. PHP muss natürlich installiert sein, außerdem mpt-status. Hoffe, es hilft jemandem...

PHP:
#!/usr/bin/php -q
<?
	/**
	 * raidhealth.php - RAID Health monitoring script for LSI raid controllers that can be
	 * controlled via mpt-status.
	 * Checks the health of the raid set and sends an e-mail to the given address if something
	 * is wrong. If called in a configurable hour of the day, it will also send an e-mail if
	 * everything is okay so that you know the monitor is running.
	 *
	 * Prerequisites:
	 * - Installed mpt-status module. Beware: some controllers need a version >= 1.2.0, if your
	 *   distribution contains an older version by default, look for a backport.
	 * - mptctl kernel module. Can be loaded with mpt-status --autoload.
	 * - /dev/mptctl in place and ready.
	 * - a RAID set to be monitored in the right place
	 */
	 
	// Configuration //////////////////////////////////////////////////////////
	$cfg_scsi_id = 0; // The scsi id of the raid set, usually 0. Get it via 'mpt-status -p'
	$cfg_pinghour = 8; // The hour in which the okay-email is sent (0-23, set to -1 to disable)
	$cfg_email = "server@example.com"; // The e-mail address to send the e-mails to
	$cfg_emailfrom = "raid@example.com"; // The sender e-mail address 
	
	// Script /////////////////////////////////////////////////////////////////
	
	// Get the human readable status description and return code
	$cmd = "mpt-status -i ".escapeshellarg($cfg_scsi_id);
	exec($cmd, $humanoutput, $ret);
	$humanmsg = implode("\n", $humanoutput);
	
	// Get the hostname
	$hostname = exec("hostname");

	// Check the return value - if everything is okay, exit
	if ($ret == 0)
	{
		if ($cfg_pinghour >= 0 && date("G") == $cfg_pinghour)
			sendMail("RAID Health Status OK for $hostname", "Der Status des RAID Sets auf $hostname ist OK. Weiter so!\r\n\r\n$humanmsg");
		exit;
	}
	
	// If we are here, something is not okay. Simply send an e-mail with the human message.
	sendMail("RAID Health Warning for $hostname", "Der Status des RAID Sets auf $hostname ist nicht OK, bitte untersuchen.\r\n\r\n$humanmsg");
	
	// The E-Mail function ////////////////////////////////////////////////////
	
	function sendMail ($subject, $body)
	{
		global $cfg_email, $cfg_emailfrom;
		mail($cfg_email, $subject, $body, "From: $cfg_emailfrom");
	}
	
?>
 

wishmaster3001

New Member
Hallo,

danke fuer alle Infos und das Script.

Wenn ich das Script inner Shell aufrufe kommt ein

sh: /mpt-status: No such file or directory
sh: /hostname: No such file or directory

Eine Mail geht raus mit Inhalt:
Der Status des RAID Sets auf ist nicht OK, bitte untersuchen.

Was ich nicht verstehe ist bei manuellem Aufruf von mpt-status kommt alles korrekt rüber:

mpt-status
ioc0 vol_id 0 type IM, 2 phy, 231 GB, state OPTIMAL, flags ENABLED
ioc0 phy 1 scsi_id 8 ATA ST3250310AS A , 232 GB, state ONLINE, flags NONE
ioc0 phy 0 scsi_id 1 ATA ST3250310AS A , 232 GB, state ONLINE, flags NONE

Habt Ihr nen Tipp wo der Fehler liegt?

Gruß
Wish
 

dogma-sam

New Member
Servus!

Ich würde tippen, dass die beiden externen Programme mpt-status und hostname irgendwie nicht im Include Path liegen, wenn das Skript ausgeführt wird. Die Slashes vor den Programmnamen verwirren mich auch irgendwie.

Versuch doch mal, die vollen Pfade zu den Programmen in das Skript einzusetzen.

Viel Glück,
Steffen
 

wishmaster3001

New Member
Ahoi,

auch wenn es so ausschaut, wieder das gleiche Ergebnis :(
PHP:
    // Get the human readable status description and return code
    $cmd = "/usr/sbin/mpt-status -i ".escapeshellarg($cfg_scsi_id);
    exec($cmd, $humanoutput, $ret);
    $humanmsg = implode("\n", $humanoutput);

    // Get the hostname
    $hostname = exec("/bin/hostname");
Gruß
Wish
 
Last edited by a moderator:

dogma-sam

New Member
Okay... dann wirst du wohl den bösen safe_mode an haben, kann das sein? Der erlaubt nur das Ausführen von Programmen in bestimmten Verzeichnissen. Musst die Programme dann also wohl in deine erlaubten Verzeichnisse kopieren / verlinken. Oder, da Safe Mode für die CLI wenig Sinn macht, könntest du ihn auch einfach ausschalten.

Wenn es das auch nicht ist... weiß ich nicht weiter ;-)
 
Top