Aktuelle Änderungen - Suchen:

FAQs

HowTo


Glossar

Links

edit SideBar

Tagcloud



Debian Slug Raid 1

Raid1 unter DebianSlug einrichten

Debian Raid 1 How to

S. Märkl - 21.02.2006

1. Zweck

2. Vorbereitung

3. Firmware flashen

4. Raid 1 einrichten

5. Bootstrap

6. Anmerkungen

7. Quellen

8. Danksagung


1. Zweck

Zweck dieser Beschreibung ist das einrichten eines Software Raid 1 mit Hilfe eines Debian Firmware Image. Ausgehend von zwei leeren USB Festplatten, die in diesem How to jeweils 300 GB haben.


2. Vorbereitung

Als erstes braucht man eine Raid enabled Debian Firmware die man von hier: http://www.student-zw.fh-kl.de/~pasc0010/ downloaden kann. Zudem braucht man noch das Programm zum Firmware flashen das man hier bekommt : http://www.sercomm.com/web/download.nsf/cd9678c311095856482566a5000aac9e/7f17bf7344cfc12f482566aa00389845/$FILE/Upgrade_207_XP.exe . Zudem brauch man zwei identisch große Festplatten, hier 300 GB.


3. Firmware flashen

  • Das runtergeladene Upgrade Utility installieren
  • Die NSLU2 ausschalten, evtl. vorhandene Festplatte abstecken.
  • Reset Taste am hinteren Gehäuseteil drücken und gedrückt lassen und dann die NSLU2 einschalten und warten bis die oberste Lampe rot blinkt - dann Reset Taste loslassen
  • Upgrade Utility starten und den Netzwerk Adapter auswählen der im Moment mit dem Netzwerk verbunden ist.
  • Im Upgrade Utility den Button mit den zwei Pfeilen drücken und die MAC Adresse des Gerätes auswählen
  • Button Files drücken und das runtergeladene, entpackte und nach .BIN umbenannte Firmware Image auswählen
  • Upgrade / Gerät jetzt auf keinen Fall ausschalten
  • Nach erfolgreichem Flash startet die NSLU2 neu und bootet das Debian Firmware Image
  • Upgrade Utility beenden
  • Putty (http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe) oder anderen SSH Client starten
  • Die neue IP-Adresse der NSLU2 herausfinden, denn nach einem Firmware Flash startet die NSLU2 im DHCP Modus (war auf alle Fälle bei mir so) Es gibt ein Tool (NMAP) um herauszufinden was für IP-Adressen im localen Netz verfügbar sind http://download.insecure.org/nmap/dist/nmap-4.01-win32.zip . Das Tool ist über die CMD zu starten z.B.: C:\programme\nmap\nmap -sP 192.168.1.0/24
  • Im SSH Client die IP-Adresse eingeben und starten
  • Anmelden mit root und opeNSLUg als Passwort
  • Die Festplatten jeweils an einen USB Port anschließen und ca. 30 sec. warten
  • Fertig!!

4. Raid 1 einrichten

  • Als erstet werden die Festplatten gleich partitioniert Fdisk /dev/sda
    • Evtl. vorhandene Partitionen löschen
    • Neue Partition mit „n(/dev/sda1) primär Startblock 1 Endblock 220 (bei mir sind das ca. 1.8GB das reicht bei weiten für das RootFS)
    • Weitere Partition mit „n(/dev/sda2) primär Startblock 221 Endblock 282 (sind ca. 500 MB für Swap)
    • Weitere Partition mit „n(/dev/sda3) primär Startblock 283 Endblock (bis zum Ende) (je nach Größe bei mir waren es 297 GB)
    • Angelegte Partitionen mit „t“ nach „fd“ in „Linux raid autodetect“ umwandeln
    • Danach sollte es mit “p” so aussehen: Disk /dev/sda: 320.0 GB, 320072933376 bytes
 255 heads, 63 sectors/track, 38913 cylinders 
 Units = cylinders of 16065 * 512 = 8225280 bytes 
 Device Boot     Start        End        Blocks   Id     System 
 /dev/sda1           1         220    1767118+    fd     Linux raid autodetect 
 /dev/sda2         221         282      498015    fd     Linux raid autodetect 
 /dev/sda3         283       38913    310303507+  fd     Linux raid autodetect
  • Partitionen mit „w“ schreiben und „q“ für beenden
  • Mit den gleichen Angaben die zweite Festplatte partitionieren (/dev/sdb)
  • Dann diese Befehle ausführen (ohne # natürlich) # mknod /dev/md3 b 9 3
 # mknod /dev/md2 b 9 2
 # mknod /dev/md1 b 9 1
  • Wenn dieses erledigt ist geht es weiter mit diesen Befehlen # mdadm --create --level=1 --raid-devices=2 /dev/md1 /dev/sdb1 /dev/sda1
 # mdadm --create --level=1 --raid-devices=2 /dev/md2 /dev/sdb2 /dev/sda2 
 # mdadm --create --level=1 --raid-devices=2 /dev/md3 /dev/sdb3 /dev/sda3 

Der letzte Befehl ist sehr zeitintensiv, denn es kann wie in meinem Fall 9 - 10 Stunden dauern!!, ja genau - richtig gelesen 9 - 10 Stunden dauert es bis die große Datenpartition erstellt ist. In dieser Zeit am besten die NSLU2 nicht anfassen, ausschalten oder angucken, denn wenn es zu einem Fehler beim erstellen des Raid’s gibt, kann es sein das die Festplatten in einem nicht wiederherstellbaren Status verfallen. Das wiederum ist auch kein Scherz, ich habe bereits zahlreiche Berichte darüber gelesen. Mit dem Befehl: # cat /proc/mdstat kann man aber trotzdem dem Raid syncronisier Status zusehen und sich entspannt zurücklegen (oder schlafen gehen)

  • So wenn die 9 - 10 Stunden vorbei sind sollte über den Befehl: # cat /proc/mdstat

folgendes zu sehen sein: Personalities : [raid1]

 md3 : active raid1 sda3[0] sdb3[1] 
          310303424 blocks [2/2] [UU] 
 md2 : active raid1 sda2[0] sdb2[1] 
          497920 blocks [2/2] [UU] 
 md1 : active raid1 sda1[0] sdb1[1] 
          1767040 blocks [2/2] [UU] 
 unused devices: <none>
  • Danach erstellt und startet man die Swap Partition über # mkswap /dev/md2
 # swapon /dev/md2
  • Mit den nächsten Befehlen wird das Filesystem (ext3) auf das Raid geschrieben # mke2fs -j /dev/md1
 # mke2fs -j /dev/md3 

Das schreiben des Filesystems auf /dev/md3 kann auf einer normalen NSLU2 minimal ca. 12 Minuten dauern

  • Einrichten der /etc/mdadm.conf mit # echo "DEVICE /dev/sd[ab][123]" > /etc/mdadm.conf
 # mdadm --detail --scan >> /etc/mdadm.conf 

Diese zwei Befehle erzeugen eine /etc/mdadm.conf die nun so aussehen sollte: DEVICE /dev/sd[ab][123]

 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=67b6d7a3:5edf1793:724a117a:40e26693
 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=57aa400c:0ded363b:73976ebb:6942fad7
 ARRAY /dev/md3 level=raid1 num-devices=2 UUID=4b1f9849:c50b111b:b85a11a8:fbb679d8

Die UUID ist immer unterschiedlich, also nicht wundern wenn es bei Ihnen eine andere ist.


5. Bootstrap

  • Filesystem des erstellten Raid’s einhängen # mkdir /mnt/debinst
 # mount /dev/md1 /mnt/debinst 
 # mkdir /mnt/debinst/work 
 # cd /mnt/debinst/work
 # zcat data.tar.gz | tar xv
  • Debootstrap von einem Debian Server laufen lassen # export DEBOOTSTRAP_DIR=/mnt/debinst/work/usr/lib/debootstrap
 # ./usr/sbin/debootstrap --arch arm sid /mnt/debinst http://ftp2.de.debian.org/debian/
  • Kopieren von wichtigen Config Dateien # cd ..
 # cp /etc/resolv.conf etc/resolv.conf 
 # cp /etc/hosts etc/hosts 
 # cp /etc/hostname etc/hostname
  • Kopieren der Kernel Module # cp -Ra /lib/modules/* lib/modules
  • Einhängen des proc Filesystem # mount -t proc proc /mnt/debinst/proc
  • Chroot in die neue Debian Umgebung # cd /
 # chroot /mnt/debinst
  • Erstellen einer /etc/fstab

Man nehme einen Editor (vi) und erstelle eine /etc/fstab. In unserem How to sieht sie dann so aus:

 /dev/md1    /             ext3     defaults 1 1 
 /dev/md2    swap          swap     defaults 0 0 
 /dev/md3    /storrage     ext3     defaults 0 0 
 proc        /proc         proc     defaults 0 0 

Man muß dazu beachten das die fstab individuell aussehen kann je nachdem wie man das Raid Array aufgebaut hat und wo man die „Daten“ Partition einhängen will.

  • Editieren der /etc/inittab

Suchen der folgenden Einträge

 1:2345:respawn:/sbin/getty 38400 tty1 
 2:23:respawn:/sbin/getty 38400 tty2 
 3:23:respawn:/sbin/getty 38400 tty3 
 4:23:respawn:/sbin/getty 38400 tty4 
 5:23:respawn:/sbin/getty 38400 tty5 
 6:23:respawn:/sbin/getty 38400 tty6 

kommentieren Sie jeden dieser Einträge mit einem „#“ am Anfang der Zeile aus und fügen Sie direkt darunter folgenden Eintrag hinzu

 S0:2345:respawn:/sbin/getty 115200 ttyS0
  • Jetzt geht es an die Konfiguration des Netzwerks, es gibt zwei Möglichkeiten das Netzwerk der NSLU2 einzurichten
    • Netzwerk über DHCP Fügen Sie folgende Zeilen in die /etc/network/interfaces hinzu: # /etc/network/interfaces
 # configuration file for ifup(8), ifdown(8) 
 # 
 # The loopback interface 
 auto lo iface lo inet loopback 
 # 
 # The NSLU2 built-in ethernet 
 auto eth0 
 iface eth0 inet dhcp 
 pre-up modprobe -f ixp400 
 pre-up modprobe -f ixp400_eth 

Ich empfehle trotzdem die Konfiguration über statische IP-Adressen wie nun folgt beschrieben

  • Netzwerk mit statischer IP-Adresse # /etc/network/interfaces
 # configuration file for ifup(8), ifdown(8) 
 # 
 # The loopback interface 
 auto lo 
 iface lo inet loopback 
 # 
 # The NSLU2 built-in Ethernet 
 auto eth0 
 iface eth0 inet static 
         pre-up modprobe -f ixp400 
         pre-up modprobe -f ixp400_eth 
         address 192.168.1.77 
         netmask 255.255.255.0 
         gateway 192.168.1.1 

Die Punkte “address”, “netmask” und “gateway” stellen sie entsprechend Ihrem Netzwerk ein.

  • Nach der Netzwerk Konfiguration können sie nun die Debian Distribution updaten, Cron, SSH und den „Popularity-Contest“ installieren. Der „Popularity-Contest“ sendet anonym Informationen über die Architektur und Packete die Sie benützen zu der Debian Community, um Ihnen zu zeigen wo Entwickler einsetzen zu sind. Wenn Sie NSLU und ARM unterstützen möchten wählen Sie bei der Installation „yes“ aus. Die Installation des „openssh-server“ benötigt sehr lange Zeit (ca. 1 ½ Stunden mit einer „normalen“ NSLU2) # apt-get update
 # apt-get dist-upgrade 
 # apt-get install anacron popularity-contest nslu2-utils 
 # apt-get install openssh-server
  • Nach der Installation des „openssh-server“ wird das Login Password geändert über: # pwconv
 # passwd
  • Was zum Schluß noch wichtig ist, ist die Installation des „mdadm“ # apt-get install mdadm

Da sonnst das Raid nicht gestartet werden kann. Wenn das „mdadm“ Packet installiert ist, ist aber noch keine „mdadm.conf“ vorhanden die das Raid zum Start initialisiert.

  • Erstellen der /etc/mdadm/mdadm.conf # echo "DEVICE /dev/sd[ab][123]" > /etc/mdadm/mdadm.conf
 # mdadm --detail --scan >> /etc/mdadm/mdadm.conf 

Editieren Sie die eben erstellte /etc/mdadm/mdadm.conf das sie danach Debian konform aussieht:

 DEVICE partitions 
 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=67b6d7a3:5edf1793:724a117a:40e26693
      devices=/dev/sda1,/dev/sdb1 
 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=57aa400c:0ded363b:73976ebb:6942fad7
      devices=/dev/sda2,/dev/sdb2 
 ARRAY /dev/md3 level=raid1 num-devices=2 UUID=4b1f9849:c50b111b:b85a11a8:fbb679d8
      devices=/dev/sda3,/dev/sdb3
  • Jetzt verlassen Sie die Chroot Umgebung mit # exit
  • Jetzt wird das Filesystem wieder ausgehängt # umount /mnt/debinst/proc
 # killall syslogd anacron 
 # umount /mnt/debinst
  • Nun wird mit folgendem Befehl Debian dazu bewegt von Festplatte bzw. nun vom Raid zu starten. # turnup disk /dev/md1 -t ext3
  • So zu guter Schluss wird nun noch die „linuxrc“ editiert.

Als erstes fügen Sie folgende Zeilen nach “#!/bin/sh“ ein:

 /sbin/insmod /lib/modules/2.6.15/kernel/drivers/md/md-mod.ko 
 /sbin/insmod /lib/modules/2.6.15/kernel/drivers/md/raid1.ko 
 /bin/mknod /dev/md3 b 9 3 
 /bin/mknod /dev/md2 b 9 2 
 /bin/mknod /dev/md1 b 9 1 
 /sbin/mdadm --assemble --scan --config=/etc/mdadm.conf 

dann fügen Sie noch vor „ UUID=’sleep=’280’ ein. Dies ist notwenig wenn das RootFS nicht richtig beim beenden ausgehängt werden kann und dann somit beim boot als „dirty“ markiert wird. Wenn dies der Fall ist will Debian als erstes die Raid RootFS Partition syncronisieren und das kann bei 1.8 GB schon eine Zeit dauern, deshalb habe ich diesen Wert gewählt. Es kann durchaus sein das es in kürzerer Zeit auch geschehen kann - so aber funktioniert es aber auf alle Fälle, und wie oft bootet man ein Linux System schon..

  • Reboot über # shutdown -r now

nach dem reboot sollte nun die Debian Umgebung jetzt über die Festplatten geladen werden ( auf die Festplattenaktivität an evtl. vorhandenen LED’s an den Gehäusen achten - diese müssten bei einer Aktion simultan leuchten ). So nun haben Sie eine voll funktionsfähige Debian Distribution auf Ihrer NSLU2.


6. Anmerkung:

  • Bei meinem NSLU2 ist es so das die LED’s für die USB Festplatten nicht leuchten, das tut aber der Funktionalität überhaupt nichts.
  • Die „Ready/Status“ LED leuchtet ebenfalls nicht richtig, sondern abwechselnd in den Farben „rot“, „gelb“ und „grün“ - dies behindert ebenfalls die Funktionalität nicht. Mittlerweile befindet sich ein „nslu2-tool“ packet in Entwicklung, das aber jetzt noch nicht funktioniert (Stand 9. Februar 2006)

7. Quellen:

Für dieses How to habe ich folgende Quellen verwendet:


8. Danksagung:

Besonders bedanken möchte ich mich für die gute Unterstützung bei:

EvilDevil (http://www.nslu2-info.de/forum/member.php?u=3361) Torsten Flammiger NSLU2-Info Forum (http://www.nslu2-info.de)



Tags





Bearbeiten - Versionen - Druckansicht - Aktuelle Änderungen - Suchen
Zuletzt geändert am 05.09.2008 12:07 Uhr