SelfLinux Systemverwaltung Linux Software-RAID HOWTO Abschnitt 5 | SelfLinux-0.13.0

| Linux Software-RAID HOWTO | Autor Formatierung GPL

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

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.

#### 5.1 Vorbereiten des Kernels für 0.4x

Der Standardkernel Ihrer Distribution besitzt prinzipiell schon gleich nach der Installation alle Optionen, um RAID-Devices zu erstellen.

Des weiteren 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:

Floppy, IDE, and other block devices --->

           [*] 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 --->:

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:

root@linux ~# make dep && make clean && make bzImage

Das Kompilieren und Installieren der Module nicht vergessen:

root@linux ~# 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

root@linux ~# 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.

#### 5.2 Erstellen eines RAID-0 Devices mit 0.4x

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 wie viele 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 zusammengefasst werden sollen.

root@linux ~# 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üssige Platz von der größeren Partition nicht genutzt und liegt damit brach auf der Festplatte.

Allgemein heißt das also, dass man für RAID-Devices jeder Art möglichst gleich große Partitionen benutzen sollte. Die Ausnahme bildet der Linear Modus, bei dem es wirklich egal ist, wie groß die einzelnen Partitionen sind.

Nun muss Linux noch erfahren, als was für ein RAID-Device es dieses /dev/md0 ansprechen soll:

root@linux ~# mdrun -p0 /dev/md0

Hierbei steht -p0 für RAID-0. Anschließend muss auf diesem neuen RAID-Device ein Dateisystem erstellt werden:

root@linux ~# mke2fs /dev/md0

Testweise kann man das RAID-Device nun nach /mnt mounten und ein paar kleine Kopieraktionen drüberlaufen lassen:

root@linux ~# 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:

root@linux ~# umount /mnt root@linux ~# mdstop /dev/md0

#### 5.3 Automatisierung mit 0.4x

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:

root@linux # 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

root@linux # mdadd -ar

erlaubt. Nun trägt man das RAID-Device (/dev/md0) noch unter /etc/fstab mit der Zeile

/etc/fstab

           /dev/md0 /mnt ext2 defaults 0 1

ein, wobei natürlich /mnt durch jeden beliebigen Mountpoint ersetzt werden kann. Ein

root@linux ~# 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ässlich 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.

/etc/init.d/bc.fsck_other

           #################################################
           # 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:

/etc/init.d/halt

           #################################################
           # 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.