[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Kernel mit SOFT-Raid1
- From: SPATZ1 t-online de (Frank Schneider)
- To: redhat-list-de redhat de
- Subject: Re: Kernel mit SOFT-Raid1
- Date: Thu, 27 Sep 2001 19:00:27 +0200
Guenter Glanzer moeller net schrieb:
>
> Hallo,
>
> Frank Schneider schrieb:
> >
> > Guenter Glanzer moeller net schrieb:
> > >
> > > Ich habe jetzt um das Problem mi dem SCSI zu umgehen (fuer den
> > > Test) ein System mit 2x IDE Platten aufgesetzt.
> > >
> > > Auch hier ist das gleiche Problem festzustellen. nach einem
> > > Kernel Rebuild kommt das System nicht mehr hoch :-(
> > >
> > > Hast du einen Vorschlag wie ich (mit welchen mindesteinstellungen)
> > > einen Testkernel kompilieren sollte - nur mal so zum testen
> > >
> > > also:
> > >
> > > make mrproper
> > > make menuconfig
> > >
> > > und nun alles rausgeben ausser:
> > >
> >
> > Das RAID-Zeugs (Also "Multiple Devices", auch die Unterpunkte "Raid
> > Autodetection", etc. müssen fest in den Kernel rein.
>
> Obwohl im Auslieferungszustand das RAID1 z.B als Modul installiert wrid
> ??
Ja, weil im Auslieferungszustand wird so ziemlich alles in eine INITRD
gepackt, weil man damit einen Kernel bekommt, der auf fast jedem System
hochkommt..er kann ja alles aus der INITRD nachladen.
Für den Normalbetrieb ist es aber (IMHO) nicht sinnvoll, eine INITRD zu
benutzen, erstens ist es eine Fehlerquelle mehr (sie muß korrekt
existieren, die Module darin müssen passen, etc.), zweitens macht es
keinen Sinn, Sachen als Module zu kompilieren, die man nacher einmal
lädt und dann nie mehr entladen *kann*...weil sie eben systemwichtig
sind. (SCSI-Treiber, RAID, evtl. Netzwerkkartentreiber)
> ein lsmod zeigt dies zumindest an.
>
> [root dhcps207 boot]# lsmod
> Module Size Used by
> soundcore 4272 0 (autoclean)
> binfmt_misc 6272 1
> autofs 10816 1 (autoclean)
> via-rhine 11328 1
> ipchains 36992 0
> hid 18608 0 (unused)
> input 3680 0 [hid]
> usb-uhci 21408 0 (unused)
> usbcore 50688 1 [hid usb-uhci]
> raid1 12960 3
>
Das heißt, das dein RAID-Support als Modul existiert...also beim Booten
aus der INITRD geladen wird.
[Platten stimmen soweit]
> raiddev /dev/md0
> raid-level 1
> nr-raid-disks 2
> chunk-size 64k
> persistent-superblock 1
> nr-spare-disks 0
> device /dev/hda1
> raid-disk 0
> device /dev/hdb1
> raid-disk 1
> raiddev /dev/md2
> raid-level 1
> nr-raid-disks 2
> chunk-size 64k
> persistent-superblock 1
> nr-spare-disks 0
> device /dev/hda6
> raid-disk 0
> device /dev/hdb6
> raid-disk 1
> raiddev /dev/md1
> raid-level 1
> nr-raid-disks 2
> chunk-size 64k
> persistent-superblock 1
> nr-spare-disks 0
> device /dev/hda5
> raid-disk 0
> device /dev/hdb5
> raid-disk 1
>
> > Sodann sollte der Kernel beim Booten die Platten-Partitionen finden und
> > die RAIDs anhand der Infos in den Superblöcken zusammensetzen.
> > (Oder sagen, warum das nicht geht...)
>
> Das tut er nicht wirklich ;-(
Vermutlich weil entweder der RAID-Support oder aber der Support für
"RAID Autodetection" nicht im Kernel ist.
> > Deine /etc/fstab muß natürlich das RAID auch wiederspiegeln, dein "/"
> > liegt dann auf /dev/md0 z.B....
>
> /dev/md0 / ext2 defaults
> 1 1
> none /dev/pts devpts gid=5,mode=620
> 0 0
> LABEL=/pool /pool ext2 defaults
> 1 2
> none /proc proc defaults
> 0 0
> none /dev/shm tmpfs defaults
> 0 0
> /dev/md1 swap swap defaults
> 0 0
> /dev/cdrom /mnt/cdrom iso9660
> noauto,owner,kudzu,ro 0 0
> /dev/fd0 /mnt/floppy auto
> noauto,owner,kudzu 0 0
>
> > Genauso muß in einer /etc/lilo.conf natürlich als ROOT-Device "/dev/md0"
> > (z.B.) drin sein.
>
> prompt
> timeout=50
> default=linux
> boot=/dev/md0
^^^^^^^^^
Da würde ich sagen, das das nicht stimmt...du versuchst damit, einen
Teil des LILO-Bootloaders in den MBR des RAID zu schreiben...das kann
aber nicht gehen, da zum Bootzeitpunkt noch gar kein RAID existiert.
Ich würde da mal /dev/hda eintragen, also eine der RAID-Platten.
Das ist übrigens AFAIK ein Problem des SoftRAID1 gegenüber einem
HardRAID1, wenn dir die /dev/hda kaputtgeht, so bootet das System nicht
mehr von selbst....du mußt dann händisch eingreifen, von Diskette
booten, die lilo.conf abändern (boot=/dev/hdb), und dann lilo aufrufen.
Alternativ die hdb zur hda machen (umjumpern) und nur lilo aufrufen.
Wohlgemerkt: Das System läuft zunächst weiter, lediglich nach einem
Reboot kann es Probleme geben.
> map=/boot/map
> install=/boot/boot.b
> message=/boot/message
> linear
>
> image=/boot/vmlinuz-2.4.7-2test
> label=linux
> read-only
> root=/dev/md0
Da gehört /dev/md0 rein....
> image=/boot/vmlinuz-2.4.7-2
> label=linux-orig
> initrd=/boot/initrd-2.4.7-2.img
> read-only
> root=/dev/md0
>
> > Dann sollte es klappen...
>
> Leider nicht wirklich ;-(((
>
> Ich habe jetzt einen Kernel so eingerichtet wie du
> es sagtest. wenn ich jedoch ein mkinitrd mache,
> dann kommt die Meldung RAID1 module fehlt ??????
Ja, weil er möchte das RAID-Modul in die INITRD packen...dieses
existiert aber nicht, da du RAID ja fest in den Kernel genommen
hast...das ist also normal.
> [root dhcps207 boot]# mkinitrd initrd-2.4.7-2test.img 2.4.7-2test
> No module raid1 found for kernel 2.4.7-2test
>
> Wobei mir das zwar logisch erscheint das es es nicht
> findet, denn ich habs fest eingebunden!
> Woher kommt aber dann diese Meldung -
> Sieht er im Speicher nach ob derzeit ein Modul geladen ist ??
> (den das wuerde ja stimmen)
Nein, er sucht das Modul unter /lib/modules/2.4.7-2test/... und findet
es da nicht.
> In der /etc/modules.conf steht nur:
>
> [root dhcps207 boot]# more /etc/modules.conf
> alias eth0 via-rhine
> alias parport_lowlevel parport_pc
> alias usb-controller usb-uhci
Das paßt auch...
> Nun habe ich wie du beschrieben hast die INITRD Zeile aus
> der LILO herausgegeben. Damit faehrt das System nun mal
> hoch (erster Erfolg - Danke) aber wenn ich das ganze unter
> SCSI machen moechte brauche ich doch die INITRD oder ??
Nein, auch nicht:
Wenn das System bootet, also der Kernel von LILO gestartet wird, so muß
dieser irgendwann das Root-Filesystem ("/") mounten, dazu braucht er
einen Treiber für das Festplattensubsystem und evtl. noch einen
RAID-Treiber, so dieses SoftRAID verwendet.
Diese Treiber können entweder fest im Kernel sein, dann ist das kein
Problem, der Kernel "bringt dann ja alles mit".
Die zweite Lösung ist, der Kernel mountet zuerst nicht das echte "/",
sondern eine RAM-Disk, eben die INITRD. In dieser RAM-Disk befinden sich
dann die nötigen Module, der Kernel lädt diese nach und kann dann
weitermachen.
Die zweite Lösung ist zum Installieren von Linux auf einem unbekannten
System einfacher, denn ich kompiliere mir einen Mini-Kernel, und
erstelle die INITRD mit den passenden Modulen während des
Installationsprozesses, das geht viel schneller als eine
Kernelkompilation mit einer angepaßten Konfig anzustoßen um damit einen
Kernel mit den richtigen "eingebauten" Treibern zu erhalten.
Funktionieren tun nacher beide Versionen und man merkt auch keinen
Unterschied, nur hat man halt im einen Fall das Problem, das die INITRD
passen muß...im anderen Fall muß "nur" der Kernel passen.
Für deinen Fall heißt das, das wenn du sowohl den SCSI-Treiber als auch
RAID fest in den Kernel reinnimmst, das du dann keine INITRD
brauchst...in diesem Fall solltest du auch in der lilo.conf keine
angeben, sonst wird evtl. versucht, denselben Treiber zweimal zu
laden...
Für das Zeug mit der INITRD und wie Linux bootet gibts übrigens eine
gute Howto, bei www.linuxdoc.org mal nach "Powerup" oder so suchen,
AFAIK heißt das Ding "From Powerup to bash" oder so, und es behandelt
genau die Problematik....
Solong..
mfg Frank.
--
Frank Schneider, <SPATZ1 T-ONLINE DE>.
Microsoft isn't the answer.
Microsoft is the question, and the answer is NO.
... -.-
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]