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.
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.
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
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.
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:
raidtools-19990724-0.90.tgz
raid0145-19990309-2.2.3
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.