

 
Mit dem Chunk-Size Parameter legt man die Größe der Blöcke fest, in die eine Datei zerlegt wird, die auf einen RAID-Verbund geschrieben werden soll. Diese ist nicht mit der Blockgröße zu verwechseln, die beim Formatieren des RAID-Verbundes als Parameter eines bestimmten Dateisystems angegeben werden kann. Vielmehr können die beiden verschiedenen Blockgrößen variabel verwendet werden und bringen je nach Nutzung unterschiedliche Geschwindigkeitsvor- wie auch -nachteile.
Nehmen wir das Standardbeispiel: RAID-0 (/dev/md0) bestehend aus 
/dev/sda6 und /dev/sdb6 soll als angegebene Chunk-Size in 
der /etc/raidtab 4 kB haben. Das würde heißen, daß bei einem 
Schreibprozeß einer 16 kB größen Datei der erste 4 kB Block und 
der dritte 4 kB Block auf der ersten Partition (/dev/sda6) 
landen würden, der zweite und vierte Block entsprechend auf der zweiten 
Partition (/dev/sdb6). Bei einem RAID, das vornehmlich große Dateien 
schreiben soll, kann man so bei einer größeren Chunk-Size einen kleineren 
Overhead und damit einen gewissen Performancegewinn feststellen. Eine 
kleinere Chunk-Size zahlt sich dafür bei RAID-Devices aus, die mit vielen 
kleinen Dateien belastet werden. Somit bleibt auch der »Verschnitt« in einem 
erträglichen Rahmen. Die Chunk-Size sollte also jeder an seine jeweiligen 
Bedürfnisse anpassen.
Der Chunk Size Parameter in der /etc/raidtab funktioniert für alle 
RAID-Modi und wird in Kilobyte angegeben. Ein Eintrag von »4« bedeutet also 
4096 Byte. Mögliche Werte für die Chunk-Size sind 4 kB bis 128 kB, 
wobei sie immer einer 2er Potenz entsprechen müssen.
Wie wirkt sich die Chunk-Size jetzt speziell auf die RAID-Modi aus?
Beim Linear Modus wirkt sich die Chunk-Size mehr oder minder direkt auf die benutzten Daten aus. Allgemein gilt hier, bei vielen kleinen Dateien eher eine kleine Chunk-Size zu wählen und umgekehrt.
Da die Daten auf ein RAID-0 »parallel« geschrieben werden, bedeutet hier eine Chunk-Size von 4 kB, daß bei einem Schreibprozeß mit einer Größe von 16 kB in einem RAID-Verbund aus zwei Partitionen die ersten beiden Blöcke parallel auf die beiden Partitionen geschrieben werden und anschließend die nächsten beiden wieder parallel. Hier kann man auch erkennen, das die Chunk-Size in engem Zusammenhang mit der verwendeten Anzahl der Partitionen steht. Eine generelle optimale Einstellung kann man also nicht geben. Diese hängt vielmehr vom Einsatzzweck des RAID-Arrays in bezug auf die Größe der hauptsächlich verwendeten Dateien, der Anzahl der Partitionen und den Einstellungen des Dateisystems ab.
Beim Schreiben auf ein RAID-1 Device ist die verwendete Chunk-Size für den »parallelen« Schreibprozeß unerheblich, da sämtliche Daten auf beide Partitionen geschrieben werden müssen. Die Abhängigkeit besteht hier also wie beim Linear-Modus von den verwendeten Dateien. Beim Lesevorgang allerdings bestimmt die Chunk-Size, wie viele Daten zeitgleich von den unterschiedlichen Partitionen gelesen werden können. Der Witz ist hierbei, daß alle Partitionen dieselben Daten enthalten (Spiegel-Partitionen eben) und dadurch Lesevorgänge wie eine Art RAID-0 arbeiten. Hier ist also mit einem Geschwindigkeitsgewinn zu rechnen.
Hier beschreibt die Chunk-Size die Größe der Paritätsblöcke auf der Paritäts-Partition, welche nach dem eigentlichen Schreibzugriff geschrieben werden. Wird auf einen RAID-4 Verbund 1 Byte geschrieben, so werden die Bytes, die die Blockgröße bestimmen, von den RAID-4 Partitionen abzüglich der Paritäts-Partition (X-1, wobei X die Gesamtzahl der RAID-4 Partitionen ist) gelesen, die Paritäts-Information berechnet und auf die Paritäts-Partition geschrieben. Die Chunk-Size hat auf den Lesevorgang denselben geschwindigkeitsgewinnenden Einfluß wie bei einem RAID-0 Verbund, da der Lesevorgang auf eine ähnliche Weise realisiert ist.
Beim RAID-5 Verbund bezeichnet die Chunk-Size denselben Vorgang wie beim RAID-4. Eine allgemein vernünftige Chunk-Size läge hier zwischen 32 kB und 128 kB, jedoch treffen auch hier die Faktoren wie Nutzung des RAIDs und verwendete Partitionen auf den Einzelfall zu und die Chunk-Size sollte dementsprechend angepaßt werden.
Bei dieser Art des RAID-Verbundes bezieht sich die Chunk-Size auf alle integrierten RAID-Verbunde, also beide RAID-0 Verbunde und das RAID-1 Array. Als Richtwert kann man hier 32 kB angeben - experimentieren ist hierbei natürlich wie bei allen anderen RAID-Modi auch ausdrücklich erlaubt.
Die Option »-R stride=nn« von mke2fs erlaubt es, 
verschiedene ext2 spezifische Datenstrukturen auf eine intelligentere 
Weise auf das RAID zu verteilen. Ist die Chunk-Size mit 32 kB 
angegeben, heißt das, daß 32 kB fortlaufende Daten als Block auf dem 
RAID-Verbund liegen. Danach würde der nächste 32 kB Block kommen. Will 
man ein ext2 Dateisystem mit 4 kB Blockgröße erstellen, erkennt man, 
daß acht Dateisystemblöcke in einem Verbundblock (Chunk Block; durch Chunk-Size 
angegeben) untergebracht werden. Diese Information kann man dem ext2 
Dateisystem beim Erstellen mitteilen:
mke2fs -b 4096 -R stride=8 /dev/md0 
Die RAID-4 und RAID-5 Performance wird durch diesen Parameter erheblich beeinflußt. Das Benutzen dieser Option ist dringend anzuraten.
Hier werden nur der neue RAID-Kernel-Patch in Verbindung mit den passenden RAID-Tools Version 0.9x und der entsprechenden Kernel-Version beschrieben. Die älteren RAID-Tools der Version 0.4x finden keine Berücksichtigung. Der Kernel-Patch sollte installiert sein. Ebenso sollten die RAID-Optionen im Kernel aktiviert sein und der Kernel neu kompiliert und neu gebootet sein.
Der Linear Modus verbindet mehrere Partitionen unterschiedlicher Größe zu einem Gesamtverbund, der allerdings nicht parallel, sondern nacheinander beschrieben wird. Ist die erste Partition voll, wird auf der nächsten weitergeschrieben. Dadurch sind weder Performancevorteile zu erwarten noch eine gesteigerte Sicherheit. Im Gegenteil. Ist eine Partition des Linear-Verbundes defekt, ist meist auch der gesamte Verbund hinüber.
Die Parameter der /etc/raidtab für einen Linear-Verbund sehen so aus: 
raiddev /dev/md0
        raid-level              linear
        nr-raid-disks           2
        persistent-superblock   1
        chunk-size              4
        device                  /dev/sda6
        raid-disk               0
        device                  /dev/sdb6
        raid-disk               1 
