Stripesize, Chunksize und Clustersize bei RAID5 4x1TB HDD

Unlimited

Commodore Special
Mitglied seit
10.07.2007
Beiträge
384
Renomée
5
Leute ich bin jetzt kurz davor das letzte RAID5 meines Lebens einzurichten.
Ich steige von 4x250GB auf 4x1TB um, bleibe aber bei meinem Intel P35 Mainboard mit ICH9R.
Leider habe ich die Platten bereits gekauft, aber eigentlich bin ich fast schon eher gegen das fehleranfällige und nervige RAID5, werde es aber jetzt doch durchziehen, weil ich einmal einen Urlaubsbilderverlust wg. Plattenausfall erleiden musste.

Gespeichert werden sollen darauf
=> meine Fotosammlung (große Bilder, da alle RAW), die ich dort auch bearbeiten möchte, daher sind mir schnelle Schreibraten auch nicht unwichtig
=> Backups
=> Musiksammlung
=> Selbst erstellte Filme, sehr große Dateien.

Damit es zu keinen Missinterpretationen kommt, folgende Definitionen vorweg:
(siehe: http://www.tomshardware.de/foren/241126-10-raid-definitionen-stripe-size-stripe-width)
Chunksize: Ein Block auf einer Festplatte (leider namentlich missverständlich, da z.B. gleichzusetzen mit der Nvidia-Stripesize)
Stripewidth: Anzahl der Chunks die bei einem Zugriff die Nutzdaten beeinhalten bzw. die gleichzeitig geschrieben oder gelesen werden können
Stripesize: Stripewidth * Chunksize
Clustersize: Blöcke des Dateisystems

Ich verstehe das folgendermaßen:
Wenn ich z.B. eine Stripesize von 128kb einstelle folgt daraus bei 4 Platten eine Chunksize von 32kb.
Man hat aber bei einer Stripesize von 128kb (RAID5 und 4 Platten) nur eine Nutzdatenmenge von 96kb. EIN Block mit 32kb ist nämlich mit Paritätsdaten belegt.
Idealerweise wähle ich daher in NTFS eine Clustersize von 96kb.


Meine Fragen hierzu:

1. Sehe ich die o.g. Zusammenhänge richtig?
2. Kann man in NTFS überhaupt eine Clustersize von 96kb festlegen?
3. Da ich hauptsächlich große Dateien hantiere: wäre es nicht performanter die Stripesize auf 256kb festzulegen? Es würde ja nur wenig Volumen verschwendet werden... und der Controller müsste die Dateien nicht so stark splitten.
4. Ich plane demnächst Win7 zu installieren. Gibt es hier bez. Dateisystem Verbesserungen in bezug auf den RAID5-Betrieb? Sollte ich daher evtl. mit der RAID5-Einrichtung warten, bis ich WIN7 installiert habe?
5. Die Daten sollen für den Umzug auf einem fünften 1TB-Laufwerk zwischengelagert werden. Gibt es elegantere Möglichkeiten?
6. Habe ich mit Problemen zu rechnen, wenn ich eine Partition größer als 2TB auslegen?
 
afaik bezeichnet stripesize die datenmenge, die jeweils auf eine platte geschrieben wird, stripewidth ist korrekt und chunksize wäre dann stripesize * stripewidth.

bei nem raid5 mit 4 platten und 128 kb stripesize ergibt das dann chunks von 384 kb, die jeweils am stück geschrieben werden. wenn du noch ne platte mehr nehmen würdest, kämst du auf chunk von nem halben mb. solch große cluster werden aber afaik gar nciht unterstützt. daher nimmt man eben ne kleinere clustergröße, die ein ganzzahliger teiler der chunkgröße sein sollte, damit die cluster immer nur in einem einzigen chunk liegen und nciht auf 2 verteilt werden. beim anlegen der partitionen solltest du auf korrektes alignment achten. die ersten partition sollte daher bei 1,5 mb anfangen. wenn du das array später vielleicht noch auf 5 platten erweitern möchtest, solltest du die erste partition bei 3 mb beginnen lassen, damit sichergestellt ist, dass die erste partition immer mit einem kompletten chunk beginnt. bei weiteren partitonen sollte man ebenso vorgehen.

ob man bei ntfs noch was tunen kann für raid-betrieb, weiß ich nicht. bei anderen fs gibt es aber definitiv solche möglichkeiten (ext4, xfs...)

mit xp kannst du das array allerdings nicht nutzen! es ist größer als 2 tib und muss daher gpt-partitioniert werden. xp versteht aber kein gpt. mit w7 gibt es keine probleme dabei.
 
afaik bezeichnet stripesize die datenmenge, die jeweils auf eine platte geschrieben wird, stripewidth ist korrekt und chunksize wäre dann stripesize * stripewidth.

Ich bin mal so frei, wikipedia wortwörtlich zu zitieren:
http://de.wikipedia.org/wiki/RAID#Stripe_Size
http://de.wikipedia.org/wiki/RAID#Chunk_Size

"Stripe Size
Die Stripe Size bezeichnet die Größe des aus einem oder mehreren Datenblöcken [Ergänzung von mir: Datenblöcke = Chunks] bestehenden Datenbereichs (Striping-Granularität), der auf die RAID-Speichermedien verteilt wird. So wird bei einem aus vier Festplatten bestehenden Array mit einer Stripe Size von 1 MiB ein Datenblock in einer Größe von 256 KiB auf jede Festplatte geschrieben. Bei einer Vergrößerung der Stripe-Size wächst der maximale Durchsatz, gleichzeitig erhöht sich aber die Zugriffszeit. Heute üblich sind Stripe-Größen von 256 KiB bis 2 MiB.


Chunk Size

Die Chunk Size bezeichnet den kleinsten Datenblock pro Schreibzugriff, der auf eine individuelle Festplatte geschrieben wird. So besitzt beispielsweise ein aus vier Festplatten bestehendes RAID-0-Array mit einer Chunk Size von 256 KiB eine Stripe Size von 1 MiB. Unabhängig davon wird beim Formatieren eines Arrays die File System Block Size für das jeweilige Dateisystem gesetzt. Die Performanceauswirkungen der eingestellten Chunk Size[11] im Verhältnis zu der gewählten File System Block Size sind komplex."
.
EDIT :
.

Nach dem Wiki-Wissen formulierst du es genau falsch rum:

bei nem raid5 mit 4 platten und 128 kb stripesize ergibt das dann chunks von 384 kb


4 platten á 32kb Chunksize ergeben eine Stripesize von insgesamt 128kb, da die Stripesize sich aus mehreren Chunks zusammensetzt und nicht andersrum...
.
EDIT :
.

beim anlegen der partitionen solltest du auf korrektes alignment achten. die ersten partition sollte daher bei 1,5 mb anfangen. wenn du das array später vielleicht noch auf 5 platten erweitern möchtest, solltest du die erste partition bei 3 mb beginnen lassen, damit sichergestellt ist, dass die erste partition immer mit einem kompletten chunk beginnt. bei weiteren partitonen sollte man ebenso vorgehen.

Von korrektem Alignment habe ich noch nie gehört, finde das aber sehr interessant!
Kann du mal erläutern wie du auf die genannten Werte kommst?
THX
.
EDIT :
.

mit xp kannst du das array allerdings nicht nutzen! es ist größer als 2 tib und muss daher gpt-partitioniert werden. xp versteht aber kein gpt. mit w7 gibt es keine probleme dabei.
Mist!
Das habe ich befürchtet!
Dann muss ich scheinbar erstmal im Intel Matrix-Raid-Tool zwei Arrays einrichten:
=> 2TB RAID5 (Plattenplatzverbrauch 2,5TB)
=> 1,5TB als JBOD ohne redundanz. (ob das eine gute Idee sein kann?)
=> Partitionen kleiner 2TB auf dem 3TB großen Array wären nicht möglich?
 
Zuletzt bearbeitet:
Komisch, ich bin schon seit einigen Jahren hier unterwegs.... irgendwie habe ich in letzter Zeit das Gefühl, dass hier echt deutlich weniger los ist als früher? Grade in den letzten Monaten ists scheinbar nochmal deutlich nach unten gegangen...

Jetzt nicht unbedingt, weil das Wochenden jetzt um ist und erst einer auf meinen Beitrag geantwortet hat. Kann ja sein, dass das Thema RAID einfach nicht mehr so viele Leute interessiert wie früher.

Es ist eher so, dass zum Beispiel in den letzten 24h erst 7 Beiträge im kompletten Forum für Festplatten hinzugekommen sind. "Früher" war hier grad am WE doch deutlich mehr los, oder spinn ich bloß rum?
 
Das Alignment spielt eigentlich normalerweise bei 4KB-Platten eine Rolle, und da gibt momentan so einige Probleme, insbesondere dann wenn Vista oder W7 keinen direkten Zugriff auf die Festplatten bekommen bzw. die Verwaltung dieser über ext. Controller läuft, das funktioniert momentan nicht, bzw. jetzige erschiene Modelle sind in der Lage damit umgehen zu können. Wie das bei Fake-Raid aussieht sprich Raid-5 mit Intel ICH-10R und 4x 1TB (4KB-Platten) k.A Einzelne Platten dagegen werden korrekt eingebunden.

Des letzteren sollte man ein Raid-5 auch auch Performancegründen nicht teilen sondern als 1 Laufwerk belassen.

NTFS würde ich auf Standart belassen, und nicht irgendeine Blockgröße da einstellen, ich spekuliere mal das für die Größe die korrekte Blockgröße eingestellt wird. Habe mich aber nach DOS damit nicht mehr beschäftigt, dort wurde die Blockgröße erhöht je größer das Laufwerk wurde, da man ebend nur eine beschränkte Anzahl von Zuorndungseinheiten hatte.
 
Zuletzt bearbeitet:
Ich habe jetzt vor alles einzurichten, daher:
Der Master Boot Record geht ja nur bis 2TB.
D.h. schonmal: booten wird auf größeren Laufwerken mit WinXP nicht möglich sein.
Wie ists denn mit dem Dateizugriff, wenn ich von einer anderen Platte boote?

Naja, booten will ich ja auch nicht unbedingt auf meinem neuen großen RAID5, aber ich hätte gerne eine Formatierung die halbwegs "zukunftsicher" ist.
Mit GPT kenne ich mich leider null aus, gibt es da Einschränkungen / Inkompatibilitäten, die zu bedenken sind?

Evtl. würde ich doch gerne ein kleines "Notsystem" auf dem RAID5 einrichten. Wie gehe ich am besten vor?
.
EDIT :
.

Was die Clustersize (kleinste Menge an Speicherplatz, die zum Speichern einer Datei zugeordnet werden kann) angeht, habe ich mir folgendes überlegt:

Wie oben beschrieben, bei einer Stripesize von 128kb, schaut die Verteilung der Daten bei mir so aus:
Platte 1 => 32kb Daten
Platte 2 => 32kb Daten
Platte 3 => 32kb Daten ==> 3x32kb Nutzdaten = 96kb
Platte 4 => 32kb Paritätsinformationen

1. Würde ich nun eine Clustersize von 4kb (Standard) wählen, wären mir die Cluster zu klein, da ich eigentlich nur große Dateien auf dem Raid bearbeite. Die CPU hätte unsinnig großen Aufwand meine großen Dateien in Minischnipsel zu teilen, die Fragmentierung würde schneller kommen.​

2. Würde ich eine Clustersize = Nutzdatensize pro Stripe von 96kb in NTFS anlegen, hätte das bei korrektem Alignment den Vorteil, dass die kleinste Dateieinheit des Betriebsystems immer auf ALLE Laufwerke gleichzeitig verteilt geschrieben werden kann! Dadurch würde ich quasi das verteilte Schreiben erzwingen.
Das würde den Durchsatz am theor. mögl. max. MB/sec maximieren.​

3. Würde ich als Clustersize = Chunksize = 32kb wählen, so hätte das den Vorteil, dass ich nicht zu kleine Schnipsel hätte und zugleich würde das RAID5 bei kleineren verteilt vorliegenden Dateien max. 3 getrennte Cluster GLEICHZEITIG lesen können, was die Zugriffszeit im Vergleich zum Einzel-Laufwerk deutlich verringern könnte.​

Jetzt stellt sich mir die Frage:
=> Wie aligne ich die Cluster mit den Chunks/Stripes?
=> Acronis kann max 64kb als Clustersize anlegen, ist das die Grenze von NTFS oder die von Acronis?

Anmerkung:
Aufgrund der Beschränkung tendiere ich nun zu einer Clustersize von 32kb. Das ist wohl ein guter Kompromiss.
Evtl wäre es eine Überlegung wert die Stripesize auf 256kb zu setzen, woraus dann i.d. selben Konfiguration folgen würde: Clustersize = Chunksize = 64kb
.
EDIT :
.

Nach dieser Information von Microsoft kann NTFS übrigends auf Laufwerke mit bis zu 256TB zugreifen:
http://support.microsoft.com/kb/140365

64kb ist übrigends die größte implementierte Clustersize in NTFS.
 
Zuletzt bearbeitet:
Ich würde Cluster=Stripesize einstellen und zwar so groß wie möglich. Sowas in der Richtung 64KB.

GPT ist bei XP nicht nutzbar.

Du könntest auch mit 3 Platten anfangen und MBR. Später kannst du dann auf 4 Platten erweitern und auf GPT updaten. Oder du machst einfach 2 Partitionen.
 
Oder du machst einfach 2 Partitionen.
Oh mann, bist du sicher , dass das geht? Was ein Schrott, dann mache ich mir grade den ganzen Stress umsonst?
Ich habe gar kein Problem, die Platte in mehrere Partitionen zu teilen!

Kann man dann auch von einer kleinen Startpartition booten? Ich krieg echt nochmal die Krise vom ganzen Forenhalbwissen! In mehreren Threads hab ich jetzt OMG!! und lass es !! und GPT!!!! gelesen.

Dabei braucht man EINFACH nur mehrere Partitionen anzulegen?

*kotz*

ääähhhhm... bzw. *freu*
:)
.
EDIT :
.

mit xp kannst du das array allerdings nicht nutzen! es ist größer als 2 tib und muss daher gpt-partitioniert werden. xp versteht aber kein gpt. mit w7 gibt es keine probleme dabei.

Bin mal gespannt obs auch ohne GPT geht...
.
EDIT :
.

Hier wird auch sehr schön beschrieben, welche Auswirkungen es hat, wenn man die Clustersize unterschiedlich an die Stripesize anpasst:
http://www.computerbase.de/forum/showpost.php?p=6991471&postcount=3

Ein Alignment macht daher im RAID absolut Sinn!
Bloß mit welchem Tool kann ich sowas machen?

Es gibt Alignment Tools für SSD und auch füe Advanced-Format 4k -HDDs, aber ich kann kein universelles Tool finden, dass mir ein RAID5 alignen kann... dabei müssen (anders als bei SSD / 4k) die Cluster 1:1 auf die Chunks bzw. Stripes alignt werden.
 
Zuletzt bearbeitet:
Ich könnte ja jetzt ganz böse sein und sagen: Nimm Linux mit XFS. Da kannst du das Dateisystem an stripewidth und stripesize ausrichten. ;D
 
OK, das Raid entwickelt sich.
laaaangsam.
Ich habe jetzt erstmal zwei Matrix-Raid5-Volumes eingerichtet, wobei mein Plan dahin geht, später mit Win7 dann auf ein kleines RAID0 und ein 2,7TB RAID5 mit GPT umzubauen. Nun wird sich die Initialisierung voraussichtlich locker mal noch einen Tag hinziehn. Was treibt das RAID-System da nur so lange?

Ich habe aber bereits im nicht-initialisierten Zustand einige Benches mit verschiedenen RAID-Konfigs gemacht.
Je nachdem, wie man Stripe-, und Clustersize miteinander kombiniert ergeben sich deutliche Unterschiede, da werde ich bei Gelegenheit mal genauer drauf eingehen.

Hier schonmal ein kleiner Screenshot vorweg, für RAID0-Betrieb.
Die schnellste Kombi war hier eine Stripesize von 128kb kombiniert mit einer Clustersize von 64kb.
Die langsamste von mir getestete Variante war eine Stripesize von 32kb, kombiniert mit einer Clustersize von 4kb (Standard).

Es hat sich gezeigt (siehe atto), dass zwischen den beiden Konfigs Performancewelten liegen!
Man ist definitiv schlecht beraten, wenn man "einfach die Clustersize auf Standard lässt".
Anpassen lohnt sich auf jeden Fall!!

Theoretisch sollten die vier platten am plattenanfang ca. 4x140MB/s=560MB/s liefern.
Irgendwo wird vermutlich i.d. ICH9R oder im PCIe-Subsystem ein Flaschenhals sein.
 
Zuletzt bearbeitet:
Achte darauf, dass du wirklich dein Einsatzszenario benchst. Große Dateien profitieren von größerer Stripesize. Und RAID0 verhält sich anders als RAID5. Also auch nochmal separat testen. ;)
 
