Geschwindigkeitstest IOCrest PCIe SATA III Controller

Ich habe seit neuestem sechs Festplatten und ein CD/DVD-Laufwerk in meinem Desktop-Computer. Mein Mainboard (ASRock H67M-GE/HT) hat allerdings nur 3 SATA II Slots und 2 SATA III Slots. Meine beiden SSDs möchte ich natürlich via SATA III betreiben, bleibt also nur noch Platz für zwei Festplatten und das CD/DVD-Laufwerk.

Aus diesem Grunde musste ein weiterer SATA-Controller her, in diesem Fall ist nun eine PCIe-Karte (X1) von IOCrest (Modell SI-PEX40064) verbaut, die laut Beschreibung SATA III mit 6Gb/S bereitstellt.

Der Controller funktioniert wunderbar und auch unter Linux out of the box (die Unterstützung für Linux steht sogar auf dem Karton).
Falls mal jemand nach einem günstigen SATA-Controller sucht, kann ich diesen also durchaus empfehlen.

Nun mal zu den Daten:

Gemessen habe ich zwei Crucial M4 SSDs. Zuerst am SATA III Port meines Mainboards:

florian@wd:~$ sudo hdparm -tT --direct /dev/sdd
/dev/sdd:
Timing O_DIRECT cached reads: 618 MB in 2.01 seconds = 308.18 MB/sec
Timing O_DIRECT disk reads: 1152 MB in 3.01 seconds = 383.31 MB/sec

florian@wd:~$ sudo hdparm -tT --direct /dev/sdc
/dev/sdc:
Timing O_DIRECT cached reads: 614 MB in 2.00 seconds = 306.79 MB/sec
Timing O_DIRECT disk reads: 1158 MB in 3.00 seconds = 385.42 MB/sec

Und am Controller:

florian@wd:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 718 MB in 2.00 seconds = 358.90 MB/sec
Timing O_DIRECT disk reads: 1082 MB in 3.00 seconds = 360.60 MB/sec

florian@wd:~$ sudo hdparm -tT --direct /dev/sdb
/dev/sdb:
Timing O_DIRECT cached reads: 718 MB in 2.00 seconds = 358.74 MB/sec
Timing O_DIRECT disk reads: 1076 MB in 3.00 seconds = 358.59 MB/sec

Falls es wen interessiert hier noch die Werte eines Software-RAID 1 mit zwei WD Blue ATA WDC WD10EZEX-00U an besagtem Controller:

florian@wd:~$ sudo hdparm -tT --direct /dev/md1
/dev/md1:
 Timing O_DIRECT cached reads:   652 MB in  2.00 seconds = 325.69 MB/sec
 Timing O_DIRECT disk reads: 426 MB in  3.02 seconds = 141.25 MB/sec

ISPConfig 3: Adaptec RAID-Status im Monitoring anzeigen

ISPConfig hat eine praktische Funktion im Backend: Es zeigt wichtige Informationen über den Systemstatus an, so unter anderem auch den Status des Software- oder Hardware-RAIDs. Leider wird bisher nur mdraid (Software), mpt-status (LSI), sowie tw_cli (3ware) unterstützt, ich besitze allerdings einen Server mit einem Adaptec-RAID, welches mit dem Tool arcconf überwacht werden kann.

Den Status Quo fand ich also nicht so toll und fand auch keine fertigen Lösungen, die auf eine aktuelle Version (derzeit 3.0.5.4p5) von ISPConfig passen. Also erweiterte ich die Abfrage und stelle sie nun hier zur Verfügung.

Voraussetzung: die Datei arcconf muss auf dem Server im Verzeichnis /sbin vorhanden sein.

ISPConfig ist modular aufgebaut, die Abfrage des Systemstatus wird über die Datei monitor_core_module.inc.php im Ordner /usr/local/ispconfig/server/mods-available realisiert, diese fragt allerdings nur Daten aus den monitor_tools ab, welche sich in der Datei monitor_tools.inc.php im Ordner /usr/local/ispconfig/server/lib/classes befindet.

Hier findet sich auch die Funktion monitorRaid(), welche hier benötigt wird. Hier suchen wir folgende Zeile (am Anfang der Funktion):

/*
* Check, if Software-RAID is enabled
*/

Davor fügen wir nun die Abfrage von arcconf ein:

/*
* Check, if arcconf is present
*/
if (file_exists('/sbin/arcconf')) {
	/*
	* Fetch the output
	*/
	$data['output'] = shell_exec('arcconf GETCONFIG 1 LD');
	$state = 'ok';
	if(is_array($data['output'])) {
		foreach ($data['output'] as $item) {
			/*
			* The output contains information for every RAID and every HDD.
			* We only need the state of the RAID
			*/
			if (strpos($item, 'Logical device name                      : RAID') !== false) {
				/*
				* We found a raid, process the state of it
				*/
				if (strpos($item, 'Optimal') !== false) {
					$this->_setState($state, 'ok');
				} else {
					/* we don't know the state. so we set the state to critical, that the
					* admin is warned, that something is wrong
					*/
					$this->_setState($state, 'critical');
				}
			}					
		}
	}
}

Ich habe versucht, mich an die in der Datei vorhandenen Strukturen zu halten. Der Code prüft, ob die Datei /sbin/arcconf existiert. Wenn ja, führt es die Datei mit den Parametern GETCONFIG 1 LD aus, was uns die Info über den RAID-Controller zurück gibt.

Adaptec RAID: Ausgabe von arcconf wird im ISPConfig-Monitoring angezeigt
Adaptec RAID: Ausgabe von arcconf wird im ISPConfig-Monitoring angezeigt

Nun wird geprüft, ob der Controller ein RAID enthält und dann, ob der Status „Optimal“ ist. Wenn ja, wird $state als „ok“ zurück gegeben, wenn nein, als „critical“. Meine Ausgabe kennt bisher nur diese beiden Stadien, da ich leider bisher die anderen Outputs von arcconf nicht kenne (falls sie mir jemand nennen kann: bitte einen Kommentar hinterlassen). Mir reicht das bisher so, wenn das RAID nicht optimal ist, bekomme ich so eine kritische Warnung.

Fragen und Anregungen nehme ich natürlich immer gerne in den Kommentaren entgegen.