[Eisfair] [e64] LSI MegaRaid Controller Treiber/Utils ?
D. Oezbilen
oezbilen at gmx.net
Fr Nov 6 02:13:14 CET 2020
Hallo Thomas,
> Laut manpage ist es genau andersherum:
ich habe vor Jahren viiiiiiiiiiiiiel darueber gelesen; was auch mir
dabei klar wurde, diese Begriffe werden nicht einheitlich verwandt
(strip/stride/chunk, Hersteller-Abhaengigkeit), deswegen sollte man
genau nachlesen, was/wie gemeint ist. Dann ... ist/war es die Kunst die
Parameter fuer mkfs richtig anzuwenden, dass diese ueberhaupt angenommen
wurden.
XFS wird nachgesagt, dass es sehr intelligent sniffert, auf was es
fusst, aufgesetzt ist und ohne grosse Parameteruebergabe sich der
darunter liegenden Schicht anpasst.
Ich wollte es begreifen und habe viele, sehr viele Dokus dazu gelesen.
> Du musst die chunk-size durch die 4k Blocks teilen um den stride zu
> erhalten:
> Der stride wäre in dem Beispiel also 128k / 4k = 32
> Die stripe-width dementsprechend 32 * 4 (HDDs) = 128
Schau, was hpacucli ausgibt:
Logical Drive: 1
Size: 1.1 TB
Fault Tolerance: 1+0
Heads: 255
Sectors Per Track: 63
Cylinders: 65535
Strip Size: 128 KB
Full Stripe Size: 512 KB
Status: OK
Hier sind 8 Platten in R10.
Wenn ich deinen Weg rechne:
128kB (Chunk/Strip[Size, s.u.]) / 4 = 32kB
32kB*4 => 128 waere der (ganze) Stripe, nennen wir das Band, was
gleichzeitig ueber vier/4 HDs geschrieben werden kann. 128 != 512, was
s.o. der Controller meldet, sog. Full Stripe Size = Band.
Mit
mkfs.ext4 -L deb -v -E stride=128,stripe-width=512 /dev/sda2
wird man bei der Anlage des FS der HW gerecht.
Ich behaupte mal hier ;-), dass
mkfs.ext4 -L deb -v -E stride=128,stripe-width=128 /dev/sda2
*nicht* angenommen wird(?). check pls.
Diese o.a. Werte sind aber fuer das FS interessant, damit die FS-Bloecke
auf dem HW-Raid genauso aufgeteilt sind, wie die HW (s.o.) diese Arbeit
umsetzt, eine 1:1 Umsetzung. Damit der Controller nicht nochmal eine
Runde dreht -gezwungen v. FS- etwas anderes umsetzt, konstruiert, was er
per HW *nicht* abdecken kann.
Die Blocksize des FS ist bei der Anlage des HW-Raids *nicht* primaer v.
Belang. Einzig, wie gross die Subeinheit ist (you named it) und wieviel
HDs effektiv schreiben. _Spaeter_ kann man das FS ausrichten nach dieser
Struktur zu arbeiten.
IMHO, ein stripe/chunk/strip/sunit (strip != stripe, s.o. hacucli, ist
bunt) ist die Subeinheit mit der der RaidController an einer _einzelnen_
Platte arbeitet. Daher ruehrt auch die Performance, der wird gleich vier
Mal diese 128k los, alle vier koennen autark annehmen und so weiter.
Bei R10, kann auch die zweite Riege/Reihe einen Teil liefern, wenn die
Dateigroesse den Chunk ueberschreitet.
Der LSI gibt fuer ein VD dies aus:
Adapter 1 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :VD_0123456_r5
RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
Size : 2.268 TB
Sector Size : 512
Parity Size : 464.729 GB
State : Optimal
Strip Size : 256 KB
Number Of Drives : 6
Die Blockgroesse ist hier *nicht* aufgefuehrt, sprich auch nicht bei der
Anlage leitend.
Diese Parameter sollten auch -mit den *richtigen* Begriffen- an das FS
uebergeben werden.
Auf diesem Konstrukt liegt dann ein FS, was evtl. mit einer Blocksize v.
2k oder groesser (oder noch grosser) formatiert/ausgerichtet ist. Wenn
Du eine Datei hast, die 3kB ist, landet diese auf der ersten HD, fertig.
Hast Du eine Datei 65kB, belegt diese Datei drei der vier strips/chunks
bei 32kB Subeinheit des HW-Raids (obiges Beispiel mit acht in R10 und
4kB Blockgroesse ist von der Optik etwas unguenstig, weil die 4 mal
hier, mal da auftaucht).
So koennen z.B. vier 2,5 Zoll 7.2 drehende Platten im r10 Verband auch
Beachtliches leisten, wie konstant 240-250MB/s beim Kopieren v. Dateien
zu liefern, die viel groesser sind als der Hauptspeicher, somit
ist/waere ein Caching ausgeschlossen. Alleine brechen die irgendwann ein
und krebsen weit unter 100 MB/s (auch wenn es eine 2,5 WD Black ist)
Etwas komplizierter wird es, wenn man auf ein Raid ein __gestriptes__
(wieder das Wort, s.o. ;-)) LV (mit -i, --stripes) aufsetzt. Dann noch
ist auf dieses logical-Volume ein FS (ext4/xfs) anzubringen. So muessen
_drei_ Ebenen ausgerichtet sein. Geht, ist etwas Kopfarbeit (oder Doku
heranziehen, die man mal fuer sich geschrieben hat ;-)).
Aber, vllt. habe ich es auch null/gar nicht verstanden. ;-)
Gruss
Derya
Mehr Informationen über die Mailingliste Eisfair