Und RAID0 verhält sich anders als RAID5. Also auch nochmal separat testen. ;)

Yoyoyo, habe ich alles gemacht. Ist halt schon eine Stunde aufwand, aber lohnt sich.
:)

reingestellt habe ich die Charts allerdings hier noch nicht, wegen zeitmangel.
Kommt noch!

Mein Fazit aus zig Testcharts vorweg:
das beste Resultat für
RAID0 (Programme): Stripe64/Cluster64,
RAID0 (Durchsatz/große Dateien): Stripe128/Cluster64

und ebenso für
RAID5 (Programme): Stripe64/Cluster64,
RAID5 (Durchsatz): Stripe128/Cluster64.

Es gibt nen Haufen Kombinationsmöglichkeiten, die i.d. Performance nur gering abweichen, aber auch welche, wo sich v.A. die Schreibleistung um den Faktor 2-4 vermindert.

Ich werde jetzt doch nicht 2 RAID5-Volumes einrichten, sondern ein RAID0 mit übertrieben großen 1072GB für Programme und ein RAID5 mit 2048GB.

Da ich Anfang/Mitte 2011 (wenn die neue Intel refresh-Generation die Preise weiter gedrückt hat) auf eine SSD mit 120GB umsteigen werde und auch dann auf Win7 wechsel, werde ich das RAID ohnehin neu via GPT auf 2,7TB formatieren müssen.

Dann wird auch das RAID0 verkleinert. Geplant ist die Nutzung des RAID0 ausschließlich für die Programme/Games/Caches.
Windows XP läuft bei mir ja auf einer weiteren 1TB Hitachi.

Im Moment habe ich die Programmpartition ja zum Umzug zusätzlich auf der System-Hitachi drauf. Das System ist im Vergleich zu vorher grottenlangsam geworden. Also RAID0 bringt schon auch was bei Programmen.
Zumindest mit 4 Platten und wenn man die Strpies/Cluster richtig einstellt.
Das wurde sicher von vielen Benchseiten, die behauptet haben RAID0 bringt für Programme nichts, vernachlässigt.
 
Zurück
Oben Unten