Zu beachten ist hier, daß der Linear Modus keine Spare-Disks unterstützt. Was das ist und was man unter dem Persistent-Superblock versteht, finden Sie im Abschnitt Weitere Optionen der neuen RAID-Patches. Der Parameter »Chunk-Size« wurde bereits in diesem Abschnitt weiter oben erläutert.
Initialisiert wird Ihr neues Device mit folgendem Kommando:
mkraid -f /dev/md0
Danach fehlt noch ein Dateisystem:
mke2fs /dev/md0
Schon können Sie das Device überall hin mounten und in die /etc/fstab 
eintragen.
Sie haben sich entschlossen, mehrere Partitionen unterschiedlicher Festplatten zusammenzufassen, um eine Geschwindigkeitssteigerung zu erzielen. Auf die Sicherheit legen Sie dabei weniger Wert, jedoch sind Ihre Partitionen alle annähernd gleich groß.
Ihre /etc/raidtab sollte daher etwa so ausehen: 
raiddev /dev/md0
        raid-level              0
        nr-raid-disks           2
        persistent-superblock   1
        chunk-size              4
        device                  /dev/sda6
        raid-disk               0
        device                  /dev/sdb6
        raid-disk               1
Hier werde genauso wie beim Linear Modus keine Spare-Disks unterstützt. Was das ist und was man unter dem Persistent-Superblock versteht, wird im Abschnitt Weitere Optionen der neuen RAID-Patches erläutert.
Initialisiert wird Ihr neues Device mit folgendem Kommando:
mkraid -f /dev/md0
Danach fehlt noch ein Dateisystem:
mke2fs /dev/md0
Schon können Sie das Device überall hin mounten und in die /etc/fstab 
eintragen.
Ein RAID-1 Verbund wird auch als »Spiegelsystem« bezeichnet, da hier der gesamte Inhalt einer Partition auf eine oder mehrere andere gespiegelt und damit eins zu eins dupliziert wird. Wir haben hier also den ersten Fall von Redundanz. Desweiteren können hier, falls es erwünscht ist, zum ersten mal Spare-Disks zum Einsatz kommen. Diese liegen pauschal erstmal brach im System und werden erst um Ihre Mitarbeit bemüht, wenn eine Partition des RAID-1 Verbundes ausgefallen ist. Spare-Disks bieten also einen zusätzlichen Ausfallschutz, um nach einem Ausfall möglichst schnell wieder ein redundantes System zu bekommen.
Die /etc/raidtab sieht in solch einem Fall inkl. Spare-Disk so aus:
raiddev /dev/md0
        raid-level              1
        nr-raid-disks           2
        nr-spare-disks          1
        chunk-size              4
        persistent-superblock   1
        device                  /dev/sda6
        raid-disk               0
        device                  /dev/sdb6
        raid-disk               1
        device                  /dev/sdc6
        spare-disk              0
Weitere Spare- oder RAID-Disks würden analog hinzugefügt werden. Führen Sie hier nun folgendes Kommando aus:
mkraid -f /dev/md0
Mittels cat /proc/mdstat können Sie wieder den Fortschritt und den 
Zustand Ihres RAID-Systems erkennen. Erstellen Sie das Dateisystem mittels 
mke2fs /dev/md0
sobald das RAID sich synchronisiert hat.
Theoretisch funktioniert das Erstellen des Dateisystems bereits während sich das RAID-1 noch synchronisiert, jedoch ist es vorläufig sicherer, mit dem Formatieren und Mounten zu warten, bis das RAID-1 fertig ist.
Sie möchten mehrere, aber mindestens drei etwa gleich große Partitionen 
zusammenfassen, die sowohl einen Geschindigkeitsvorteil als auch erhöhte 
Sicherheit bieten sollen. Das Verfahren der Datenverteilung beim Schreibzugriff 
ist hierbei genauso wie beim RAID-0 Verbund, allerdings 
kommt hier eine zusätzliche Partition mit Paritätsinformationen hinzu. Fällt 
eine Partition aus, so kann diese, falls eine Spare-Disk vorhanden ist, sofort 
wieder rekonstruiert werden; fallen zwei Partitionen aus, ist aber auch hier 
Schluß und die Daten sind verloren. Obwohl RAID-4 Verbunde eher selten 
eingestezt werden, müßte Ihre /etc/raidtab dann so aussehen:
raiddev /dev/md0
        raid-level              4
        nr-raid-disks           3
        nr-spare-disks          0
        persistent-superblock   1
        chunk-size              32
        device                  /dev/sda6
        raid-disk               0
        device                  /dev/sdb6
        raid-disk               1
        device                  /dev/sdc6
        raid-disk               2
Möchten Sie Spare-Disks einsetzen, so werden sie analog der Konfiguration des RAID-1 Devices hinzugefügt, also:
        nr-spare-disks  1                
        device          /dev/sdd6       
        spare-disk      0       
Der Grund dafür, daß RAID-4 Verbunde nicht oft eingesetzt werden, liegt daran, daß die Paritäts-Partition immer die gesamten Daten des restlichen - als RAID-0 arbeitenden - Verbundes schreiben muß. Denkt man sich einen Extremfall, wo zehn Partitionen als RAID-0 arbeiten und eine Partition nun die gesamten Paritätsinformationen speichern soll, so wird unweigerlich deutlich, daß die Paritäts-Partition schnell überlastet ist.
Initialisiert wird Ihr neues Device so:
mkraid -f /dev/md0
Danach fehlt noch ein Dateisystem:
mke2fs /dev/md0
Schon können Sie das Device überall hin mounten und in die /etc/fstab 
eintragen.
Ein RAID-5 Verbund löst nun das klassische RAID-4 Problem elegant, indem es die 
Paritätsinformationen gleichmäßig über alle im RAID-5 Verbund laufenden 
Partitionen verteilt. Hierdurch wird der Flaschenhals einer einzelnen 
Paritäts-Partition wirksam umgangen, weshalb sich RAID-5 als Sicherheit und 
Geschwindigkeit bietender RAID-Verbund großer Beliebtheit erfreut. Fällt eine 
Partition aus, beginnt das RAID-5, falls Spare-Disks vorhanden sind, sofort 
mit der Rekonstruktion der Daten, allerdings kann RAID-5 auch nur den Verlust 
einer Partition verkraften. Genauso wie beim RAID-4 sind beim zeitgleichen 
Verlust zweier Partitionen alle Daten verloren. Eine /etc/raidtab für 
ein RAID-5 Device sähe folgendermaßen aus:
 
raiddev /dev/md0
        raid-level              5
        nr-raid-disks           3
        nr-spare-disks          2
        persistent-superblock   1
        parity-algorithm        left-symmetric
        chunk-size              64
        device                  /dev/sda6
        raid-disk               0
        device                  /dev/sdb6
        raid-disk               1
        device                  /dev/sdc6
        raid-disk               2
        device                  /dev/sdd6
        spare-disk              0
        device                  /dev/sde6
        spare-disk              1
Bei diesem Beispiel sind gleich zwei Spare-Disks mit in die Konfiguration aufgenommen worden.
Der Parameter »parity-algorithm« legt die Art der Ablage der Paritätsinformationen fest und kann nur auf RAID-5 Verbunde angewendet werden. Die Auswahl »left-symmetric« bietet die maximale Performance. Weitere Möglichkeiten sind »left-asymmetric«, »right-asymmetric« und »right-symmetric«.
Initialisiert wird Ihr neues Device so:
mkraid -f /dev/md0
Danach fehlt noch ein Dateisystem:
mke2fs /dev/md0
Schon können Sie das Device überall hin mounten und in die /etc/fstab 
eintragen.
Die Kombination aus RAID-1 und RAID-0 Verbunden kann sehr flexibel eingesetzt 
werden, ist aber mit Vorsicht zu genießen. Man muß hierbei genau darauf achten, 
welche RAID-Partitionen in welchen RAID-Verbund eingebaut werden sollen. Um 
allerdings die nötige Redundanz gewährleisten zu können, sind hierfür 
mindestens vier RAID-Partitionen auf unterschiedlichen Festplatten nötig. Als 
Beispiel erstellen wir zwei RAID-0 Verbunde über jeweils zwei verschiedene 
RAID-Partitionen, die anschließend per RAID-1 gespiegelt werden sollen. Eine 
passende /etc/raidtab ohne Spare-Disks sähe dann so aus:
raiddev /dev/md0
        raid-level              0
        nr-raid-disks           2
        nr-spare-disks          0
        persistent-superblock   1
        chunk-size              4
        device                  /dev/sda6
        raid-disk               0
        device                  /dev/sdb6
        raid-disk               1
raiddev /dev/md1
        raid-level              0
        nr-raid-disks           2
        nr-spare-disks          0
        persistent-superblock   1
        chunk-size              4
        device                  /dev/sdc6
        raid-disk               0
        device                  /dev/sdd6
        raid-disk               1
raiddev /dev/md2
        raid-level              1
        nr-raid-disks           2
        nr-spare-disks          0
        persistent-superblock   1
        chunk-size              4
        device                  /dev/md0
        raid-disk               0
        device                  /dev/md1
        raid-disk               1
Jetzt gilt es aber ein paar Kleinigkeiten zu beachten, denn anders als bei den 
anderen RAID-Verbunden haben wir hier gleich drei RAID-Arrays erstellt, wobei 
man sich überlegen muß, welches denn nun nachher überhaupt gemountet und mit 
Daten beschrieben werden soll. Die Reihenfolge ergibt sich aus der Datei 
/etc/raidtab. /dev/md0 wird nacher auf /dev/md1 gespiegelt. 
Jedes Devices muß für sich erstellt werden:
mkraid -f /dev/mdx
Ein Dateisystem per mke2fs wird nur auf /dev/md0 und 
/dev/md1 erstellt. 
Die beste Reihenfolge ist, erst das Device /dev/md0 zu erstellen, zu 
formatieren und zu mounten. Dann wird /dev/md1 erstellt und 
formatiert. Dieses bitte nicht mounten, da ja hier keine Daten drauf 
geschrieben werden sollen. Zuletzt wird nun mittels
mkraid -f /dev/md2
das RAID-1 Array erstellt, jedoch sollte man hier wirklich kein Dateisystem erstellen. Ab jetzt kann man mittels
cat /proc/mdstat
die Synchronisation der beiden RAID-0 Verbunde /dev/md0 und 
/dev/md1 verfolgen. Ist die Synchronisation abgeschlossen, werden 
alle Daten, die auf /dev/md0 geschrieben werden, auf /dev/md1 
gespiegelt. Aktiviert, gemountet und in die Datei /etc/fstab 
eingetragen wird letzthin nur /dev/md0. Natürlich könnte man auch 
/dev/md1 mounten, jedoch sollte man sich für ein Device 
entscheiden. Ausgeschlossen ist allerdings das Mounten von /dev/md2.


