Forums Neueste Beiträge
 

Flash-RAID für Arme

23/04/2009 - 18:01 von Christian Brandt | Report spam
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
 

Lesen sie die antworten

#1 Thomas Richter
23/04/2009 - 21:19 | Warnen spam
Christian Brandt wrote:
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.



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.

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...

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.



Das kann ich leider nicht beurteilen.

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.

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

Ähnliche fragen