Dieses Kapitel bezieht sich auf die Erstellung von RAID-Verbunden unter Zuhilfenahme der alten MD-Tools Version 0.4x. Die aktuellen RAID-Tools Version 0.9x und der RAID-Patch werden in allen Einzelheiten im Abschnitt RAID-Verbunde mit den RAID-Tools Version 0.9x erstellen beschrieben.
Der Standardkernel Ihrer Distribution besitzt prinzipiell schon gleich nach der Installation alle Optionen, um RAID-Devices zu erstellen.
Desweiteren ist noch das Paket md-0.35-2.i386.rpm
nötig, welches zum
Beispiel für die DLD auf der ersten DLD CD unter delix/RPMS/i386/
zu finden ist. Auch wenn dieses Paket bei Ihrer Distribution eine andere
Versionsnummer haben sollte, können Sie es ruhig benutzen.
Der Vollständigkeit halber wird hier trotzdem auf die nötigen Kernel-Parameter hingewiesen:
Nach der Anmeldung als root, dem Wechsel in das Verzeichnis /usr/src/linux
und dem Aufruf von make menuconfig
sollte sich Ihnen das Menü mit den
unterschiedlichen Kerneloptionen präsentieren. Bitte benutzen Sie nicht make config
oder make xconfig
, da sich diese Beschreibung ausschließlich
auf make menuconfig
stützt.
Kernel 2.0.36
Unter dem Verweis »Floppy, IDE, and other block devices --->« werden je nach RAID Wunsch folgende Optionen benötigt:
[*] Multiple devices driver support
<*> Linear (append) mode
<*> RAID-0 (striping) mode
<*> RAID-1 (mirroring) mode
<*> RAID-4/RAID-5 mode
Kernel 2.2.x bis einschließlich 2.2.10
Hier stehen die RAID Optionen unter »Block devices --->«:
[*] Multiple devices driver support
<*> Linear (append) mode (NEW)
<*> RAID-0 (striping) mode (NEW)
<*> RAID-1 (mirroring) mode (NEW)
<*> RAID-4/RAID-5 mode (NEW)
[*] Boot support (linear, striped) (NEW)
Zusätzlich wird bei den 2.2.xer Kerneln bei der Auswahl des Linear oder RAID-0 Modes der Boot Support angeboten. Von RAID-1, 4 und 5 Devices kann mit den hier gegebenen Möglichkeiten nicht gebootet werden. Das funktioniert erst mit dem neuen RAID-Patch; siehe Abschnitt RAID-Verbunde mit den RAID-Tools Version 0.9x erstellen.
Nach Auswahl der nötigen Parameter erfolgt das »Backen« des Kernels mittels:
make dep && make clean && make bzImage
Das Kompilieren und
Installieren der Module nicht vergessen:
make modules && make
modules_install
Den Kernel zusammen mit der System.map
umkopieren
und zu guter Letzt den Aufruf von LILO nicht vergessen. Die Benutzer eines
SCSI-Kontrollers müssen noch die initiale RAM-Disk mittels
mkinitrd
/boot/initrd Kernelversion
erstellen, falls der SCSI-Kontroller als Modul
eingeladen wird.
Nach einem Neustart hat man nun alle Voraussetzungen erfüllt, um ein RAID-Device zu erstellen.
Die RAID-Arrays oder RAID-Verbunde werden nachher über /dev/md*
angesprochen. Bei der DLD 6.0 sind diese Devices bereits eingerichtet. Schauen
Sie zur Sicherheit unter /dev/
nach.
Jetzt wird das Erstellen eines RAID-Verbundes anhand eines RAID-0 Devices erklärt. Andere RAID-Modi lassen sich analog erstellen. Zuerst sollte man sich darüber im klaren sein, welche und wieviele Partitionen man zusammenfassen möchte. Diese Partitionen sollten leer sein; eine Einbindung von Partitionen, die Daten enthalten, welche nachher wieder zugänglich sein sollen, ist bisher meines Erachtens nicht möglich. Man sollte sich die Devices und ihre Reihenfolge nicht nur gut merken, sondern besser aufschreiben.
Als Beispiel werden die zwei SCSI-Festplatten /dev/sda
und
/dev/sdb
benutzt. Bei (E)IDE würden sie dann /dev/hda
,
/dev/hdb
heißen. Auf diesen Festplatten liegen nun zwei leere
Partitionen im erweiterten Bereich /dev/sda6
und /dev/sdb6
,
welche zu einem RAID-0 Device zusammengefaßt werden sollen.
mdadd /dev/md0 /dev/sda6 /dev/sdb6
Sind diese Partitionen nicht gleich groß, so ist der zu erwartende Geschwindigkeitsvorteil nur auf dem Bereich gegeben, der von beiden Partitionen abgedeckt wird. Zum Beispiel sind eine 200 MB große und eine 300 MB große Partition als RAID-0 Device nur über die ersten 400 MB doppelt so schnell. Die letzten 100 MB der zweiten Festplatte werden ja nun nur noch mit einfacher Geschwindigkeit beschrieben.
Wieder anders sieht das bei der Einrichtung eines RAID-1 Verbundes aus. Hierbei wird der überschüßige Platz von der größeren Partition nicht genutzt und liegt damit brach auf der Festplatte.
Allgemein heißt das also, daß man für RAID-Devices jeder Art möglichst gleich große Partitionen benutzen sollte. Die Außnahme bildet der Linear Modus, bei dem es wirklich egal ist, wie groß die einzelnen Partitionen sind.
Nun muß Linux noch erfahren, als was für ein RAID-Device es dieses
/dev/md0
ansprechen soll:
mdrun -p0 /dev/md0
Hierbei steht -p0
für RAID-0. Anschließend muß auf diesem neuen
RAID-Device ein Dateisystem erstellt werden:
mke2fs /dev/md0
Testweise kann man das RAID-Device nun nach /mnt
mounten und ein paar
kleine Kopieraktionen drüberlaufen lassen:
mount -t ext2 /dev/md0 /mnt
Hat man an den unterschiedlichen Festplatten jeweils einzelne LEDs, sieht man
jetzt schon sehr eindrucksvoll, wie das RAID arbeitet. Alle Daten, die ab jetzt
auf /dev/md0
geschrieben werden, nutzen den RAID-0 Modus.
Bevor der Rechner runtergefahren wird, müssen die RAID-Devices jedoch noch gestoppt werden:
umount /mnt
mdstop /dev/md0
Um nicht nach jedem Bootvorgang diese Prozedur wiederholen zu müssen, benötigt
man eine Datei /etc/mdtab
, welche - analog zu /etc/fstab
-
die Mountparameter enthält. Dies erledigt der Befehl:
mdcreate raid0 /dev/md0 /dev/sda6 /dev/sdb6
Dadurch wird die Datei /etc/mdtab
erstellt, welche zusätzlich noch
eine Prüfsumme enthält und das Aktivieren des RAID-Devices durch den einfachen
Befehl
mdadd -ar
erlaubt. Nun trägt man das RAID-Device (/dev/md0
) noch unter
/etc/fstab
mit der Zeile
/dev/md0 /mnt ext2 defaults 0 1
ein, wobei natürlich /mnt
durch jeden beliebigen Mountpoint ersetzt
werden kann. Ein
mount /mnt
führt nun auch zum Mounten des RAID-0 Devices.
Leider berücksichtigen die Init-Skripte der DLD 6.0 keine RAID-Devices, wodurch man noch einmal auf Handarbeit angewiesen ist. Inwieweit andere Distributionen bereits RAID-Verbunde berücksichtigen, sollten Sie durch einen Blick in die Startskripte feststellen und gegebenenfalls ähnlich den hier abgedruckten Beispielen anpassen.
Zum Starten des RAID-Devices ist es unerläßlich den, Befehl mdadd -ar
unterzubringen. Will man nicht von dem RAID-Device booten, so reicht es, den
Befehl in die Datei /etc/init.d/bc.fsck_other
eine Zeile über den
fsck
Befehl einzutragen.
#################################################
# Filesystem check und u.U sulogin bei Problemen
#################################################
if [ ! -f /fastboot ]
then
mini_text="Überprüfe Filesysteme..."
mini_startup "$mini_text" start
log_msg_buf=`(
mdadd -ar
fsck -R -A -a
) 2>&1`
fsck_result=$?
old_fsck_result=$fsck_result
[... Teile gelöscht ...]
#################################################
Analog sollte der Befehl mdstop -a
in die zuletzt ausgeführte Datei
nach dem umount
Befehl eingetragen werden. Bei der DLD heißt die Datei
/etc/init.d/halt
und sollte nach dem Eintrag an der richtigen Stelle
so aussehen:
#################################################
# Umount all FS
#################################################
mini_text="Die Filesysteme werden gelöst"
mini_shutdown "$mini_text" start
LC_LANG=C
LC_ALL=C
export LC_LANG LC_ALL
# Gib den sleeps der busy_wait_loops zeit sich zu beenden.
# sonst gibt es :/usr device busy.
sleep 1
umount -a
mdstop -a
mini_shutdown "$mini_text" stop 0
#################################################
Damit kann man nun recht komfortabel das RAID-Device benutzen.
Weitere RAID-Verbunde erstellt man auf dieselbe Weise, jedoch sind die Einträge in den Init-Skripten nur einmal zu setzen.