*vortragsfile nach static/media kopiert
*ta-raid migriert *ta-unix typo gefixed git-svn-id: svn://svn.c3d2.de/c3d2-web/trunk@463 31f61c52-7bfb-0310-b897-fc00f8a278f0
This commit is contained in:
parent
b2293f77cb
commit
995722db2b
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE item SYSTEM "http://www.c3d2.de/dtd/c3d2web.dtd">
|
||||
<?xml-stylesheet type="text/xsl" href="../../xsl/html.xsl" ?>
|
||||
<item title="TA: RAID - zerstückelte Platten" date="2005-03-18T19:00:00" author="riot" category="Themenabend">
|
||||
<dl>
|
||||
<dt>Termin</dt>
|
||||
<dd>18. März 2005 19:00Uhr</dd>
|
||||
<dt>Ort</dt>
|
||||
<dd>Berufsakademie Dresden, Baracke E, Heideparkstr. 8, 01099 Dresden</dd>
|
||||
</dl>
|
||||
<p>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.</p>
|
||||
<p>Neben den Grundlagen gibt es Beispiele zum Einsatz von RAID auf verschiedenen freien Betriebssystemen.</p>
|
||||
<addendum>
|
||||
<p>Folien und Notizen zu den Raid Beispielen</p>
|
||||
<p>Die Folien hat Tristan-777 in seinem <link href="http://www.psycast.de/blog/?postid=7">Blog</link> gepostet.</p>
|
||||
<p>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 <link href="http://fabrice.bellard.free.fr/qemu/">qemu</link>-Images
|
||||
gibt es ab 2005-03-23 von hier verlinkt irgendwo.</p>
|
||||
<ul>
|
||||
<li><link href="../media/notes-raid1.txt">notes-raid1.txt</link></li>
|
||||
<li><link href="../media/notes-raid5.txt">notes-raid5.txt</link></li>
|
||||
</ul>
|
||||
</addendum>
|
||||
</item>
|
|
@ -113,8 +113,8 @@
|
|||
</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>Teil 2: "Unix-Streichelzoo" Unix-Hardware
|
||||
<p>Vortragende: Alexander Heidenreich, Stephan Adler</p>
|
||||
<li>
|
||||
<p>Vortragende: Alexander Heidenreich, Stephan Adler</p>
|
||||
<p>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
|
||||
|
|
|
@ -0,0 +1,123 @@
|
|||
# Notizen zum RAID-TA des c3d2 am 18.03.2005 - RAID-1-Teil
|
||||
# Fragen an: Frank Benkstein <frank@benkstein.net>
|
||||
|
||||
# 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
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
# Notizen zum RAID-TA des c3d2 am 18.03.2005 - RAID-5-Teil
|
||||
# Fragen an: Frank Benkstein <frank@benkstein.net>
|
||||
|
||||
## 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
|
||||
|
||||
<code>
|
||||
DEVICE /dev/loop*
|
||||
ARRAY /dev/md0 uuid=...
|
||||
</code>
|
||||
|
||||
# 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)
|
||||
|
||||
<code path="/usr/local/sbin/handle-mdadm-events">
|
||||
#!/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
|
||||
</code>
|
||||
|
||||
# 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!
|
||||
|
Loading…
Reference in New Issue