Stripe-Size und Zuordnungseinheinten

schnag

Enthusiast
Thread Starter
Mitglied seit
18.10.2008
Beiträge
60
Hallo!

Angenommen man hat ein RAID 5 oder 0 mit einer Stripe-Size von 128 kb;
wäre es dann nicht äußerst sinnvoll die Größe der Zuordnungseinheiten im Dateisystem auf den größtmöglichen Wert zu stellen?

Annahme: 1 kb Textdatei (lassen wir mal den Master Boot Record weg)

Öffne ich nun diese Datei, fodert das Dateisystem einen Block mit der Größe von 64 kb an (wenn man z.B. die NTFS Partition mit 64 kb Zuordnungseinheiten formatiert hat).

Der RAID Kontroller liest aber trotzdem die vollen 128 kb (von nur einer Festplatte, da dies die Stripe-Size ist. Die Parität dieses 128 kb Blocks sind ja in einem RAID 5 auf einer anderen Festplatte gespeichert.

Habe ich das NTFS Dateisystem aber mit der Standarteinstellung von nur 4 kb formatiert, werden natürlich auch dann die vollen 128 kb gelesen.

Wenn mal insgesamt sein Dateisystem für große Dateien (MP3s, Videos, ISOs) nutzt, wäre es also besser/schneller mit 64 kb Blöcken zu formatieren?


Mit welchem Programm könnte ich das mal testen? HDTune ist in dem Falle unbrauchbar :).


Bis dann,


Michael
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
du könntest mit iometer und zufälligen lese / schreibzugriffen testen.
ich habe demletzt benchmarks über software raid6 und chunksizes von 4-256kb gemacht, leider nur über iscsi. da war im mittel die grössere chunksize besser. wie gross die ntfs blöcke waren kann ich nicht sagen da defaultwerte. ich denke aber ntfs default bei grossen volumes ist 4k
 
7oby, kannst du dein Wissen mit mir/uns teilen? Ich würde gerne begreifen wie das technisch abläuft und warum der Controller doch nicht den ganzen Stripe ausliest wie du sagst.
:)
 
Das Filesystem kennt nur Cluster (Zuordnungseinheiten). Ein AHCI Festplattenkontroller kennt allerindgs keine Cluster, sondern nur Sektoren. Wenn man mit dem Microsoft ProcessMonitor nachschaut kann man sehen welche Sektoren für eine Datei angefordert werden.

Der Cache-Manager von Windows (der auch noch Prefetch etc. implementiert) schickt letzten Endes eine Sektorliste an den AHCI Festplattencontroller mit den Sektoren, die es gerne gelesen hätte. Der Festplattencontroller leitet das nun weiter an die Festplatte.

Im RAID0 Setup rechnet der Festplattencontroller mittels Stripesize nochmals um welche Sektoren von welcher Festplatte zu lesen sind. Es besteht keine Notwendigkeit jeweils vollständige Stripes zu lesen. Die Stripes werden nur zum Umrechnen benötigt. Es gibt also zwei Sektorlisten: Einmal die die das OS gerne hätte u. einmal die die der Controller von den RAID Festplatten liest. Diese Sektorlisten sind unterschiedlich lassen sich aber über die RAID Topologie sowie dessen Stripesize eineindeutig aufeinander abbilden (modulo concat).

In der Praxis wird die Schwierigkeit sein, dass Du nicht den Quellcode der RAID Implementierungen hast, um nachzuschauen. Hier kannst nur im Linux mdraid Source Code nachschauen wie er's macht. Dieser ist schon ziemlich optimiert u. unnötige Zugriffe macht der nicht.

Daher gilt auch für RAID5: Tritt kein Lesefehler auf, werden die Parity Daten schon gleich gar nicht gelesen. Zumindest werden sie nicht ausgeXORed.
 
Zuletzt bearbeitet:
Vielen Dank 7oby!

Dein Post war super interessant. Der Controller emuliert also eine Sektorenliste für das Dateisystem und mit der Stripesize und der Berechnungsmethode (modulo, concat, darüber hab ich leider nichts mehr bei Google gefunden was mir weiterhelfen konnte) kann der Controller eindeutig feststellen wo die Daten, die das OS angefordert hat, auf den vers. Festplatten liegen.
Er speichert also nicht zusätzlich noch eine Sektorenliste wie der MBR, oder?

Woher hast du all die Infos? Welches Buch? :)

Und noch eine Frage: Die Sektorengröße in Festplatten sollte doch eigentlich auf 4KB erhöht werden, bisher sind es ja 512 Byte. Warum ist bis heute noch nichts daraus geworden?
 
Ich würde persönlich die Größe auf den jeweiligen Einsatzzweck begrenzen.
Es gibt ein Java Tool mit dem sich durch Scannen der Festplatte und der darauf enthaltenen Daten die bestmögliche StripSize und Blockgröße ermitteln lässt.

Am besten geht das ganze wohl aber eindeutig mit Benchmarks und eigenen Erfahrungen und Anforderungen. Aber trotzdem ein interessanter Thread und eine gute Antwort von 7oby
 
Ich nehme an, dass man die beste Performance abhängig von der Dateistruktur erreichen kann. Wenn ich beispielsweise eine Festplatte habe, auf der nur grosse CD Image ISO-Files liegen, dann dürfte es doch sinnig sein diese Platte mit möglichst grossen Zuordnungseinheiten formatieren. Damit dürfte sicherlich auch der grad der Fragmentierung abnehmen. Sache ist ja die, wenn ich Windows bitte eine Datei mit 1kb auf die Platte abzulegen, reserviert er dennoch mindestens die Grösse der vorgegebenen Zuordnungsgrösse. Kleine Dateien profitieren von kleinen grössen, Grosse Dateien von grossen Zuordnungseinheiten.

Korrigiert mich bitte, wenn ich mich irre.

Ich nutze zum Benchmarken von Performancewerten auf Festplatten immer ATTO Disk Benchmark - knaller Tool.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh