Inhalt

5. RAID-Verbunde mit den RAID-Tools Version 0.4x erstellen

Dieses Kapitel bezieht sich nur auf die Erstellung von RAID-Verbunden unter Zuhilfenahme der alten MD-Tools. Die aktuellen RAID-Tools Version 0.9x und der RAID-Patch werden im Abschnitt RAID-Verbunde mit den RAID-Tools Version 0.9x erstellen beschrieben.

5.1 RAID-0 Device unter der DLD 6.0 erstellen

Vorbereiten des Kernels

Der Standardkernel 2.0.36 der DLD 6.0 besitzt prinzipiell schon gleich nach der Installation alle Optionen, um RAID-Devices zu erstellen. Will man allerdings die Root-Partition als RAID-Device benutzen, so ist man auf den neueren 2.2er Kernel zwar auch nicht unbedingt angewiesen, jedoch erleichtert dieser Kernel die Bootprozedur durch zusätzliche Parameter erheblich.

Desweiteren ist noch das Paket md-0.35-2.i386.rpm nötig, welches auf der ersten DLD CD unter delix/RPMS/i386/ zu finden ist.

Auch wenn der Standardkernel der DLD 6.0 bereits die RAID Unterstützung enthält, wird hier trotzdem auf die nötigen 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 hier bei Auswahl von Linear oder RAID-0 Mode 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.

Erstellen eines RAID-0 Devices

Die Multiple Devices oder RAID-Devices, was dasselbe bezeichnet wie das RAID-Array oder den RAID-Verbund, werden nachher über /dev/md* angesprochen. Bei der DLD 6.0 sind diese Devices bereits eingerichtet.

Hier wird das Erstellen eines RAID-Devices 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 heißen sie dann /dev/hda, /dev/hdb usw. Auf diesen Festplatten liegen nun zwei leere Partitionen im erweiterten Bereich /dev/sda6 und /dev/sdb6, welche zu einem RAID-0 Device zusammenfaß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.

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

Automatisierung

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.

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-Devices erstellt man auf dieselbe Weise, jedoch sind die Einträge in den Init-Skripten nur einmal zu setzen.

5.2 RAID-5 Device unter der DLD 6.01 erstellen

Hier wird von einem frisch installiertem Linux DLD 6.01 ausgegangen. Die DLD 6.01 wird mit dem Kernel 2.2.3 ausgeliefert, der bereits die RAID Unterstützung im Kernel enthält. Nähere Informationen zum Konfigurieren des Kernels unter der DLD finden Sie am Anfang dieses Kapitels.

Zwar bringt die DLD 6.01 bereits einen Satz RAID-Tools mit, durch die man in der Lage wäre, einen RAID-Verbund zu erstellen, jedoch ist das Erstellen eines RAID-Verbundes aufgrund eines Fehlers im RPM-Paket nicht möglich. Statt dessen sollten Sie sich von

ftp.kernel.org:/pub/linux/daemons/raid/alpha/
folgende Archive holen:

Diese passen zu der Kernel Version der DLD 6.01. Nehmen Sie keine aktuelleren oder älteren Archive.

Nun wird der RAID-Patch nach /usr/src/linux-2.2.3 kopiert und dort mittels

patch -p1 < raidpatchfilename
in den Sourcetree eingearbeitet. Es sollten nun etwa 20 Dateien kopiert und teilweise geändert werden.

Nach 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. Hier aktivieren Sie unter »Block devices --->« folgende Optionen:

[*] Multiple devices driver support
[*] Autodetect RAID partitions
< > Linear (append) mode
< > RAID-0 (striping) mode
< > RAID-1 (mirroring) mode
<*> RAID-4/RAID-5 mode
< > Translucent mode
< > Logical Volume Manager support (NEW)
[*] Boot support (linear, striped)

Da immer wieder einige Fehler durch modularisierte RAID-Optionen auftauchen, nehmen Sie sich an den obigen Einstellungen ein Beispiel und kompilieren Sie den benötigten RAID-Support erstmal fest in den Kernel ein.

Passen Sie nun noch alle übrigen Kerneleinstellungen Ihren Wünschen an, verlassen Sie das Menü und kompilieren Sie Ihren neuen Kernel:

make dep && make clean && make bzImage && make modules 
make modules_install

Die Benutzer eines SCSI-Kontrollers sollten daran denken, die initiale RAM-Disk mittels

mkinitrd /boot/initrd Kernelversion

neu zu erstellen, falls der SCSI-Kontroller als Modul eingeladen wird. Anschließend noch den neuen Kernel und die System.map Datei umkopieren, die /etc/lilo.conf bearbeiten, lilo ausführen und das System neu starten.

Ihr Kernel unterstützt nun alle nötigen RAID Optionen.

Weiter geht es mit den RAID-Tools. Entpacken Sie die RAID-Tools z.B. nach /usr/local/src, führen Sie das enthaltene Konfigurationsskript aus und kompilieren Sie die Tools:

./configure && make && make install

Die RAID-Tools stellen Ihnen zum einen (unter anderem) die Datei mkraid zur Verfügung und erstellen zum anderen die /dev/md0-15 Devices.

Ob Ihr Kernel die RAID Optionen wirklich unterstützt, können Sie mittels

cat /proc/mdstat

in Erfahrung bringen. Diese Pseudodatei wird auch in Zukunft immer Informationen über Ihr RAID System enthalten. Ein Blick hierher lohnt manchmal. Zu diesem Zeitpunkt sollte zumindest ein Eintrag enthalten sein, der Ihnen zeigt, das die RAID Personalities registriert sind.

Die Multiple Devices oder RAID-Devices, was dasselbe bezeichnet wie das RAID-Array oder den RAID-Verbund werden nachher über /dev/md* angesprochen.

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 nun auf jeder Festplatte die in das spätere RAID aufgenommen werden soll eine Partition eingerichtet. Für ein RAID-5 sind dafür mindestens drei Partitionen nötig.

Die Grundkonfiguration der zu erstellenden RAID-Devices werden nun unter /etc/raidtab gespeichert. Diese Datei enthält alle nötigen Angaben für ein oder mehrere RAID-Devices. Generelle Hilfe findet man in den Manual Pages von raidtab und mkraid. Eine /etc/raidtab Datei für ein RAID-5 System müßte so aussehen:

raiddev /dev/md0
        raid-level              5
        nr-raid-disks           3
        nr-spare-disks          0
        persistent-superblock   1
        parity-algorithm        left-symmetric
        chunk-size              32

        device                  /dev/sdb1
        raid-disk               0
        device                  /dev/sdc1
        raid-disk               1
        device                  /dev/sdd1
        raid-disk               2

Sind die Eintragungen in Ordnung, kann das RAID mittels

mkraid /dev/md0

gestartet werden. War auf diesen Partitionen bereits ein altes RAID-System vorhanden, dann müssen Sie mkraid mit der force Option benutzen:

mkraid -f /dev/md0

Die Einrichtung des RAID erfolgt im Hintergrund und kann mit

cat /proc/mdstat

verfolgt werden. Ist die Einrichtung erfolgt sollte ein cat /proc/mdstat etwa folgendes liefern:

Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0] 782080 blocks level 5, 4k chunk,
algorithm 2 [3/3] [UUU]
unused devices: <none>

Formatieren Sie Ihr neues Device:

mke2fs /dev/md0

Dieses Device kann nun - wie jedes andere Blockdevice auch - irgendwo in den Verzeichnisbaum gemountet werden:

mount /dev/md0 /mnt

Wenn das geklappt hat, muß noch die Systemeinrichtung für shutdown und Aktivieren beim Booten eingebaut werden. Erstmal sollte man das per Hand testen:

umount /mnt oder umount /dev/md0
raidstop /dev/md0

Ein cat /proc/mdstat muß jetzt so aussehen:

Personalities : [raid5]
read_ahead 1024 sectors
unused devices: <none>

Wenn das geht, dann war die Einrichtung erfolgreich und man kann den Vorgang in der Datei /etc/init.d/halt automatisieren:

# Umount all FS
#######################################
mini_text="Die Filesysteme werden gelöst"
mini_shutdown "$mini_text" start
LANG=C
LC_ALL=C
export LANG LC_ALL
# Gib den sleeps der busy_wait_loops zeit sich zu beenden.
# sonst gibt es :/usr device busy.
sleep 5
umount -a
raidstop /dev/md0
mini_shutdown "$mini_text" stop 0
#######################################

Sollten Sie doch gerne die RAID-Kernel-Option als Modul laden wollen, müssen Sie in /etc/conf.modules das raid5 Modul zum automatischen Laden eintragen:

alias md-personality-4 raid5

Das RAID muß nun noch in /etc/init.d/bc.fsck_other gestartet werden.

#######################################
if
[ ! -f /fastboot ]
then
mini_text="Überprüfe Filesysteme..."
mini_startup "$mini_text" start
log_msg_buf=`(
raidstart -a
fsck -R -A -a
) 2>&1`
fsck_result=$?
old_fsck_result=$fsck_result
if [ $fsck_result -eq 1 ]
then
mini_startup "$mini_text" stop 0
else
mini_startup "$mini_text" stop $fsck_result
fi
fi
#######################################

Nun kann man das System getrost neu booten.

Alternativ kann man allerdings auch den im Kapitel RAID-Verbunde mit den RAID-Tools Version 0.9x erstellen beschriebenen Weg gehen und die neue »Autodetect« Option des RAID-Kernelpatches nutzen. Wie das genau funktioniert, erfahren Sie dort.


Inhalt