Installieren eine Boot Raids



Als erstes einen neue Festplatte einebauen. Es ist am besten wenn die Festpaltten identisch sind. Ist aber nicht zwanghaft da dies ein Softwareraid.

Hier ist eine Beispielkonfiguration wie die neue Platte partitioniert werden könnte:
/dev/hdc1 16 megs -- Für den kernel - der platz reicht für verschieden Kernel
/dev/hdc2 Swap Bereich - So viel bis 2x soviel wie Arbeitsspeicher in der Kiste ist. Manche Programme brauchen mehr davon da sie viel Speicher brauchen da muss diese Partiotion größer ausfallen
/dev/hdc3 Den Rest für das System und Programme

Als Partitionstyp muss bei der Partition /dev/hdc1 und /dev/hdc3 "fd" (raid-autostart) ausgewählt werden.
Dies Wird über fdisk gemacht

Es ist natürlich möglich das eure Festplatte anderst heißt nicht wie meine hdc. Dies hängt davon ab ob ihr eine IDE oder SCSI platte habt ( das d steht für IDE ein s steht für SCSI)
Des weiteren ist es dan wichtig an welchem Bus bzw welche ID die Festplatte hat.

Nun muss der Kernel raidfähig gemacht werden. Es ist möglich das bei manchen distributionen der support schon eingebaut ist. Es reicht nicht aus den Raidsuppoer nur als Moduls zu haben - Da sonnst nicht gebootet wreden kann.
Wenn kein support einbaut ist müsst ihr einen neuen Kernel erstellen.

Dies ist z.B. bei Debian der fall da der Raidsuppoert nur als Modul geladen werden kann.

Wenn man den Kernel selber macht müssen dan folgende Optionen ausgewählt werden:

unter Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
     <*> RAID support
     < > Linear (append) mode
     < > RAID-0 (striping) mode
     <*> RAID-1 (mirroring) mode
     < > RAID-4/RAID-5 mode
     < > Multipath I/O support
     < > Logical volume manager (LVM) support

Wenn ihr ein anders Raid machen wollt wir Raid 1 ( Spiegel ) damm müsst ihr das auswählen
Zu beaxhcten das wenn ihr nacher eine bootdisk erstellen wollt darf der Kernel nicht zu groß werden.
Alternativ erstellt ihr einen kleine Kernel z.B. ohne Netzwerk-unterstützung um nacher davon kirz zu booten.

Nun müssen die Raidtool installiert werden.

Meistens sind sie bei euer Distribution dabei. Aber schaut mal ob sie noch aktuell sind.
Wenn nicht ladet sie von www.kernel.org herunter (http://www.kernel.org/pub/linux/daemons/raid/).

Wenn ihr den source herunter geladen habt installiert einfach diese Befehle zum installiern ausführen:
tar xfz /tmp/raidtool-xxx.tar.gz
./configure
make
make install

Jetzt wird die konfiguration (/etc/raidtab) des Raid angelegt:
Wichtig: Die Erste Disk (hier: sda) hier noch als "failed-disk" makieren

# Beispiel raidtab
# md0 ist das root array
raiddev/dev/md0
raid-level1
nr-raid-disks2
chunk-size32
# Sicherheitsplatte
nr-spare-disks0
persistent-superblock1
device/dev/hdc3
raid-disk0
# Die alte platte - als def gekennzeichnet
device/dev/hda3
failed-disk1
# md1 ist das /boot array
raiddev/dev/md1
raid-level1
nr-raid-disks2
chunk-size32
# Spare disks for hot reconstruction
nr-spare-disks0
persistent-superblock1
device/dev/hdc1
raid-disk0
# boot is marked failed as well
device/dev/hda1
failed-disk1

Config zum downloaden

Nachem die Konfiguration erstellt wurden kann nun das Raid erstellt werden.

Erstellen des Raids

mkraid /dev/md0
mkraid /dev/md1

Das raid sollte mun erstellt werden. der status wird in der Datei /proc/mdstat angezeigt.

cat /proc/mdstst

Formatien des neuen Raids:

mke2fs /dev/md0
mke2fs /dev/md1

Hier wurden jetzt beide Partitionen zu ext2 formatiert. Es ist natürlich auch möglich andere Filesysteme zu benutzen.
Es muss lediglich ein andere Befehl benutzt werden.

z.B. für ReiserFS:

mkreiserfs /dev/md0

Mounted das neue Rootdevice händlisch und erstellet einen boot Ordner auf dem "raid-root" und mounte in diesen Ordner die "raid-boot" Partition.

mount /dev/md0 /mnt
mkdir /mnt/boot
mount /dev/md1 /mnt/boot

Kopiert das aktuelle Betriebsystem auf das neue Raid

Es müssen alle Verteichnisse außer /mnt und nfs verzeichnisse kopiert werden.
Grundsätzlich muss das Proc Verzeichniss nicht kopiert werden. Aber um komplikationen auszuwichen kopiert es einfach mit. Tut ja keinem weh ;)

Hier ein Beispiel mit Tar. Vorteil: Es werden ohne Probleme auch Links mitkopiert.

(cd /; tar cf - /bin /etc ..... [die anderen Verzeichnisse])|(cd /mnt; tar xf -)
cp -a /boot /mnt
cp /*.* /mnt

Nun legen wir eine Bootdisk mit dem neuen Kernel an. Dise wird benötigt um das Raid zum ersten mal zu booten.

Jedoch solltet ihr sie aufheben - Da bei einem Plattenausfall diese Diskette euch sehr helfen kann,
da ihr das System wieder Booten könnt egal welche Disk ausgefallen ist.

Wenn Ihr oben den Kernel heruntergeladen habt msst ihr nun die Bootdisk nehmen - da der normal Kernel zu groß für eine Floppy ist.

dd if=kernel.image of=/dev/fd0 bs=2k
rdev /dev/fd0 /dev/md0
rdev -r /dev/fd0 0
rdev -r /dev/fd0 1

Die /etc/fstab auf dem RAID device modifizieren - es müssen die raid devices eingetragen werden !!!
Die alten Einträge am besten mal remmen.

vi /mnt/etc/fstab
# /dev/hda3 / ext2 defaults 1 1
# /dev/hda3 /boot ext2 defaults 1 1
/dev/md0 / ext2 defaults 1 1
/dev/md1 /boot ext2 defaults 1 1

Nun die Raid Devices unmounten und das Raid stoppen und das system neu starten

umount /mnt/boot
umount /mnt
raidstop /dev/md0
raidstop /dev/md1
shutdown -r now

Das System wird nun rebooted.
Schiebt nun die Bootfloppy in das Laufwerk.
Bei der Debian Disk können netzwerkfehler autreten - da kein Netzwerksupport "eingebaut" ist.
Sollten hier Fehler auftreten, das System normal booten und noch mal alles absuchen.
der Lilo kann als Fehlerquelle ausgeschlossen werden da dieser and dieser Stelle nicht benutzt wird.

Die alte Platte hinzuziehen

Die alte Platte mit dem Befehl fdisk an die neue Platte (siehe oben) anpassen (gleiche größe) - Das ist Wichtig !!!
Sowie auch oben muss der Partiton Type für /dev/hda1 und /dev/hda3 auf gewechstelt "fd" (raid-autostart) werden.

Nachdem die Festplatte konfiguriert ist, kann sie nun auch in den Raid verbunt aufgenommen werden.

Mit den befehlen:

raidhotadd /dev/md1 /dev/hda1
raidhotadd /dev/md0 /dev/hda3

Jetzt die platten den jeweiligen Raids hinzugefügt.
Unter /proc/mdstat kann man den status der syncronisation betrachten.

Man sollte warten bis alle Platten fertig syncronisiert sind - Das kann auch ein bissel länger gehen

Konfiguration des Lilo

in der Datei Lilo.conf mussen folgende Einträge geändert oder eingetragen werden.

disk=/dev/md0
bios=0x80
boot=/dev/md1
root=/dev/md0
--- snip ---
image=/boot/RAID-kernel.image
root=/dev/md0
read-only
label=LinuxRaid

Falls von der 2 Disk gebootet werden soll müsst ihr bei bios=0x81 eintragen.
Falls es probleme bei Booten geben sollte - Dies kann älterne Systemen der fall sein die die Disk nicht automatisch erkenne - Müsst ihr ein paar Daten über eure Festplatte herausbekommen.
Dies geht wie folgt:
fdisk -ul /dev/hda (ist ein kleines L)

Dann solltest ihr so was zu sehen bekommen:
Disk /dev/hda: 16 heads, 63 sectors, 39770 cylinders
Units = sectors of 1 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 63 33263 16600+ fd Linux raid autodetect
/dev/hda2 33264 443519 205128 82 Linux swap
/dev/hda3 443520 40088159 19822320 fd Linux raid autodetect

Das Tragt ihr dann in die Lilo.conf ein:

sectors=63
heads=16
cylinders=39770

So sieht meine Lilo.conf aus:

disk=/dev/md0
bios=0x80
sectors=63
heads=16
cylinders=39770
partition=/dev/md1
start=63 #Der erste Sektor der /boot informationen enthält (nicht umbedingt notwendig)
boot=/dev/md1
map=/boot/map
install=/boot/boot.b
image=/boot/bzImage
root=/dev/md0
read-only
label=LinuxRaid

Danach den Befehl:
lilo
ausführen.

Anpassung der /etc/raidtab

Als letztes muss die Datei /etc/raidtab angepasst werden.
Hierzu werden ein paar Teile ersetzt:

diese Zeilen:
device /dev/hda2
faild-disk 1

gegen diese austauschen:
device /dev/hda2
raid-disk 1

Das gleiche noch mals:
device /dev/hda1
faild-disk 1

gegen:
device /dev/hda1
raid-disk 1

Troubelshoting

es kann sein das das system bei nächsten Reboot mit einem LI stehen bleibt ....

LÖSUNG:
System mit einer Startdiskette booten
wenn nötig alle Laufwerke mappen oder gar mit raidstart starten.
Danach den Lilo ausführen rebooten - sollte gehen

Testen

Um zu testen ob das Raid auch wiklich geht, fahrt den Pc runter, hängt die Disk hda ab und dafür die hdb als hda dran.
Danach sollte das System booten. Wennn nich einfach mit der oben erstellten Disk starten.
Wenn ihr die alte Disk wieder dazu nehmt ( natürlich den PC runterfahren ). Bootet er wieder von dieser.

Plase give me an Feedback

ver 1.2