raid profis hier?
Geizhals » Forum » Hardware-Allgemein » raid profis hier? (67 Beiträge, 849 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...........
Re(11): raid profis hier?
07.08.2012, 20:08:51
Ich sehe keinen technischen Grund fuer irgendeine Art Bottleneck im RAID5-Betrieb. Die Komplexitaet von XOR steigt linear mit dem Umfang der Eingabedaten, und jede Pimperl-CPU, die man heute entweder in einem Controller oder einem Standalone-Embedded-System findet, hat was das angeht genuegend Rechenleistung, um auch wirklich schon unvernuenftig viele Spindeln in einem RAID5 mit maximalem Durchsatz zu befeuern.

Nur so als Beispiel:

root@tpx200:~ # modprobe raid5
root@tpx200:~ # dmesg
[172422.751539] async_tx: api initialized (async)
[172422.753430] xor: automatically using best checksumming function:
[172422.792017]    generic_sse:  2970.000 MB/sec
(Thinkpad X200; Core 2 Duo @ 2.26GHz)


root@vault[ssh]:~ # modprobe raid5
root@vault[ssh]:~ # dmesg
[7530514.461729] async_tx: api initialized (async)
[7530514.474026] xor: measuring software checksum speed
[7530514.525662]    arm4regs  :  1084.800 MB/sec
[7530514.575659]    8regs     :   804.400 MB/sec
[7530514.625660]    32regs    :   900.800 MB/sec
[7530514.630032] xor: using function: arm4regs (1084.800 MB/sec)
(Sheevaplug Reference Board; Feroceon @ 1.2GHz)

Es ist quasi unmoeglich, irgendeine Art von zu XOR befaehigtem IC innerhalb eines RAID-Controller ernsthaft ins Schwitzen zu bringen. Mit RAID6 oder anderen n-Parity-Schemata sieht es etwas anders aus, aber auch das kann man mit der richtigen Wahl der Embedded-CPU fuer die Controllerlogik sehr einfach in den Griff kriegen.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.....
Re(5): raid profis hier?
07.08.2012, 15:01:41
Ein Rebuild dauert bei heutigen Plattenkapazitaeten und -geschwindigkeiten
allenfalls ein paar Stunden (wenn viel auf das Array geschrieben wird,
waehrend es degraded ist, evtl. auch empfindlich laenger). Wenn du dir
berechtigterweise Sorgen machst, dass innerhalb dieser Zeit eine zweite Platte
aus deinem Array - aus welchen Gruenden auch immer - eingeht, und du deswegen
eine Hot-Spare-Platte anstatt eines manuellen Tauschs als zwingend erachtest,
machst du eindeutig etwas falsch (vermutlich beim Einkauf der Platten, ganz
sicher aber (auch) bei der Wahl des RAID-Levels).

Danke für die Belehrung!

Ich muss dir allerdings sagen, dass ich doch ein paar Jahrzehnte Erfahrung mit RAID Controllern und Laufwerken im professionellen Einsatzbereich vorweisen kann. So nebenbei habe ich seinerzeit auch die ersten Arecas für Eure Server geliefert. ;) Und ich habe das Chargensterben schon einige Male bei verschiedenen Kunden erlebt. Und auch, dass bei einigen Kunden (abseitiger Serverraum und Wochenende) das Entdecken des Schadens*) erst sehr spät erfolgte.

Nachdem du aber heute schon zu wissen scheinst, dass ein Kunde in solchen Fällen bereits beim Einkauf hätte wissen müssen, dass er die falschen Laufwerke kauft, erbitte ich von dir die richtigen Lottozahlen der KW52 für 2012. Denn es ist ALLEN relevanten Herstellern von Serverplatten schon gelungen, (Material/Konstruktion-)Fehler "einzubauen", die sich erst nach einem Jahr oder später ausgewirkt haben.

Die Hersteller wussten bis zu den erste Meldungen nichts von den Fehlern - du schon? ;) Ich habe daraus gelernt und verwende in kritischen Umgebungen, in denen RAID-RAID-Arrays nicht machbar sind oder sich aus wirtschaftlichen Gründen verbieten, manchmal Platten verschiedener Hersteller (nähere Ausführungen erspar ich mir), denn solche Fehler sind auch in Zukunft nicht auszuschließen.

