Ein RAID-Device lohnt sich überall dort, wo viel auf die Festplatten
zugegriffen wird. So kann zum Beispiel ein RAID-0 oder RAID-5 als
/home
Verzeichnis gemountet werden und das Nächste als /var
oder /usr
. Die Geschwindigkeitsvorteile sind gerade bei SCSI Hardware
und »festplattenintensiven« Softwarepaketen wie KDE, StarOffice oder
Netscape deutlich spürbar. Das ganze System »fühlt« sich erheblich
performanter an.
Mit einem RAID-1 System kann man z.B. die Sicherheit seiner Daten erhöhen. Fällt eine Platte aus, befinden sich die Daten immer noch auf der gespiegelten Partition. Ähnliches gilt z.B. für ein RAID-5 System, welches zusätzlich zur erhöhten Sicherheit noch eine bessere Performance bietet.
Hat man schon mehrere Festplatten in seinem System, stellt sich einem doch die Frage, warum man eigentlich solch ein kostenloses Feature wie Software-RAID nicht nutzen sollte. Man denke nur mal an die Preise für gute Hardware-RAID Kontroller plus Speicher. Gerade der neue Kernel-Patch erleichtert einem vieles, was bisher nur auf Umwegen möglich war.
Schreitet die Entwicklung der Software-RAID Unterstützung unter Linux weiterhin so gut fort und bedenkt man die stetig steigende Leistung und die fallenden Preise von CPUs, so kann man sich denken, daß in naher Zukunft die CPU-Leistung, die eine Software-RAID Lösung benötigt, auch bei Standard-CPUs nicht mehr ins Gewicht fällt. Selbst heute reichen für ein Software-RAID auf SCSI-Basis CPUs mit 200-300 MHz völlig aus. Ein RAID-0 mit SCSI-Festplatten soll sogar auf einem 486DX-2/66 halbwegs akzeptabel laufen.
Aufgrund des hauptsächlichen Lesevorgangs kann hier ein RAID-0 oder RAID-5 Verbund empfohlen werden. Die Log-Dateien sollten allerdings nicht auf einem RAID-5 Verbund liegen. Werden durch dynamische Seiten Daten mit einer Datenbank ausgetauscht, gelten dieselben Überlegungen wie bei dem Datenbankabschnitt.
Die typischen Sytem-Log-Dateien erbringen im allgemeinen keine hohe Dauerschreiblast. Hierbei ist es also egal, auf was für einem RAID-Verbund sie liegen. Anders sieht es bei Log-Dateien aus, welche viele Accounting-Informationen enthalten. Diese sollte man aufgrund der allgemeinen Schreibschwäche eines RAID-5 Verbundes eher auf schnellere RAID-Verbunde auslagern.
Oracle kann mit Tablespaces, die aus mehreren Datenfiles auf unterschiedlichen Platten bestehen, umgehen. Um hier zu einer vernünftigen Lastverteilung ohne RAID zu kommen, ist allerdings einiges an Planung vorauszusetzen. Für die Datenfiles und Controlfiles können RAID-0, RAID-1, RAID-10 oder auch RAID-5 Verbunde empfohlen werden; aus Sicherheitsgründen ist allerdings von RAID-0 Verbunden abzuraten. Für die Online-Redo-Log-Dateien empfiehlt sich aufgrund der Schreibschwächen kein RAID-5 System. Dafür könnten folgende Varianten konfiguriert werden:
Für Squid im speziellen gilt, daß er von Haus aus mit mehreren Cache-Partitionen umgehen kann. Daher bringt ein darunterliegendes RAID-Array nicht mehr viel. Die Log-Dateien wiederrum ergeben auf einem RAID-0 Verbund durchaus Sinn. Für andere WWW-Proxys wäre hier ein RAID-0 Verbund angebracht.
Da hier verhältnismäßig wenig Schreibvorgänge stattfinden, jedoch auf jeden
Fall die Redundanz gewährleistet sein sollte, empfiehlt sich für die
Root-Partition ein RAID-1 Verbund und für die /home
, /usr
,
/var
Verzeichnisse einer der redundanten RAID-Modi
(RAID-1, RAID-5, RAID-10).
Um einen Vergleich zwischen den RAID-Verbunden mit ihren unterschiedlichen Chunk-Size Parametern ziehen zu können, findet das Programm Bonnie Anwendung, welches im Internet unter
http://www.textuality.com/bonnie/
residiert. Bonnie erstellt eine beliebig große Datei auf dem RAID-Verbund und
testet neben den unterschiedlichen Schreib- und Lesestrategien auch die
anfallende CPU-Last. Allerdings sollte man die Testdatei mindestens doppelt
so groß wie den real im Rechner vorhandenen RAM-Speicher wählen, da Bonnie
sonst nicht die Geschwindigkeit des RAIDs, sondern das Cacheverhalten von
Linux mißt - und das ist garnicht mal so schlecht.
Um die bei dem nicht sequentiellen Lesen von einem RAID-1 Verbund höhere
Geschwindigkeit zu testen, eignet sich Bonnie aufgrund seiner einzelnen
Testdatei allerdings nicht. Bonnie führt bei seinem Test also einen
sequentiellen Schreib-/Lesevorgang durch, welcher nur von einer RAID-1
Festplatte beantwortet wird. Möchte man trotzdem einen RAID-1 Verbund
geeignet testen, empfiehlt sich hierfür das Programm tiotest
welches
unter
http://www.iki.fi/miku/
zu finden ist.
Da die Hardware wohl in jedem Rechner unterschiedlich ist, wurde darauf verzichtet, in der Ergebnistabelle absolute Werte einzutragen. Ein besserer Vergleich ergibt sich, wenn man die Geschwindigkeit einer Festplatte alleine als den Faktor eins zugrundelegt und bei Verwendung derselben Festplatten die RAID-Performance als Vielfaches dieses Wertes angibt. Da diese Konfiguration drei identische SCSI-Festplatten vorsieht, wäre also maximal eine 3x1 fache Geschwindigkeit zu erwarten. Bedenken sollte man beim RAID-5 Testlauf auch, daß hier nur 2/3 der Kapazität direkt von Bonnie beschrieben werden. Andererseits soll dieser Test ja zeigen, wieviel Geschwindigkeitseinbußen oder -gewinn bei einer Datei derselben Größe zu erwarten sind.
RAID-Modus | Chunk-Size | Blockgröße ext2 | Seq. Input | Seq. Output |
Normal | % | 4 kb | 1 = Referenz | 1 = Referenz |
RAID-0 | 4 kb | 4 kb | 2,6 x Referenz | 2,8 x Referenz |
RAID-5 | 32 kb | 4 kb | 1,7 x Referenz | 1,9 x Referenz |
RAID-10 | 4 kb | 4 kb | 1,7 x Referenz | 2,5 x Referenz |
Wie zu erwarten erreicht ein RAID-0 Verbund aus drei identischen Festplatten annähernd die dreifache Leistung. Auch die RAID-5 Ergebnisse zeigen die bei drei Festplatten erwartete doppelte Leistung. Die Geschwindigkeit der dritten Festplatte kann ja aufgrund der Paritätsinformation nicht gemessen werden. Die Leistung eines RAID-5 sollte also allgemein der aller verwendeten Platten minus eins für die Paritätsinformationplatte sein. Allerdings leidet RAID-5 an einer Art chronischer Schreibschwäche, welche durch das Berechnen und Ablegen der Paritätsinformationen zu erklären ist.
Um sich die Belastung des Prozessors und die benötigte Zeit zum Schreiben einer
Testdatei anzusehen, kann man sich auch wieder des Programmes dd
befleißigen. Der folgende Aufruf von dd
würde eine 100 MB große Datei
in das aktuelle Verzeichnis schreiben und die Ergebnisse anzeigen:
time dd if=/dev/zero of=./Testdatei bs=1024 count=102400