• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Boot von einer RAID1 Platte nicht möglich

framp

Moderator
Teammitglied
Da ich auf meinem System ein RAID1 draufpacken will bin ich gerade dabei in einer VM Erfahrungen mit mdadm bzw RAID1 Konfiguration zu sammeln. Ich benutze dazu den Wiki Beitrag von robi sowie andere Seiten im Netz. Das RAID steht soweit - ich habe auch die root Partition reinkopiert und die menu.lst so erweiter, dass ich wahlweise von der Originalplatte wie auch der RAID-Platte booten kann. Blöderweise findet er beim Booten nicht das RAID1 Device md2. In der initrd ist aber das Module raid1 drin. Wenn ich von der NichtRAIDPlatte boot kann ich anschliessend auf das RAID zugreifen.

Hier im Wiki steht für SuSE 10.3 dazu
bei openSuse 10.3 sollten wir an dieser Stelle unbedingt einmal überprüfen ob das Initscript boot.md beim Booten gestartet wird, ansonsten sollten wir das jetzt hier entsprechend einrichten, bevor uns der Rechner bei einem Reboot ohne konfigurierte Raid-Device hängen bleibt.


Zum Testen ob das Script boot.md beim Start ausgeführt wird, reicht folgender Befehl

ls /etc/init.d/boot.d/*boot.md

kommt hier als Antwort

ls: cannot access /etc/init.d/boot.d/*boot.md: No such file or directory

dann ist folgender Befehl auszuführen damit das Script dann in Zukunft wirklich beim Booten nach Raiddevices sucht und diese startet.

insserv /etc/init.d/boot.md
Die gibt es unter openSuSE 11.2 leider nicht mehr :???:
 

spoensche

Moderator
Teammitglied
Das Script boot.md gibt es bei mir, mit 11.2, unter /etc/init.d/boot.md.

Hast du den Befehl insserv ausgeführt?
 

josef-wien

Ultimate Guru
framp schrieb:
dass ich wahlweise von der Originalplatte wie auch der RAID-Platte booten kann
Ich nehme an, "Originalplatte" bzw. "NichtRAIDPlatte" ist das ursprüngliche System und "RAID-Platte" das halbe RAID1.

spoensche schrieb:
Das Script boot.md gibt es bei mir, mit 11.2, unter /etc/init.d/boot.md.
Auf meiner 11.2-Probierpartition ist die Datei auch vorhanden.

framp schrieb:
Blöderweise findet er beim Booten nicht das RAID1 Device md2. In der initrd ist aber das Module raid1 drin.
Ist das Modul wirklich in der initrd des halben RAID1 enthalten? Wie sieht die menu.lst aus, mit der Du das halbe RAID1 starten willst? Welche Fehlermeldungen gibt es?
 

Tooltime

Advanced Hacker
rpm -qf /etc/init.d/boot.md sagt mdadm-3.0.2-2.2.i586.
Wenn also die Datei /etc/init.d/boot.md nicht vorhanden ist, wage ich mal die Prognose das ein nicht ganz unwichtiges Paket auf dem System fehlt um das RAID zu starten.
 
A

Anonymous

Gast
framp schrieb:
Blöderweise findet er beim Booten nicht das RAID1 Device md2. In der initrd ist aber das Module raid1 drin. Wenn ich von der NichtRAIDPlatte boot kann ich anschliessend auf das RAID zugreifen.

was ist auf md2 drauf root? swap? oder was anderes

wenn root oder swap dann mal zeigen was folgender Befehl ausgibt.
Code:
zcat /boot/initrd | cpio -ivt | grep md
/boot/initrd gegebenenfals anpassen, jedenfall die initrd mit der du md-raid booten willst.

robi
 
OP
framp

framp

Moderator
Teammitglied
:eek:ps: /etc/init.d/boot.md gibt es tatsächlich :eek:ps: Ich falle immer mal wieder darauf rein dass ls /etc/init.d/boot* auch den Inhalt der Unterverzeichnisse durchsucht und anzeigt - und ich nur auf die letzte Ausgabe achte...

Nachdem ich insserv eingegeben habe startet es immer noch nicht von md2. Die Fehlermeldung, die ich bekomme ist beim booten
Code:
Creating device nodes with udev
Trying manual resume from /dev/sda1
Invoking userspace resume from /dev/sda1
Trying manual resume from /dev/sda1
Invoking in-kernel resume from /dev/sda1
Waiting for device /dev/md2 to appear ................................. Could not find /dev/md2
Want me to fall back to /dev/sda2 (Y/n)
Und dann kann ich das System über sda2 (Die NichtRaidPlatte bzw das ursprüngliche System) starten.

ich nehme an, "Originalplatte" bzw. "NichtRAIDPlatte" ist das ursprüngliche System und "RAID-Platte" das halbe RAID1.
Ja. Meine menu.lst sieht so aus: (Der erste Eintrag wurde dupliziert und am Ende sda2 zu md2 geändert.
Code:
# Modified by YaST2. Last modification on Thu Jun 10 19:11:51 CEST 2010
# THIS FILE WILL BE PARTIALLY OVERWRITTEN by perl-Bootloader
# Configure custom boot parameters for updated kernels in /etc/sysconfig/bootloader

default 0
timeout 8
##YaST - generic_mbr
gfxmenu (hd0,1)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.2 - 2.6.31.5-0.1
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.31.5-0.1-default root=/dev/sda2 resume=/dev/sda1 splash=silent quiet showopts vga=0x314
    initrd /boot/initrd-2.6.31.5-0.1-default

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.2 - 2.6.31.5-0.1
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.31.5-0.1-default root=/dev/sda2 showopts apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe vga=0x314
    initrd /boot/initrd-2.6.31.5-0.1-default

###Don't change this comment - YaST2 identifier: Original name: floppy###
title Floppy
    rootnoverify (fd0)
    chainloader +1

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.2 - 2.6.31.5-0.1 - RAID
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.31.5-0.1-default root=/dev/md2 splash=silent quiet showopts vga=0x314
    initrd /boot/initrd-2.6.31.5-0.1-default
 
OP
framp

framp

Moderator
Teammitglied
robi schrieb:
was ist auf md2 drauf root? swap? oder was anderes
md2 ist root. ich habe nur erst einmal zum testen md2 raidiert.
wenn root oder swap dann mal zeigen was folgender Befehl ausgibt.
Code:
zcat /boot/initrd | cpio -ivt | grep md
drwxr-xr-x 2 root root 0 Jun 10 19:10 lib/modules/2.6.31.5-0.1-default/kernel/drivers/md
-rw-r--r-- 1 root root 37476 Oct 27 2009 lib/modules/2.6.31.5-0.1-default/kernel/drivers/md/raid1.ko
-rw-r--r-- 1 root root 1907 Jun 11 21:47 lib/udev/rules.d/64-md-raid.rules
/boot/initrd gegebenenfals anpassen, jedenfall die initrd mit der du md-raid booten willst.
Was muss ich da anpassen?

Weitere Infos:
Code:
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb2[1]
      5245120 blocks [2/1] [_U]

unused devices: <none>

Code:
fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000eec1e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         144     1156648+  82  Linux swap / Solaris
/dev/sda2   *         145         797     5245222+  83  Linux
/dev/sda3             798        1044     1984027+  83  Linux

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00008dbc

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         144     1156648+  82  Linux swap / Solaris
/dev/sdb2   *         145         797     5245222+  fd  Linux raid autodetect
/dev/sdb3             798        1044     1984027+  83  Linux

Disk /dev/md2: 5371 MB, 5371002880 bytes
2 heads, 4 sectors/track, 1311280 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
 

josef-wien

Ultimate Guru
In meiner initrd (11.1) steckt mehr drinnen:
Code:
gunzip -c /boot/initrd | cpio -ivt | grep md
drwxr-xr-x   2 root     root            0 Jan 17 22:04 lib/modules/2.6.27.42-0.1-pae/kernel/drivers/md
-rw-r--r--   1 root     root       152520 Jan  7 19:20 lib/modules/2.6.27.42-0.1-pae/kernel/drivers/md/raid456.ko
-rw-r--r--   1 root     root        10284 Jan  7 19:20 lib/modules/2.6.27.42-0.1-pae/kernel/drivers/md/raid0.ko
-rw-r--r--   1 root     root        28656 Jan  7 19:20 lib/modules/2.6.27.42-0.1-pae/kernel/drivers/md/raid1.ko
-rw-r--r--   1 root     root         1739 Jan 17 22:04 lib/udev/rules.d/64-md-raid.rules
-rw-r--r--   1 root     root           66 Jan 17 22:04 config/md.sh
-rw-r--r--   1 root     root          124 Jan 17 22:04 etc/mdadm.conf
-rwxr-xr-x   1 root     root       303620 Mar 18  2009 sbin/mdadm
24459 blocks
-rwxr-xr-x   1 root     root         1744 Mar 18  2009 boot/51-md.sh
Ändert sich der Inhalt der initrd, wenn Du sie noch einmal mit
Code:
mkinitrd -f md -d /dev/md2
erstellst?

Nachtrag 1: Auch unter 11.2 sind diese Dateien enthalten.

Nachtrag 2: Korrektur von Nachtrag 1.
 
A

Anonymous

Gast
framp schrieb:
drwxr-xr-x 2 root root 0 Jun 10 19:10 lib/modules/2.6.31.5-0.1-default/kernel/drivers/md
-rw-r--r-- 1 root root 37476 Oct 27 2009 lib/modules/2.6.31.5-0.1-default/kernel/drivers/md/raid1.ko
-rw-r--r-- 1 root root 1907 Jun 11 21:47 lib/udev/rules.d/64-md-raid.rules

siehe schon oben ;)

in der initrd sind zwar die Module für md aber noch keine Unterstützung dazu. Da fehlt noch die Konfigurationsdatei /etc/mdadm.conf
und noch das Script, (könnte sich "md.sh" nennen) und das binary von mdadm in der initrd.

Der Orignaltext dazu aus dem Wiki
Zum Schluss muss noch eine neue initrd mit den Informationen aus mdadm.conf und RAID-Unterstützung erstellt werden. Werden hierzu intern weiter Infos über das System benötigt, werden sie von den Scripten von mkinitrd automatisch selbst gesucht. Es reichen hier die Optionen Modul md und Rootfilesystem /dev/md0

automat:/ # mkinitrd -f md -d /dev/md0

Bei Erfolg sollte am Ende irgend etwas von einer Blockanzahl stehen.
Da sich bei mkinitrd in der Zwischenzeit einiges getan hat, ist es möglich das das so nicht mehr funktioniert. Wenn das so nicht geht, dann musst du hier eine chroot-Umgebung aufbauen, und von dort aus mkinitrd starten.

* /dev/md2 nach /mnt mounten
* die /etc/fstab anpassen
* mount --bind /dev /mnt/dev
* mount --bind /sys /mnt/sys
* mount --bind /proc /mnt/proc
* chroot /mnt
* eventuell noch alles andere mounten.
* mkinitrd
* eventuell noch grub wenn noch nicht geschehen.

robi
 
OP
framp

framp

Moderator
Teammitglied
mkinitrd -f md -d /dev/md2

Das wars :thumbs: (musste bei mir noch -d /dev/md3 anhängen da ich noch eine geraidete home Partition /dev/md3 in meiner VM habe ... aber das nur am Rande)

Danach konnte ich übers RAID booten und habe /dev/md2 als root gemountet. Jetzt muss ich noch die alte ungeraidete Partition einbinden - aber ich denke das ist wohl nicht mehr so schwer.

Thx für die Hinweise an Alle. Damit habt Ihr wieder einem mehr Details über mdadm und initrd beigebracht :)
 
OP
framp

framp

Moderator
Teammitglied
Also ich muss mich da mal Robi zu seinem Wiki Beitrag zum RAID aufsetzen bedanken. Hätte ich das alles Step-By-Step auf meiner Test VM gemacht hätte ich mein RAID ohne Probleme nach dieser Beschreibung auch unter openSuSE 11.2 aufsetzen können. Da ich mir aber verschiedene Sicherheiten ohne ein BackupRestore einbauen wollte bzw haben wollte bin ich von dem MainPfad abgewichen und habe deshalb meine Probleme bekommen.

Jetzt kann ich sehr schön eine Platte in der VM im laufenden Betrieb abhängen und alles läuft weiter (mdadm --detail /dev/md2 zeigt deutlich dass die Platte weg ist). Leider ist sie nach dem Connect in der VM nicht automatisch wieder eingehängt worden und ich musste es manuell mit mdadm /dev/md2 -a /dev/sdb2 machen.

Ausserdem wurde keine eMail an root trotz root Definition in /etc/mdadm.conf über den Ausfall geschickt - ist ja sehr wichtig!

Aber ansonsten funktioniert es - in meiner VM - sehr gut. Wenn jemand weiss warum ich keine eMail beim Abhängen einer Platte bekommen wäre ich über diese Info dankbar. Denn es ist nichts so dämlich wenn man ein RAID1 hat - aber erst nach dem Ausfall der zweiten Platte merkt dass schon die erste Platte ausgefallen ist :zensur:
 
A

Anonymous

Gast
Das hier ist auch gemacht ?

Damit die Devices überwacht werden und wir eine Mail bekommen können, müssen wir jedoch noch den mdadmd-Deamon starten, entweder über YaST oder mittels insserv

Code:
insserv /etc/init.d/mdadmd
und läuft auch ?
Code:
rcmdadmd status


robi
 
OP
framp

framp

Moderator
Teammitglied
Hm ... den insserv habe ich ausgeführt aber ein rcadadmd liefert nach einen Restart ein down. Da muss ich noch mal genauer nachsehen was los ist.
 

josef-wien

Ultimate Guru
framp schrieb:
musste bei mir noch -d /dev/md3 anhängen
Das war nicht erforderlich, dieser Parameter ist nur für die Systempartition erforderlich:
Code:
-d root_device

Root device, defaults to the device from which the root_dir is mounted; overwrites the rootdev enviroment variable if set
framp schrieb:
Leider ist sie nach dem Connect in der VM nicht automatisch wieder eingehängt worden und ich musste es manuell mit mdadm /dev/md2 -a /dev/sdb2 machen.
Meiner Meinung nach ist das die bessere Lösung. Mir würde es nicht gefallen, wenn z. B. eine bewußt entfernte Partition beim nächsten Systemstart automatisch wieder dazugehängt würde.

framp schrieb:
den insserv habe ich ausgeführt.
Da kommt es jetzt auf den Zeitpunkt an. Wenn es vor dem Kopieren der Dateien auf das "halbe RAID1" war, paßt es. Wenn es am gestarteten RAID1 war, paßt es auch. Wenn es dazwischen auf der "Originalplatte" war, dann ist es durch die Synchronisation wieder "verlorengegangen".
 
OP
framp

framp

Moderator
Teammitglied
josef-wien schrieb:
framp schrieb:
musste bei mir noch -d /dev/md3 anhängen
Das war nicht erforderlich, dieser Parameter ist nur für die Systempartition erforderlich:
Code:
-d root_device

Root device, defaults to the device from which the root_dir is mounted; overwrites the rootdev enviroment variable if set
War intuitive Induktion von mir - aber hat auch nicht geschadet ;-)
framp schrieb:
Leider ist sie nach dem Connect in der VM nicht automatisch wieder eingehängt worden und ich musste es manuell mit mdadm /dev/md2 -a /dev/sdb2 machen.
Meiner Meinung nach ist das die bessere Lösung. Mir würde es nicht gefallen, wenn z. B. eine bewußt entfernte Partition beim nächsten Systemstart automatisch wieder dazugehängt würde.
Da stimme ich Dir zu - ist sicherer das unter Kontrolle zu haben und die gefailte Platte erst mal zu prüfen und dann entweder wieder ins RAID einzuhängen oder durch eine neue Platte zu ersetzen. Nur ist dazu eine eMailNotification extrem wichtig - und da suche ich ja noch warum das bei mir nicht funktioniert :wink:
 
Oben