c3d2-web/content/static/media/notes-raid5.txt

130 lines
3.3 KiB
Plaintext

# 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!