Discussion:
Flash-RAID für Arme
(zu alt für eine Antwort)
Christian Brandt
2009-04-23 16:01:45 UTC
Permalink
Ich verwende hier einen Asus EEE mit einem 4 und einem 8GB Flashlaufwerk
und ärgere mich regelmässig über die lahmen Flashlaufwerke:

Beim lesen grosser Dateien machen beide Laufwerke ca. 15MB/s - da kann
man nicht meckern - beim Schreiben rund 6MB/s.
Aber schlimm wirds bei kleinen Schreibzugriffen, d.h. kleiner als
4kByte, da fällt die Leserate auf 5MB/s und die Schreibrate auf 1MB/s.
Und leider sind diese Zugriffsarten eher die Regel.

Also hab ich mir folgendes überlegt: Ich erstelle ein RAID0 mit drei
Laufwerken über das 4GB-Laufwerk sowie die beiden Hälften des
8GB-Laufwerks - ein kurzer Test hat ergeben daß das 8GB-Laufwerk
durchaus 30% mehr Leistung bringt wenn ich die Zugriffe künstlich
verteile, d.h. hinten und vorne getrennt am Laufwerk Daten schiebe,
anscheinend kommen sich dann die Flashcontroller nicht ins Gehege.

Nun die Fragen:

Beschreibt ein RAID immer den ganzen Chunk? Das wäre natürlich unter
Umständen schlecht denn wenn der RAID-Chunk grösser als die Flashzelle
ist werden zwangsweise Sektoren beschrieben die das nicht gebraucht hätten.

Was ist die optimale Chunkgrösse um die Flashlaufwerke zu schonen?

Mach ich mir damit meine Flashzellen kaputt?

Christian Brandt
Thomas Richter
2009-04-23 19:19:57 UTC
Permalink
Post by Christian Brandt
Ich verwende hier einen Asus EEE mit einem 4 und einem 8GB Flashlaufwerk
Beim lesen grosser Dateien machen beide Laufwerke ca. 15MB/s - da kann
man nicht meckern - beim Schreiben rund 6MB/s.
Aber schlimm wirds bei kleinen Schreibzugriffen, d.h. kleiner als
4kByte, da fällt die Leserate auf 5MB/s und die Schreibrate auf 1MB/s.
Und leider sind diese Zugriffsarten eher die Regel.
Ich würde da vieleicht erstmal an der Buffer-Strategie vom Linux
schrauben, etwa (als erste Hilfe) noatime als Mount-Option setzen-
reduziert die Anzahl der Schreibzugriffe. Du kannst auch mal probieren,
das commit-Interval von ext3 hochzusetzen (commit=xxx im mount), bzw.
beim Erstellen des Dateisystems die Blockgröße hochzusetzen (mkfs.ext3
-b 4096). Ferner kannst Du noch auf das Cache-Verhalten des Kernels über
/proc/sys/vm Einfluss nehmen und dort die Zeit zum Leeren des Caches
hohchsetzen, um so mehr Daten im Hauptspeicher zu buffern
(/proc/vm/dirty_expire_centisecs), bzw. die dirty_ratio oder die
dirty_background_ratio hochsetzen.
Post by Christian Brandt
Also hab ich mir folgendes überlegt: Ich erstelle ein RAID0 mit drei
Laufwerken über das 4GB-Laufwerk sowie die beiden Hälften des
8GB-Laufwerks - ein kurzer Test hat ergeben daß das 8GB-Laufwerk
durchaus 30% mehr Leistung bringt wenn ich die Zugriffe künstlich
verteile, d.h. hinten und vorne getrennt am Laufwerk Daten schiebe,
anscheinend kommen sich dann die Flashcontroller nicht ins Gehege.
Erscheint mir erstmal unnötig kompliziert...
Post by Christian Brandt
Beschreibt ein RAID immer den ganzen Chunk? Das wäre natürlich unter
Umständen schlecht denn wenn der RAID-Chunk grösser als die Flashzelle
ist werden zwangsweise Sektoren beschrieben die das nicht gebraucht hätten.
Das kann ich leider nicht beurteilen.
Post by Christian Brandt
Was ist die optimale Chunkgrösse um die Flashlaufwerke zu schonen?
Vermutlich nur experimentell zu ermitteln, da dort jeder Hersteller wohl
sein eigenes Geheimnis draus macht.
Post by Christian Brandt
Mach ich mir damit meine Flashzellen kaputt?
Mit "RAID"? Nun, mit jedem Schreibvorgang machst Du sie kaputt. (-:
Allerdings haben moderne Laufwerke wear-leveling, sollten also in der
Lage sein, Schreibzugriffe derart umzuverteilen, dass im Mittel alle
Zellen gleich "kaputt" gehen. Ich würde mir da erstmal nicht zu viele
Gedanken machen.

Grüße,
Thomas
Henning Paul
2009-04-24 06:17:49 UTC
Permalink
Post by Christian Brandt
Ich verwende hier einen Asus EEE mit einem 4 und einem 8GB
Flashlaufwerk und ärgere mich regelmässig über die lahmen
Flashlaufwerke
Deshalb habe ich die MiniCard-SSD in meinem 901 durch ein schnelleres
Modell mit 32GB ersetzt. :-)

Gruß
Henning

Loading...