AHRlug - Linux user group Ahrtal
Einrichtung SW-RAID unter openSUSE 11.0 Drucken E-Mail
Geschrieben von A. Dammers   
Samstag, 09. August 2008
Es soll ein Linux-Rechner mit einem Software-RAID, bestehend aus  zwei SCSI-Festplatten , unter openSUSE 11.0 aufgebaut werden.

Suse unterstützt zwar prinzipiell Software-RAIDs, nur kann es Probleme mit dem Bootmanager geben. Lilo kann, genauso wie GRUB, mit RAID-Arrays umgehen, jedoch nicht mit Raid-Arrays in der Version 1.0, so wie sie openSUSE ab Version 10.3 installiert. Also blieb hier nur GRUB als Bootmanager übrig.

Beim Installieren von GRUB mit dem openSUSE-Installer gab es zwar keine Fehlermeldung, aber der Rechner bootete anschliessend einfach nicht vom RAID-Array.

Das Problem wurde wie folgt umgangen:
Beide Festplatten wurden gleich partitioniert: (kleiner Bootbereich, Root-, Backup- und Swap-Partition.)  Bis auf den Bootbereich wurden alle in RAID1-Arrays zusammengefasst.
Der Bootmanager GRUB wurde in den Bootbereich (kein RAID !) der ersten Festplatte installiert. Erst später wurden beide Bootbereiche händisch auch zu einem RAID1-Array zusammengefasst.

Somit ergibt sich folgende (Anfangs-)Partionierung:

Anfangs-Partitionierung

/dev/md1     500MB   F  MD Raid                         swap      
/dev/md0     4,5GB    F  MD Raid (ext3)               /            
/dev/md2     3,2GB    F  MD Raid (ext3)               /backup            
/dev/sda      9,1GB      IBM                                         
dev/sda1    101,9MB   F  Linux Native (ext2)     /boot       
/dev/sda5     4,5GB       Linux RAID                     /dev/md0
/dev/sda6    502MB       Linux RAID                    /dev/md1
/dev/sda7     3,2GB       Linux RAID                     /dev/md2
/dev/sdb       9,1GB     IBM                         
/dev/sdb1  101,9MB   F  Linux Native (ext2)            
/dev/sdb5     4,5GB       Linux RAID                     /dev/md0
/dev/sdb6    502MB       Linux RAID                    /dev/md1
/dev/sdb7     3,2GB       Linux RAID                     /dev/md2

Und so soll es später aussehen:

/dev/md1     500MB   F  MD Raid                        swap      
/dev/md0     4,5GB    F  MD Raid (ext3)              /            
/dev/md2     3,2GB    F  MD Raid (ext3)              /backup            
/dev/md3    100MB    F  MD Raid (ext3)             /boot            
/dev/sda      9,1GB     IBM DNES-309170                                        
/dev/sda1 101,9MB       Linux RAID                    /dev/md3
/dev/sda5     4,5GB       Linux RAID                    /dev/md0
/dev/sda6    502MB       Linux RAID                   /dev/md1
/dev/sda7     3,2GB       Linux RAID                    /dev/md2
/dev/sdb       9,1GB    IBM DNES-309170                        
/dev/sdb1 101,9MB       Linux RAID                    /dev/md3 
/dev/sdb5     4,5GB       Linux RAID                    /dev/md0
/dev/sdb6    502MB       Linux RAID                   /dev/md1
/dev/sdb7     3,2GB       Linux RAID                    /dev/md2


-------------------------------------------------------------------------------------------------------------------------------------------------
Nachfolgend wird beschrieben, welche Schritte zu umwandeln von sda1 und sdb1 in ein RAID1-Array nötig sind, nachdem das Betriebssystem openSUSE 11 installiert wurde.

a) Sichern von /boot per dump nach z.B. /backup mit:  
    # dump -0f /backup/boot.dmp /boot
   (alternativ geht es auch mit tar o.ä.)

b) System ID der Partitionen sda1 und sdb1 ändern:
    # umount /boot     ( !!! ganz wichtig !!! )
    # fdisk /dev/sda
    > t  RET
    > 1  RET
    > fd RET
 
      ( Partition aktiv setzen )
    > a  RET
    > 1  RET
    > w  RET ( !!!Vorsicht!!! Schreibt die Tabelle! )
    #

   ( Dasselbe natürlich mit der zweiten Platte, hier /dev/sdb )

c) RAID-Set erzeugen:
    # mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sd[ab]1
    # mke2fs /dev/md3

d) Partition in /etc/fstab eintragen:  (/dev/sda1 muss gelöscht werden)
      /dev/md3             /boot                ext2       acl,user_xattr        1 2

e) Dump zurücksichern:
    # mount /boot
    # cd /boot
    # /sbin/backup -a -o -x -f  /backup/boot.dmp

f)  GRUB auf beide MBRs schreiben:
   # umount /boot
   # grub
      > find /grub/stage1
         hd(0,0)
         hd(1,0)
      > device (hd0) /dev/sda
      > root (hd0,0)
      > setup (hd0)
           ( hier erscheint die Ausgabe, dass Grub sich geschrieben hat )
      > device (hd0) /dev/sdb
      > root (hd0,0)
      > setup (hd0)
           ( dito für die zweite Platte )
      > quit
    #

g) UUID des RAID-Arrays (nicht das von der Partition) in mdadm.conf eintragen:
    echo "ARRAY /dev/md3 level=raid1"  >> /etc/mdadm.conf
    # mdadm --detail --scan | grep md3 | cut -f5 '-d ' >> /etc/mdadm.conf
    in mdadm.conf die letzten beiden Zeilen zusammenfügen so dass es so aussieht:
         ARRAY /dev/md3 level=raid1 UUID=e941580b:6a808de0:a0545fa4:ed10508e    


h) in /boot/grub/menu.lst unter Kernel=...  den Parameter "resume=/dev/md1"  tauschen
    gegen "noresume". Anschl. ausführen von "grub-install  /dev/sda"  und "grub-install /dev/sdb"
    Sonst ist md1 (Swap) für Suspend Snapshots reserviert und deshalb nicht als Swap
    benutzbar.
    D.h.  #mdadm --query --detail /dev/md1   -> sollte unter State:  „active“ und nicht „active,not Started“  anzeigen
    und  #cat /proc/mdstat     -> sollte nicht:  „active(auto-read-only)“   anzeigen.


i) rebooten
    # shutdown -r now

   
Anschliessend sollte man für Überwachungszwecke folgende Dienste aktivieren:
     (unter Yast2 -> System->SystemServices(Runlevel))
    - mdadmd     (Starten unter 3+5)
    - smartd       (Starten unter 2+3+5)

Mit einem Editor kann man in /etc/mdadm.conf  noch eine Mailadresse anfügen, an die  eine Fehlermeldung geschickt wird, sobald es Probleme mit dem Raid-Array gibt:
    z.B.:   MAILADDR  root@localhost

Das gleiche gilt für das SelfMonitoringTool „Smart“, also die Festplattenüberwachung.
Mit einem Editor hängt man an die gewünschte Zeile in /etc/smartd.conf folgendes an
        „-m root@localhost  -M test“
z.B.  DEVICESCAN -m root@localhost  -M test


Damit GRUB weiss, von welcher Partition/Platte er im Fehlerfall alternativ booten soll, kann man die zweite Festplatte als Fallback einstellen:

D.h. mit einem Editor in der Datei  /boot/grub/menu.lst einen Eintrag für die zweite FP machen.

z.B.:
  # Standard Booten von hd0
  default 0
  # Fallback auf hd1, falls hd0 scheitert
  fallback 1
  # Booten disc 0 kernel
  title openSUSE 11.0 - 2.6.25.9-0.2 Festplatte 1
    root (hd0,0)
    kernel /vmlinuz-2.6.25.9-0.2-pae root=/dev/md0 noresume splash=silent showopts vga=0x314
    initrd /initrd-2.6.25.9-0.2-pae
  # Booten disc 1 kernel
  title openSUSE 11.0 - 2.6.25.9-0.2 Festplatte 2
    root (hd1,0)
    kernel /vmlinuz-2.6.25.9-0.2-pae root=/dev/md0 noresume splash=silent showopts vga=0x314
    initrd /initrd-2.6.25.9-0.2-pae


Anschliessend muss noch folgendes ausgeführt werden:
"grub-install /dev/sda"  und
"grub-install /dev/sdb"


Siehe auch: http://web.archive.org/web/20040329235257/ http://www.tu-harburg.de/schiffbau/rzt/docs/raid.shtml

 
© AHRlug - Linux user group Ahrtal 2002 - 2012 | | powered by: linux | apache | php | mysql | joomla