[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