*) Und was das Monitoring betrifft: Ich mache das für mich, meine Kunden machen das für sich - oder eben auch nicht. Auch in Riesenfirmen kommt es manchmal dazu, dass Menschen schlampfen - und so selten ist das nicht. Sollen auch in großen Firmen (da reden wir dann schon auch von ganz großen Global Players, nicht nur von für östrereichische Verhältnisse großen Unternehmen) bereits notwendige Backups gefehlt haben, warum sollen das Überwachungsfehler nicht passieren können? Bist du fehlerfrei?
  
Euer CWsoft
Unser zweites Buch ist fertig: http://weinzettl.info/content/page/canyons.html
Galerien auf http://weinzettl.info
Foto-Workshops auf http://warp2search.at
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
..
Re(2): raid profis hier?
08.08.2012, 10:18:15
. Raid 5 mit 4 Platten ist nicht super, entweder 3 oder 5.


Das halte ich für ein Gschichtl...

Die Argumentation ist im Wiki-Artikel ja wie folgt:
Angenommen, ich habe eine Chunk-Size von 512 Bytes und will 2K schreiben.
Dann brauche ich bei 4 Platten eben einen Schreibzugriff auf alle 4 (3Daten+1 Parity) - und einen Lese/Schreibzugriff auf eine der 4 Platten (Parity+Daten Lesen + Schreiben).

Was hier völlig vergessen wird ist, dass [fast] niemand eine Chunk-Size = Sektor-Size nimmt - sie hat ja fast nur Nachteile. Idealerweise entspricht die Chunk-Size einem durchschnittlichen IO.

Beispiel wieder RAID5 mit 4 Platten, Chunksize sei 256 KB, Gespeichert wird ein Word-Doc mit 200KB.

2 von den 4 Platten sind dann beschäftigt (Lesen+Schreiben). Die anderen 2 Platten sind _unbenutzt_ zu diesem Zeitpunkt - und können bequem parallel beispielsweise zum Lesen verwendet werden. Wenn parallel ein dritter Datenblock aus diesem Stripe verändert wurde - kann i.d.R. die Parity gleich mit berechnet werden (weil vom Block Layer ja i.d.R. verzögert auf Platte geschrieben wird). Wenn nicht - ist sie immerhin im Cache und kann auch ohne weiteren IO in die Parity-Berechnung einfließen.

Wenn die Chunk-Size gleich der Sektor-Size ist, kann man sich die Schreib/Leseköpfe der Spindeln starr verbunden vorstellen - weil die Masse der Dateien größer 512 Bytes ist. Das ist genau das, was Du nicht willst - um mehr I/O zu deinem Plattensubsystem zu ermöglichen.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...
Re(3): raid profis hier?
08.08.2012, 13:31:46
Raid 5 Berechnung für optimale Plattenzahl: 2^n+1, das kommt daher weil du Binär alles mit 2^ irgendwas ist, also kannst du deinen Chunk immer optimal aufteilen, auf 2,4,8 (6 lass ich mal aus, da hast dann trotzdem Überhang wie bei 3) Platten, respektive sollte dein Chunk=Sektor X 2,4,8 Platten sein, die +1 Platte speichert dann den Parity. Natürlich hast Recht mit Chunk=/=Sektor, mit meiner Formel kannst dann nochmal 2^irgendwas draufmulitiplizieren, um den optimalen Chunk für deine typischen Transfergrößen zu bekommen. Wenn meine Rechnung stimmt, musst du bei 3+1 Platten Sektorgrößex12=Chunk nehmen, um nicht einen Überhang zu bekommen (sind dann bei 1 Chunk 4 Schreibvorgänge auf jeder Platte).
Ob das mit den nicht beschäftigten Platten so funktioniert, wie du es schreibst (was ich glaube dass es solche Strategien gibt), hast noch immer das Problem, dass durch die unterschiedliche Schreib/Lesezeiten du bei mehreren aufeinanderfolgenden Zyklen Totzeiten reinbringen wirst, wo Platten nix machen werden.
Wo ich mir nicht sicher bin, ob nicht immer alle Platten schreiben bzw. lesen an einem Chunk, ist ja die kleinste ansprechbare Einheit im Raid, ich meine damit das wenn du eine kleinere Datenmenge als einen Chunk schreibst, muss ja zuerst den Chunk, wohinein du es schreiben willst, einlesen, modifizieren, und dann wieder schreiben und zwar auf allen Platten mit Daten + das Parity dann.
https://raid.wiki.kernel.org/index.php/RAID_setup#RAID-5  erklärt ja, dass du um die Parity zu berechen alle TeilChunks brauchst auch die die du nicht modifizierst. Du ersparst dir dann das erneute Schreiben der unmodifierten TeilChunks (wenn der Controller das so macht was ich glaube).
Das selbe Problem haben ja auch SSDs (in Bezug auf kleine Schreiboperationen).
Und mit Cache kannst einiges kompensieren, aber nur wennst einen Controller hast, der das auch macht^^.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
....
Re(4): raid profis hier?
08.08.2012, 14:03:37
, also kannst du deinen Chunk immer optimal aufteilen,

