Ich habe 10 Festplatten mit jeweils 8 TB in einem Hardware-RAID6 (also 8 Datenfestplatten + 2 Parität). Nach der Beantwortung einer sehr ähnlichen Frage hoffte ich auf eine automatische Erkennung aller notwendigen Parameter. Beim Erstellen des XFS-Dateisystems am Ende bekam ich jedoch
# mkfs.xfs /dev/vgdata/lvscratch
meta-data=/dev/vgdata/lvscratch isize=256 agcount=40, agsize=268435455 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=10737418200, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Dies sieht so aus, als ob kein Streifen verwendet wurde. Aufgrund der unterschiedlichen Begriffe, die ich auf verschiedenen Websites gefunden habe (Streifengröße, Streifengröße, Streifenblock, ...), möchte ich fragen, ob ich die manuellen Parameter richtig verstanden habe.
Das RAID 6 wurde mit einer Strip-Größe von 256 KB eingerichtet:
# ./storcli64 /c0/v1 show all | grep Strip
Strip Size = 256 KB
Somit beträgt die Streifengröße 8 · 256 KB = 2048 KB = 2 MB. Ist das richtig? Nach diesem (und wenn ich es richtig verstanden hat ), der pvcreate
muss das Band (oder Klumpen) Größe als Argument verwenden dataalignment
:
# pvcreate --dataalignment 256K /dev/sdb
Physical volume "/dev/sdb" successfully created
Beachten Sie, dass ich das gesamte RAID-Gerät ohne Partitionen verwendet habe. Nun a
# vgcreate vgdata /dev/sdb
Volume group "vgdata" successfully created
Bei einer Standard-PE-Größe von 4 MB sollte dies in Ordnung sein, da es sich um ein Vielfaches der Streifengröße von 2 MB handelt. Richtig?
Jetzt wird ein Teil der vgroup einem logischen Volume zugewiesen:
# lvcreate -L 40T vgdata -n lvscratch
Logical volume "lvscratch" created.
Schließlich wird das Dateisystem erstellt, aber jetzt mit den richtigen Argumenten (Streifengröße von 2 MB, Streifenbreite von 8):
# mkfs.xfs -d su=2048k,sw=8 /dev/vgdata/lvscratch
meta-data=/dev/vgdata/lvscratch isize=256 agcount=41, agsize=268434944 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=10737418240, imaxpct=5
= sunit=512 swidth=4096 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Ist dieser Ansatz richtig? Gibt es etwas zu beachten für eine Erweiterung des logischen Volumes oder der Volume-Gruppe? Ich nehme an, wenn die Volume-Gruppe mit einem anderen RAID6-System erweitert würde, sollte die Strip-Größe dem aktuellen RAID6 entsprechen.
EDIT : Meine Verwirrung scheint hauptsächlich auf der unterschiedlichen Verwendung von Begriffen zu beruhen, die mit Streifen verbunden sind. Der Hersteller meines RAID-Controllers, LSI oder Avago, definiert die Begriffe folgendermaßen :
Streifenbreite
Die Streifenbreite ist die Anzahl der Laufwerke, die an einer Laufwerksgruppe beteiligt sind, in der das Striping implementiert ist. Beispielsweise hat eine Laufwerksgruppe mit vier Festplatten und Festplattenstreifen eine Streifenbreite von vier.
Streifengröße
Die Stripe-Größe ist die Länge der verschachtelten Datensegmente, die der RAID-Controller auf mehrere Laufwerke schreibt, ohne Paritätslaufwerke. Stellen Sie sich beispielsweise einen Streifen vor, der 64 KB Speicherplatz enthält und 16 KB Daten auf jeder Festplatte im Streifen enthält. In diesem Fall beträgt die Streifengröße 64 KB und die Streifengröße 16 KB.
Streifengröße
Die Streifengröße ist der Teil eines Streifens, der sich auf einem einzelnen Laufwerk befindet.
Wikipedia (und IBM ) scheinen andere Definitionen zu verwenden:
Die Segmente sequentieller Daten, die auf eine Festplatte geschrieben oder von dieser gelesen werden, bevor die Operation auf der nächsten Festplatte fortgesetzt wird, werden normalerweise als Chunks, Strides oder Stripe Units bezeichnet, während ihre logischen Gruppen, die einzelne Striped-Operationen bilden, als Strips oder Stripes bezeichnet werden. Die Datenmenge in einem Block (Streifeneinheit), die häufig in Bytes angegeben wird, wird verschiedentlich als Blockgröße, Schrittgröße, Streifengröße, Streifentiefe oder Streifenlänge bezeichnet. Die Anzahl der Datenplatten im Array wird manchmal als Streifenbreite bezeichnet, kann sich aber auch auf die Datenmenge innerhalb eines Streifens beziehen.
Die Datenmenge in einem Schritt multipliziert mit der Anzahl der Datenplatten im Array (dh Streifentiefe mal Streifenbreite, die in der geometrischen Analogie eine Fläche ergeben würde) wird manchmal als Streifengröße oder Streifenbreite bezeichnet. Wide Striping tritt auf, wenn Datenblöcke auf mehrere Arrays verteilt sind, möglicherweise auf alle Laufwerke im System. Ein enges Striping tritt auf, wenn die Datenblöcke in einem einzigen Array auf die Laufwerke verteilt sind.
Auch im Wikipedia-Text oben wird die Streifengröße mit zwei unterschiedlichen Bedeutungen verwendet. Ich nehme jedoch an, dass beim Erstellen des xfs-Dateisystems die Größe eines einzelnen Blocks, der auf einem einzelnen Laufwerk gespeichert ist, als Argument für su angegeben werden muss. Dies sollte mkfs.xfs -d su=256k,sw=8
im obigen Befehl stehen. Richtig?
pvcreate
"s" erläutern--dataalignment
?