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 |
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.
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-level | 1 |
nr-raid-disks | 2 |
chunk-size | 32 |
# Sicherheitsplatte | |
nr-spare-disks | 0 |
persistent-superblock | 1 |
device | /dev/hdc3 |
raid-disk | 0 |
# Die alte platte - als def gekennzeichnet | |
device | /dev/hda3 |
failed-disk | 1 |
| |
# md1 ist das /boot array | |
raiddev | /dev/md1 |
raid-level | 1 |
nr-raid-disks | 2 |
chunk-size | 32 |
# Spare disks for hot reconstruction | |
nr-spare-disks | 0 |
persistent-superblock | 1 |
device | /dev/hdc1 |
raid-disk | 0 |
# boot is marked failed as well | |
device | /dev/hda1 |
failed-disk | 1 |
Nachem die Konfiguration erstellt wurden kann nun das Raid erstellt werden.
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 |
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.
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
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 |
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 |
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
Plase give me an Feedback
ver 1.2