Ein Chunk ist hier die Speichermenge, die auf eine Platte kommt.
Sinngemäß:
Byte 0 bis chunksize-1: Platte 1
Byte Chunksize bis 2*chunksize-1: Platte 2
...
Der Chunk wird also nicht "aufgeteilt".

  Wenn meine Rechnung stimmt, musst du bei 3+1 Platten Sektorgrößex12=Chunk
nehmen, um nicht einen Überhang zu bekommen (sind dann bei 1 Chunk 4
Schreibvorgänge auf jeder Platte).

Ohne es mir genau zu überlegen: Die Idee ist ja, dass Du _nie_ einen Überhang generierst... Und immer möglichst wenig Platten beschäftigst, weil die SEEK-TIME Dir ja weh tut... Dein Vorschlag "Sektorgröße x 12=Chunk" - würde je nachdem 6KB oder 48KB bedeuten. Da ich nie ein RAID für "normale Usage" unter 128KB anlege (meist 256KB) würde ich deine Bedingung jedenfalls erfüllen |-D.

hast noch immer das Problem, dass durch die unterschiedliche
Schreib/Lesezeiten du bei mehreren aufeinanderfolgenden Zyklen Totzeiten
reinbringen wirst, wo Platten nix machen werden.

Hier kann ich Dir nicht folgen. Wenn Platten nichts tun - sind sie nicht der Engpaß |-D.

Wo ich mir nicht sicher bin, ob nicht immer alle Platten schreiben bzw. lesen an einem Chunk, ist ja die kleinste ansprechbare Einheit im Raid, i

Begriffsverwirrung (s.o.): Ein Chunk ist auf einer Platte, nicht die "horizontale" über alle Platten.


ich meine damit das wenn du eine kleinere Datenmenge als einen Chunk schreibst, muss ja zuerst den Chunk, wohinein du es schreiben willst, einlesen, modifizieren, und dann wieder schreiben und zwar auf allen Platten mit Daten + das Parity dann.

Ich glaube, Du hast da was falsch verstanden. Einmal schreiben bedeutet im schlimmsten Fall:
- Je einen Block von 2 Platten einlesen
- Genau an diesen Block (kurzes Seek) auf denselben Platten schreiben.
Keinesfalls musst alle Platten angreifen.

erklärt ja, dass du um die Parity zu berechen alle TeilChunks brauchst auch
die die du nicht modifizierst.

Genau das steht nicht da. Lies es nochmals. Es gibt 2 Wege. Nur einer der beiden braucht alle Teilchunks. Es wird aber immer der schnellere genommen.


Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.....
Re(5): raid profis hier?
08.08.2012, 16:26:54
Hier kann ich Dir nicht folgen. Wenn Platten nichts tun - sind sie nicht der
Engpaß

Doch, anders herum, sie sollten ja was machen, müssen aber auf die anderen Platten warten, bis sie fertig sind. Readahead funktioniert ja nur bis zu einer Gewissen Queuesize und Nebenläufigkeit
.
Begriffsverwirrung (s.o.): Ein Chunk ist auf einer Platte, nicht die
"horizontale" über alle Platten.

Chunk und Stripe sind nicht das Selbe, war ich nicht genau genug^^.
Genau das steht nicht da. Lies es nochmals. Es gibt 2 Wege. Nur einer der
beiden braucht alle Teilchunks. Es wird aber immer der schnellere genommen.

