Donnerstag Juli 21, 2005

Linux, Firewire, SATA oder warum ich mit Linux manchmal die Krise bekomme

Nun... Es war einmal ein Rechner, da war ein Firewire-Controller Adaptec FireConnect 8300 eingebaut. Dieser läuft auch recht gut. An diesen hingen 3 x 1 TByte LaCie Bigger Disk Extreme und 2 x 1,6 TByte LaCie Bigger Disk Extreme Platten. Mal davon abgesehen, das diese Platten recht anfällig für Ausfälle sind (man kann dazu auch gerne mal in der Linux Firewire Mailingliste mehr nachlesen), hatte ich mit den 1,6 TB Platten immer nur Probleme unter Linux (egal mit welcher Kernelversion). Ein Problem äußerte sich z.B. darin, das man für ein paar Sekunden Daten ganz normal auf die Platte geschrieben wurden, aber dann plötzlich die Platte "mit sich selbst" beschäftigt war. Das konnte man mit iostat sehen. Dort lag die Auslastung (%util) plötzlich bei 100% und bei top unter wa sah man ebenfalls 100%. Nach ein paar weiteren Sekunden schrieb die Platte dann wieder und das Ganze ging dann wieder von Vorne los. Es kam dann mal der Vorschlag auf, für diese Platte den cfq-I/O-Scheduler einzustellen (echo "cfq" > /sys/block/<FESTPLATTENNAME>/queue/scheduler). Das bringt tatsächlich etwas Speed, löst das Problem aber nicht. Seltsamerweise hatte und habe ich mit den 1 TByte LaCie Platten in dieser Hinsicht keine Probleme. Da nun Firewire-Support unter Linux unter Kernel 2.6.12 das erstemal als stable deklariert wurde, hab ich gleich Ubuntu 5.10 installiert, das diesen Kernel schon mitbringt. Die 1,6 TB Platten liefen aber immer noch nicht vernünftig. Nun, da diese LaCie-Platten intern immer im Raid 0-Verbund arbeiten (die Bigger Disk Extreme Platten haben intern 4 Festplatten) und diese Platten im Dauerbetrieb nicht unbedingt gut aussehen (heißt oft kaputt gehen), mußte eine andere Lösung her.

Also geguggt und gefunden: Ein 3ware 9500S-4LP SATA-Controller und ein Stardom-RAID-Tower sollte es sein. 3ware deshalb, weil der Linuxsupport wirklich vorbildlich ist. In den RAID-Tower 5 x 400 GB Seagate Platten rein und ein RAID 5 konfiguriert. Damit war dann schon mal das RAID 0 Problem der LaCie's gelöst und der Ausfall einer Platte kann dann schon mal nicht mehr alle Daten vernichten. Der RAID-Tower hat das nette Feature nicht nur Firewire 800 und USB 2.0 sondern auch einen SATA-Anschluß zu haben (es gibt auch einen mit SCSI). Das war dann auch das Kaufargument, da ich eigentlich von Firewire weg wollte. Große Platten, Firewire und Linux scheint momentan noch nicht der letzte Brüller zu sein - auch wenn die Firewire-Mailingliste sehr hilfreich ist und gerne weiterhilft. Gesagt getan: SATA-Controller rein, Tower per SATA angeschlossen... Und der Controller erkennt natürlich den Tower nicht. Aha. Toll. Alle SATA-Ports durchprobiert, Controller in verschiedene Slots gesteckt, div. Konfigurationen probiert.... War nix zu machen. Der Controller tauchte in der Plattenliste nicht auf. Also 3ware-Support angerufen. Dort teilte mir dann auch gleich mit, das man solche RAID-Tower gar nicht unterstütze und man gefälligst einzelne Platten anschließen solle. Ich wollte dann den technischen Hintergrund wissen, wieso das nicht funktionieren sollte, denn für den Controller stellt sich das RAID nach aussen ja nur als eine Platte dar und SATA unterstützt ja immerhin 48bit-Adressierung, so das die 1,6 TByte netto ja eigentlich kein Problem machen sollten. Funktioniert nicht, wird nicht supportet. Ende der Durchsage... Aha. Toll. Also bei Raidsonic angerufen. Dem Support-Techniker erzählte ich dann gleich von meinem Telefongespräch von eben mit 3ware. Der mußte dann gleich schmunzeln und verwieß mich auf's Handbuch Kapitel 4. Dort steht nämlich, das man den IDE-Kanal wechseln muß, denn Kanal 0 wird von Firewire genutzt und Kanal 1 von SATA. Und Default ist Firewire. Drum erkennt der SATA-Controller den Tower nicht. Blöderweise befindet sich aber Kapitel 4 nicht in der gedruckten Anleitung (die ich gelesen habe) sondern auf der mitgelieferten CD als PDF. Also: Gesagt und eingestellt und siehe da: Der Tower erscheint als 1,6 TByte Platte in der Festplattenliste des Controllers. :-) Feini fein...

Also Ubuntu Linux Version 5.10 gebootet, Treiber für den 3ware-Controller lädt ohne Probleme und mit fdisk -l sehe ich dann auch gleich die Platte und richte die Partition ein, XFS Filesystem installieren, mounten und is gut. :-) Aber wir sind ja noch nicht fertig. Ich möchte erstmal sehen, wie das Ganze performend. Also ein ganz einfacher Test mit dd:

dd bs=1024 if=/dev/zero of=/sataplatte

Ungefähr 5 MByte/sec Write-Speed. Nicht berauschend. Und das trotz (scheinbar) aktivierten Write-Back-Cache des Controllers? Also wieder an Firewire 800 ran und Test wiederholt. Ergebnis: Ungefähr 27 MByte/sec Write-Speed. Aha. Toll. Jetzt blick ich gar nicht mehr durch. Na dann bleib ich erstmal bei Firewire. Vielleicht finde ich in diesem Jahrtausend noch raus, woran die schlechte Performance der SATA-Kompontenten liegt.

Update:

Tja... Also an SATA scheint nicht das eigentliche Problem zu sein. Denn in der Praxis hat sich jetzt gezeigt, das bei Firewire der Durchsatz genauso schlecht ist wie bei SATA. Ich muß wohl weitersuchen...

Update:
Aha... Wenn man den richtigen Schalter findet, läuft die Sache gleich viel besser ;-) Da ich bei dem Controller die RAID-Funktionalität nicht nutze, kann ich im BIOS des Controllers nur JBOD einstellen. Das aktiviert allerdings den Write-Back-Cache nicht. Das macht die Sache relativ langsam. Mit aktivieren Write-Back geht's schon erheblich flotter. Trotzdem hätte ich mir selbst ohne Write-Back mehr Performance erwartet. Der Write-Back-Cache ist halt immer so eine Sache bei Stromausfall oder so was in der Gegend...

Kommentare:

Senden Sie einen Kommentar:
  • HTML Syntax: Ausgeschaltet