diff --git a/content/news/ta-raid.xml b/content/news/ta-raid.xml new file mode 100644 index 000000000..5fc362dc9 --- /dev/null +++ b/content/news/ta-raid.xml @@ -0,0 +1,25 @@ + + + + +
+
Termin
+
18. März 2005 19:00Uhr
+
Ort
+
Berufsakademie Dresden, Baracke E, Heideparkstr. 8, 01099 Dresden
+
+

Reicht eine Festplatte nicht, baut man noch eine ein. Dem warum es sich lohnt, mehr als eine Platte im Rechner zu + haben, obwohl der Platz gereicht hätte, widmet sich unserer nächtlicher Techtalk.

+

Neben den Grundlagen gibt es Beispiele zum Einsatz von RAID auf verschiedenen freien Betriebssystemen.

+ +

Folien und Notizen zu den Raid Beispielen

+

Die Folien hat Tristan-777 in seinem Blog gepostet.

+

Hier sind die Anleitungen für die Beispiele. Wer nach den Befehlen für das nette remounten des root-Filesystems + sucht, schaut bitte in notes-raid1.txt. Die qemu-Images + gibt es ab 2005-03-23 von hier verlinkt irgendwo.

+ +
+
diff --git a/content/news/ta-unix.xml b/content/news/ta-unix.xml index d6b0124f6..fb64ff0c0 100644 --- a/content/news/ta-unix.xml +++ b/content/news/ta-unix.xml @@ -113,8 +113,8 @@ -
  • Teil 2: "Unix-Streichelzoo" Unix-Hardware -

    Vortragende: Alexander Heidenreich, Stephan Adler

    +
  • +

    Vortragende: Alexander Heidenreich, Stephan Adler

    Viele Eigenschaften von Linux gehen zurück auf Unix und hängen mit den Eigenschaften der ursprünglich für Unix designten Hardware zusammen. Deshalb sind viele Eigenschaften von Linux und anderen Unixen erst dann richtig zu verstehen, wenn man sich einmal mit der Hardware befasst hat, die ursprünglich diff --git a/content/static/media/notes-raid1.txt b/content/static/media/notes-raid1.txt new file mode 100644 index 000000000..c078b1454 --- /dev/null +++ b/content/static/media/notes-raid1.txt @@ -0,0 +1,123 @@ +# Notizen zum RAID-TA des c3d2 am 18.03.2005 - RAID-1-Teil +# Fragen an: Frank Benkstein + +# Voraussetzungen +# RAID ist fest im Kernel, nicht als Modul! +# devfs wahlweise, aber hilfreich + +# qemu -hda hda -hdb hdb -boot c +# System mit init=/bin/sh booten +# (der init=-Parameter sagt Linux, welchen Prozess es als ersten +# starten soll. normalerweise ist das /sbin/init, welcher nach den +# Einträgen in der inittab alle weiteren Prozesse startet) +# Achtung: die Init-Shell kann kein Job-Management +# Strg-C, Strg-Z funktionieren also nicht - kein ping, watch etc. +# benutzen + +# Proc-Dateisystem mounten +mount -t proc none /proc +# devfs-Daemon starten +/sbin/devfsd /dev + +# ist RAID überhaupt da? +cat /proc/mdstat + +# Platten anschauen +fdisk -l /dev/hda +fdisk -l /dev/hdb + +# hdb partitionieren +fdisk /dev/hdb + +## neue (primäre) Partition +## Typ auf RAID autodetect (fd) + +# RAID bauen - die zweite Platte ist noch nicht da (missing) +mdadm --create --raid-devices 2 --level 1 /dev/md0 /dev/hdb1 missing +cat /proc/mdstat + +# Dateisystem erstellen +mkreiserfs /dev/md0 + +# ...mounten +mount /dev/md0 /mnt + +# Kontrolle +df -h /mnt / + +# root-system kopieren (-x ist dein Freund...) +# rsync empfiehlt sich, wenn acls verwendet werden, +# ansonsten auch star (besseres tar) +cp -ax / /mnt + +# Kontrolle +df -h /mnt / + +# jetzt fängt die Coolness an... :-) + +# pivot_root wechselt das root-Dateisystem im Linux-VFS aus +# siehe pivot_root(2) und pivot_root(8) +# Vorher: +# /dev/hda1 -> / +# /dev/md0 -> /mnt +# Nachher: +# /dev/hda1 -> /mnt +# /dev/md0 -> / +# +# / wird nach /mnt/mnt verschoben und dann /mnt nach / +pivot_root /mnt /mnt/mnt + +# alle vorher gemounteten Dateisystem sind jetzt natürlich +# relativ zu /mnt gemountet + +# jetzt wird das alte Root freigemacht +umount /mnt/proc +mount -t proc proc /proc +killall devfsd +# mount --move verschiebt einen mount-Point +# /mnt/dev kann nicht ungemountet werden, da es von +# /bin/sh noch benutzt wird +mount --move /mnt/dev /dev +# exec ersetzt das aktuelle Prozess-Image +# da das alte /bin/sh noch /mnt benutzt, muss ein neues +# gestartet werden, das auf / operiert +exec /bin/sh +# am Schluss den devfs-Daemon neu starten +devfsd /dev + +umount /mnt # Whoops! - das alte root ist weg + +# /dev/hda wird nicht mehr benutzt - das System läuft jetzt +# von /dev/md0 (==/dev/hdb1) +# bis hier hin kann man ohne Sorgen Reset drücken, ohne dass +# Nebeneffekte auftreten +fdisk /dev/hda + +## gleiche Partitionierung wie /dev/hdb +## Typ nicht vergessen (fd) + +# Partition dem RAID hinzufügen +mdadm --add /dev/md0 /dev/hda1 + +# wer vorsichtig ist, wartet erstmal bis das rebuild fertig ist +cat /proc/mdstat + +# fstab und grub.conf anpassen +vi /etc/fstab +vi /boot/grub/grub.conf +# jeweils /dev/hda1 durch /dev/md0 ersetzen + +# grub installieren auf hd0 und hd1 - rebuild muss vorher fertig sein!!! +grub +## root (hd0,0) +## setup (hd0) +## root (hd1,0) +## setup (hd1) + +# (neues) root read only mounten +mount -o remount,ro / + +reboot -f +# oder, cooler +exec /sbin/init + diff --git a/content/static/media/notes-raid5.txt b/content/static/media/notes-raid5.txt new file mode 100644 index 000000000..7f19d59d8 --- /dev/null +++ b/content/static/media/notes-raid5.txt @@ -0,0 +1,129 @@ +# Notizen zum RAID-TA des c3d2 am 18.03.2005 - RAID-5-Teil +# Fragen an: Frank Benkstein + +## Benötigt: Kernel mit md, RAID-5 und loopback, mdadm + +# folgendes alles als root + +# falls existierende Loops benötigt werden, folgende Befehle anpassen + +# alle bereits bestehenden Loop-Devices löschen +echo /dev/loop? | xargs -n1 losetup -d + +# Loopdevices anlegen +for i in `seq 0 3` ; + do dd if=/dev/zero of=disk$i bs=1M count=100 + losetup /dev/loop$i disk$i +done + +# Empfehlung: screen oder splitvt mit "watch -n1 cat /proc/mdstat" oben, shell +# unten oder zweites Terminal +# falls nicht, regelmäßig cat /proc/mdstat ausführen + +# auch nie verkehrt: zweite console mit man mdadm + +# RAID anlegen - so einfach! +mdadm --create /dev/md0 --level 5 --raid-devices 4 /dev/loop{0,1,2,3} + +# gehört ein bestimmtes Blockdevice zu einem RAID? +mdadm --examine /dev/loop1 + +# bestehendes RAID untersuchen, UUID notieren +mdadm --detail /dev/md0 + +vi /etc/mdadm.conf + + +DEVICE /dev/loop* +ARRAY /dev/md0 uuid=... + + +# für Faule statt des vorherigen: +# echo 'DEVICE /dev/loop*' >> /etc/mdadm.conf +# mdadm --detail --scan >> /etc/mdadm.conf + +# Monitor mode: mailt wichtige Ereignisse (z.B. Ausfall) an Admin. + +# Die starndardmäßige Ausgabe ist ziemlich sporadisch, besser vielleicht +# folgendes Script +# dieses Skript wird von mdadm mit zwei oder drei Parametern aufgerufen: +# 1. die Art des Events (MissingSpareEvent, FailEvent, RebuildStarted, ...) +# 2. das RAID-Device, um das es geht (meist /dev/md0) +# 3. das Block-Device, mit dem das Event was zu tun hat (nicht immer) + + +#!/bin/sh + +FILE=`mktemp /tmp/mdadm-event.XXXXXX` +MAILTO=frank + +cat > $FILE << EOF + +A $1 event had been detected on $2, details follow. + +# mdadm --detail $2 -- begin +`mdadm --detail $2` +# mdadm --detail $2 -- end + +EOF + +if [ ! -z "$3" ] ; then + cat >> $FILE << EOF +# mdadm --examine $3 -- begin +`mdadm --examine $3` +# mdadm --examine $3 -- end + +EOF +fi + +echo "#contents of /proc/mdstat -- begin" +cat /proc/mdstat >> $FILE +echo "#contents of /proc/mdstat -- end" + +mail -s "$1 event on $2:`hostname`" "$MAILTO" < $FILE +rm $FILE + + +# Monitor mode aktivieren: +mdadm --monitor /dev/md0 --program /usr/sbin/handle-mdadm-events --daemonise +# oder, wenn einem die sporadische Ausgabe reicht +mdadm --monitor /dev/md0 --mail frank --daemonise +# am besten in init-Skript aufnehmen +# wichtig: ein funktonierender lokaler Mailer wird hierbei vorausgesetzt +# falls dies nicht gewährleistet ist, statt die Zeile +# mail -s "$1 event on $2:`hostname`" "$MAILTO" < $FILE +# durch +# cat $FILE > /var/log/$2.log +# oder ähnliches ersetzen + +# mal ein bisschen mit dem neuen RAID rumspielen +mdadm --stop /dev/md0 # anhalten +mdadm --assemble /dev/md0 # zusammenbauen lassen + +# Dateisystem auf RAID erstellen +mkreiserfs /dev/md0 +mount /dev/md0 /mnt +df -h /mnt + +# Dateisystem füllen, z.B. +tar xvjf linux-2.6.10.tar.bz2 -C /mnt +df -h /mnt + +# zum späteren Vergleich +tar xvjf linux-2.6.10.tar.bz2 + +# was passiert, wenn eine Platte ausfällt? +# per Hand setzen mit --fail +# /proc/mdstat und evt. mutt beobachten + +mdadm --fail /dev/md0 /dev/loop0 + +# Platte muss zunächst entfernt werden +mdadm --remove /dev/md0 /dev/loop0 + +# nach evt. Neustart und Auswechseln der Platte, neue hinzufügen + +mdadm --add /dev/md0 /dev/loop0 + +# Wichtig: /proc/mdstat beobachten! +