Zitat:If the writes are small and scattered all over the array, the RAID layer will almost always need to read in all the untouched chunks from each stripe that is written to, in order to calculate the parity chunk. Aber du hast Recht, wenn du die Parity aus dem Unterschied von alten Daten, neuen Daten und alter Parity berechnest, kann aber anscheinend nicht jeder Controller so. Bei 4+1 Platten kannst wennst nur einen Chunk schreibst, mit 2 Les und 2 Schreib den Stripe aktualisieren anstatt 3 Les und 2 Schreib (es sind ja n-2 Lesezugriffe, weil du Parity und alten Chunk,denn du ja schreiben willst, nicht lesen musst, davon ausgehen, dass du vorher ja die Daten die du schreiben willst, gelesen hast und modifierst hast in irgendeiner Form) sonst bist bei 4 Lesezugriffe wenn du keinen Cache hast oder wie oben du ständig random kleines Zeug machst, dass du den alten Chunk auch noch mitlesen musst. Der Unterschied wird natürlich mit der Anzahl an Platten größer. Bin mir jedoch nicht ganz sicher, warum die schreiben, dass sie trotzdem dann immer alle einlesen müssen und nicht die andere kürzere Methode nehmen.

Dein Vorschlag "Sektorgröße x 12=Chunk" - würde je nachdem 6KB oder 48KB
bedeuten. Da ich nie ein RAID für "normale Usage" unter 128KB anlege (meist
256KB) würde ich deine Bedingung jedenfalls erfüllen

Genau da liegt das Problem, 6Kb und 48 Kb gibts ja nicht es sind immer 2^n Blockgröße, dass heisst deine Chunkgröße ist nicht gleichverteilt auf die Platten, geht ja gar nicht. Wenn du Chunksize 128Kb anlegst, musst du sie durch 3 teilen, 42 kB, was nicht wirklich gut ansprechbar auf der Festplatte ist (82 Blöcke, 64 Blöcke optimal)
Zitat: A study showed that with 4 drives (even-number-of-drives might make a difference) that large chunk sizes of 512-2048 kB gave superior results.
2048kB/3=674kB dass durch die Blocksize der Platte ergibt 1317 (1024 optimal) Blöcke pro Chunk
512kB/3=170kB 333 Blöcke (256 optimal)
Aus dem wikiartikel: Unterschiedlich verhält sich hingegen z. B. ein RAID-5-System mit 4 Platten (3/4 Daten und 1/4 Parität), soll hier ein Block von 2048 Byte geschrieben werden, sind zwei Schreibvorgänge notwendig, es werden dann einmal 1536 Byte mit Well-Case-Performance geschrieben und noch einmal 512 Byte mit Worst-Case-Verhalten. Diesem Worst-Case-Verhalten wirken zwar Cache-Strategien entgegen, aber dennoch ergibt sich hieraus, dass bei RAID 5 möglichst ein Verhältnis von zwei, vier oder auch acht Platten für Nutzdaten plus einer Platte für Paritätsdaten eingehalten werden sollte. Daher haben RAID-5-Systeme mit 3, 5 oder 9 Platten ein besonders günstiges Performanceverhalten.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.......
Re(7): raid profis hier?
08.08.2012, 17:27:39
Denkfehler. Wenn meine Chunksize 128Kb ist, werden 128Kb auf die erste Platte
geschrieben, 128kB auf die nächste, ... Wenn ich also 4 Platten habe - werden
384kbB Daten +128Kb Parity geschrieben, um die 4 Platten voll zu beschäftigen.

Arg, natürlich. Jetzt ist nur mehr dir Frage, ob sich die 384kB gut verwalten lassen.

Du meinst, dass auf Platte 1 geschrieben werden soll, dies aber nicht klappt,
weil Platte 2 noch beschäftigt ist? Das ist kein Problem. Natürlich kann auf
Platte 1 geschrieben - und auf Platte 2 hinterher.

Sagen wir, wir haben jetzt unsere 4 Platten, die haben doppelt so schnelle Lese wie Schreibgeschwindigkeit. Du willst 4 Chunks schreiben, 2 auf der 1. Platte, 1 jeweils auf den anderen, auf der einen nix. Du brauchst 2 Les und 2 Schreib pro Chunk.

              2 Chunk  1 Chunk             1 Chunk
1Platte:  2 L 2 S     1L 1 S(parity)
2Platte:                  1L 1 S                1 L 1 S (Parity)
3Platte:                                            1 L 1 S
4Platte: 2 L 2 S (parity)

Also haben alle 2 L und 2 S ausser die erste, die kann ihren Rückstand erst aufholen, wenns die Platte 2 und 3 beschäftigst. Wenn nicht geräts weiter ins hintertreffen, vor allem wenns blöd läuft, und du auf einmal 2 oder 3 Chunks (alle Festplatten machen was) schreiben willst, kannst den Rückstand nicht mehr aufholen. Es muss einfach irgendwann gewartet werden, du kannst ja nur eine gewissen Anzahl an Schreiboperationen aufschieben.
Darum machts ja fürs Lesen alleine keinen Unterschied.
Bei 4+1 Platten hast das Problem ja nicht in dem Ausmaß.
Aus der Sicht von Platte 1 hat sie ja nur eine 25% Change, das der Chunk, der geschrieben wird, sie den Paritychunk machen muss und eine 20% Change, dass der nächste Chunk ihrer ist, bei 3+1 hat sie eine Change von 33% Parity und 25% Change nextChunk, 2+1 sinds 50% Parity und 33% nextChunk.


Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...
Re(3): raid profis hier?
08.08.2012, 17:11:21
Wie kommst Du bitte auf das? Ich sehe kein einziges Argument, warum ein RAID5 auf weniger Platten besser sein soll als auf mehr...


Ausgehend von Festplatten mit weniger als 2TB Plattenplatz, ist die atomare Blockgröße (auch Sektorgröße genannt) der Platten häufig 512 Byte (siehe Festplatte: Speichern und Lesen von Daten). Geht man weiter von einem RAID-5-Verbund mit 5 Platten (4/5 Daten und 1/5 Parität) aus, so ergibt sich folgendes Szenario: Will eine Anwendung 2048 Byte schreiben, wird in diesem günstigen Fall auf alle 5 Platten genau je ein Block zu 512 Byte geschrieben, wobei einer dieser Blöcke keine Nutzdaten enthält. Im Vergleich zu RAID 0 mit 5 Platten ergibt sich daraus eine Effizienz von 80 % (bei RAID 5 mit 3 Platten wären es 66 %). Möchte eine Anwendung nur einen Block von 512 Byte schreiben, so ergibt sich ein ungünstigerer Fall, es müssen zuerst der abzuändernde Block und der Paritätsblock eingelesen werden, danach wird der neue Paritätsblock berechnet und erst dann können beide 512-Byte-Blöcke geschrieben werden. Das bedeutet einen Aufwand von 2 Lesezugriffen und 2 Schreibzugriffen, um einen Block zu speichern. Geht man vereinfacht davon aus, dass Lesen und Schreiben gleich lange dauern, so beträgt die Effizienz in diesem ungünstigsten Fall, dem sogenannten RAID 5 write Penalty, noch 25 %. In der Praxis wird dieser Worst-Case-Fall bei einem RAID 5 mit 5 Platten aber kaum eintreten, denn Dateisysteme haben häufig Blockgrößen von 2 kB, 4 kB und mehr und zeigen daher praktisch ausschließlich das Well-Case-Schreibverhalten. Gleiches gilt analog für RAID 5 mit 3 Platten. Unterschiedlich verhält sich hingegen z. B. ein RAID-5-System mit 4 Platten (3/4 Daten und 1/4 Parität), soll hier ein Block von 2048 Byte geschrieben werden, sind zwei Schreibvorgänge notwendig, es werden dann einmal 1536 Byte mit Well-Case-Performance geschrieben und noch einmal 512 Byte mit Worst-Case-Verhalten. Diesem Worst-Case-Verhalten wirken zwar Cache-Strategien entgegen, aber dennoch ergibt sich hieraus, dass bei RAID 5 möglichst ein Verhältnis von zwei, vier oder auch acht Platten für Nutzdaten plus einer Platte für Paritätsdaten eingehalten werden sollte. Daher haben RAID-5-Systeme mit 3, 5 oder 9 Platten ein besonders günstiges Performanceverhalten.

http://de.wikipedia.org/wiki/RAID#RAID_5:_Leistung_.2B_Parit.C3.A4t.2C_Block-Level_Striping_mit_verteilter_Parit.C3.A4tsinformation

08.08.2012, 17:11 Uhr - Editiert von hellbringer, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung