Outdatet! Zur neuen Fassung: SoftWareRAID


Howto: Software-RAID Level 1 (Mirror) unter Linux

Alte Fassung: raidtools

Dieses Howto beschäftigt sich mit der Einrichtung
eines Software-RAID Level 1 (Mirror) unter Linux.
Als Distribution kommt hier Slackware Linux 10.0
zum Einsatz.
In diesem Howto setze ich voraus:
Kenntnisse in der Benutzung der bash, cfdisk/fdisk
und wie ein Texteditor funktioniert. Außerdem ist es
ganz Hilfreich den Befehl 'man <Programm/Datei>' zu
kennen. Sollten Sie hier schon an Ihre Grenze stoßen:
Lassen Sie es!


Vorbereitung


1. Benötigte Hardware

Das Einrichten eines Software-RAID Level 1 benötigt
mindestens 2 möglichst identische Festplatten,
üblicherweise finden sich hier IDE (ATA)-Platten.

Diese sollten aus Performancegründen möglichst an
verschiedenen IDE-Strängen hängen, weil Software-RAID
ziemlich CPU-lastig ist.

2. Start

Installations-CD starten. Als Kernelimage verwende ich den
bareacpi.i, die anderen Verfügbaren Standardkernel solltens
aber auch tun, z.B. bare.i o.ä.

Wie gewohnt mit cfdisk/fdisk die
Platte hda oder hdb partitionieren. Ich persönlich habe
mich entschieden die Installation auf hdb (40 GB) mit ext3
als Dateisystem durchzuführen.

Meine Partitionierung sieht so aus:

/dev/hdb1 /boot ext3 40 MB
/dev/hdb2 swap 512 MB
/dev/hdb3 / ext3 10240 MB
/dev/hdb4 /home ext3 Rest

Dazu starte ich: cfdisk /dev/hdb, als Filesystemtypen lege
ich für hdb2 swap (82) und hdb1,3+4 ext3 (83) fest.

hda lasse ich noch unangetastet, das hole ich später nach.

Hier starte ich nun das Setup wie gewohnt. Als Installations-
methode habe ich 'full' ausgewählt, weil ich faul bin und
gerne alles auf Platte haben will.

Das kann jetzt ganz Normal bis zum Ende durchlaufen.

3. Der erste Start des frischen Linux

Bevor ich nun mein Linux das erste mal starte muß ich meinen
Bootloader, hier kommt LILO zum Einsatz, konfigurieren.

Als Methode wähle ich Expert, generiere eine frische
lilo.conf, lege den Installationsort des LILO fest (den
einer Diskette boot = /dev/fd0)und verrate dem Loader
noch, wo sich meine Root-Partition (root = /dev/hdb3)
versteckt. Nun kann LILO installiert werden.

Jetzt kann das System zum ersten Mal von Diskette gestartet werden.

4. Vorbereitung der ersten RAID-Platte

Nun bereite ich mit cfdisk hda für den RAID-Betrieb vor. Dazu
wird die Platte von der Größe und Lage der Partitionen identisch zu
hdb partitioniert. Als Filesystemtypen lege ich wieder auf hda2
swap (82) an, hda1,3+4 bekommen den Typen FD
verpasst (Linux RAID autodetect).

Jetzt muß eine Datei erstellt werden, in der die RAID-Devices, das
RAID-Level und diese Dinge festgelegt sind, und zwar ist das die
/etc/raidtab.

Folgender Inhalt:

# md0 is the boot-array
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
persistent-superblock 1
chunk-size 4
raid-disk 0
raid-device /dev/hda1
raid-disk 1
failed-disk /dev/hdb1

# md1 is the root-array
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
persistent-superblock 1
chunk-size 4
raid-disk 0
raid-device /dev/hda3
raid-disk 1
failed-disk /dev/hdb3

# md2 is the home-array
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
persistent-superblock 1
chunk-size 4
raid-disk 0
raid-device /dev/hda4
raid-disk 1
failed-disk /dev/hdb4

Die failed-Einträge habe ich absichtlich gesetzt um mir mein
funktionierendes "Ohne-RAID-Linux" bei der Erstellung der
RAID-Devices nicht zu zerstören.

Nun ist es an der Zeit die RAID-Devices zu erstellen:

mkraid /dev/md0
mkraid /dev/md1
mkraid /dev/md2

Formatieren:

mkfs.ext3 /dev/md0
mkfs.ext3 /dev/md1
mkfs.ext3 /dev/md2

Mountpoints erstellen:

mkdir /mnt/boot
mkdir /mnt/root
mkdir /mnt/home

Mounten der RAID-Partitionen:

mount /dev/md0 /mnt/boot
mount /dev/md1 /mnt/root
mount /dev/md2 /mnt/home

Kopieren der Dateien und Verzeichnisse:

cp -a /boot/* /mnt/boot
cp -a /home/* /mnt/home
cp -a /bin /mnt/root
cp -a /dev /mnt/root
cp -a /etc /mnt/root
...
usw.

Lediglich /proc und /mnt dürfen nicht kopiert werden.
Dafür erstelle ich jetzt Mountpoints:

mkdir -p /mnt/root/boot
mkdir -p /mnt/root/home
mkdir -p /mnt/root/mnt
mkdir -p /mnt/root/proc

Nicht vergessen: in /mnt sind auch die Mountpoints für z.B.
CD-ROM, Floppy, Brenner o.ä. angelegt. Diese bitte auch unter
/mnt/root/mnt anlegen, sonst gibts hinterher beim mounten dieser
Medien Probleme!

5. Vorbereitungen zum Start des RAID-Systems

Jetzt werden md0 und md2 aus- und anschließend in /mnt/root/boot
bzw. /mnt/root/home wieder eingehängt:

umount /dev/md0
umount /dev/md2
mount /dev/md0 /mnt/root/boot
mount /dev/md2 /mnt/root/home

An dieser Stelle muß nun die /mnt/root/etc/fstab sowie die
/mnt/root/etc/lilo.conf angepasst werden

In der fstab kommt ein zweiter Eintrag für die Swap-Partition hinzu,
dort wird nur das Device noch angepasst, so das dort /dev/hda2 und
/dev/hdb2 als Swap gemountet wird.

Geändert werden auch: /dev/hdb1 auf /dev/md0, /dev/hdb3 auf
/dev/md1 sowie /dev/hdb4 auf /dev/md2

Jetzt folgt die lilo.conf

Hier wird nur der Installationsort des LILO (boot=/dev/fd0 auf
boot=/dev/hda) und das Root-Device von root=/dev/hdb3 auf
/dev/md1 geändert.

Jetzt wird der Bootloader mit folgendem Kommando installiert:

/sbin/lilo -r mnt/root/

Mit dem Schalter -r und dem dahintergehängten Pfad wird LILO auf das
erstelle RAID gechrootet.

Nun noch das RAID aushängen

umount /dev/md0
umount /dev/md2
umount /dev/md1

und neu booten.

6. Start des RAID

Jetzt sollte das RAID gebootet werden. Wenn soweit alles funktioniert und
keine Fehler auftreten (Achtung: besser länger, also über einige Tage, testen)
kann nun die 2. Platte in das RAID aufgenommen werden.

Mittels cfdisk werden nun der Typ von hdb1,3+4 auf Linux RAID autodetect
(FD)
geändert.
In der /etc/raidtab jetzt noch die "failed"-Einträge durch "raid-device" ersetzen.

Durch

raidhotadd /dev/md0 /dev/hdb1
raidhotadd /dev/md1 /dev/hdb3
raidhotadd /dev/md2 /dev/hdb4

füge ich nun die Platte zum RAID hinzu.

Mit Eingabe von

cat /proc/mdstat

kann nun der Fortschritt bei der Einbindung in das RAID beobachtet werden.

Nach Abschluß sollte aus Redundanzgründen der LILO auch auf hdb installiert
werden, einfach in der /etc/lilo.conf den Eintrag boot=/dev/hda auf
boot=/dev/hdb
ändern und /sbin/lilo ausführen. Sollte nun hda versagen kann durch Auswahl
im BIOS das Bootdevice auf die zweite Festplatte geändert werden und das
System startet wieder.
Eine Ersatzplatte kann nun integriert werden. (Partitionieren, formatieren,
mittels raidhotadd einbinden.

Swap-Tuning:

Wenn man bei den Optionen der Swaps noch ein ",pri=1" (ohne die "") ergänzt
nutzt das System beide Swaps syncron. Das verbessert u.U. die Performance. Wenn
man die Swaps ans Ende der Platten verlegt steigert auch das u.U. nochmals die
Performance.




Copyleft BtU 6.10.2004. Überarbeitungsstand: 12.09.2007
Outdatet! Zur neuen Fassung: SoftWareRAID
Ich übernehme keine Garantien für Vollständigkeit oder Fehler!



Kategorien
CategoryTutorials
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki