Bevor wir ans eingemachte gehen verschaffen wir uns einen kleinen
Ueberblick ueber das was uns bevorsteht:
* RAID Support in den Kernel kompilieren
* Zusammenbauen eines RAID Install Sets
* Installation und Konfiguration des RAID Systems
* Durchführen verschiedener Tests mit RAID
----------------------------------------------------------------------------
Inhalt
1.) Aktuelles Release besorgen
2.) RAID Enabled Kernel bauen
3.) Erstellen eines RAID Install Sets
4.) Erstellen eines MINIMALEN RAID Install Sets
5.) Installation eines minimalen Pre-RAID Systems
6.) Erstellen des RAID Arrays
7.) Partitionieren des RAID Arrays
8.) OpenBSD auf dem RAID Array installieren
9.) RAID Testing
10.) RAID Installation Foto Gallery & Credits
----------------------------------------------------------------------------
Wer sich die Schritte 1-4 sparen will und sich einfach ein ISO Image,
welches das MINIMALE Raid Install Set und alle anderen Install Sets
fuer OpenBSD 3.4 hat, herunterladen will, kann sich mein Image
herunterladen:
* openbsd-3.4.raid.iso
* openbsd-3.4.raid.iso.md5
* openbsd-3.4.raid.iso.asc
Das alles ist wie gewohnt auf eigene Gefahr zu benutzen. Ich
uebernehme keine Verantwortung fuer entstandene Schaeden oder
aehnliches.
************************************************************************
1.) Aktuelles Release besorgen
************************************************************************
Seit OpenBSD 3.4 ist der RAID support endlich in der Release
Distribution enthalten, man muss also nich -current verwenden. Man
sollte sich also zu aller erst die neuesten Release Kernel Sourcen
holen:
# export CVSROOT=anoncvs@anonvcs.pl.openbsd.org:/cvs
# cd /usr
# cvs co -rOPENBSD_3_4_BASE src/
# cvs co -rOPENBSD_3_4_BASE XF4
# cvs co -rOPENBSD_3_4_BASE ports/
Am besten ist es wenn man eine offizielle CD gekauft hat denn da sind
alle sources zum aktuellen Release drauf.
************************************************************************
2.) RAID Support in den Kernel kompilieren:
************************************************************************
# vi /usr/src/sys/arch/i386/conf/GENERIC
Folgende Optionen muessen unbedingt aktiviert werden:
---------------------------------------------------------------------
| option RAID_AUTOCONFIG # RAID autoconfiguration
| ...
| pseudo-device raid 4 # RAIDframe disk driver
---------------------------------------------------------------------
Somit hat man nun das RAID Device -> raid0, raid1, ... und das RAID
auto config welches es ermoeglicht das auch das '/' root filesystem auf
dem RAID device liegt. Nun lassen wir die Maschine wieder etwas
werken und kompilieren das ganze:
# cd /usr/src/sys/arch/i386/conf
# /usr/sbin/config GENERIC
# cd /usr/src/sys/arch/i386/compile/GENERIC
# make clean && make depend && make
...
# cd /usr/src/sys/arch/i386/compile/GENERIC
# cp /bsd /bsd.old (aktuelle version des kernels speichern)
# cp bsd /bsd (neuen Kernel nach '/' spielen)
# reboot (hoffen das die Kiste wieder hochkommt ;-))
************************************************************************
3.) Zusammenbauen eines RAID Installsets:
************************************************************************
Am einfachsten ist es sich hierzu folgende Verzeichnisse anzulegen
damit man mehr oder weniger copy and paste betreiben kann ;->
# mkdir /usr/new-release
# mkdir /usr/new-root
Nun gibt es ein nettes Script(credits go out to jross) welches man
ganz easy anstarten kann und welches das aktuelle Release zusammenbaut und
zwar schon mit unserem RAID Kernel:
make_release.sh
-----------------------------------------------------------------------
| #!/bin/sh
| # Set up variables for configuration
|
| MYRELEASEDIR=/usr/new-release
| MYDESTDIR=/usr/new-root
| SRCINSTALL=/usr/src
|
| export DESTDIR=$MYDESTDIR
| export RELEASEDIR=$MYRELEASEDIR
|
| # create crunch tools
| cd $SRCINSTALL/distrib/crunch
| make clean && make && make install
|
| # clean out DESTDIR
| rm -rf $DESTDIR/*
|
| # make release
| cd $SRCINSTALL/etc && nice make release
| if [ $? != 0 ]; then
| echo Make release failed > /tmp/release_failed
| exit
| fi
|
| # check release
| cd $SRCINSTALL/distrib/sets && sh checkflist
-----------------------------------------------------------------------
Nachdem man dieses script gestartet hat kann man mal gemuetlich einen
Tee trinken gehen :-).
Nun haben wir das STANDARD Release Install Set mit einem RAID
faehigen Kernel, aber was wir wollen ist ein MINIMALES RAID Install
set welches wir uns aus dem STANDARD Install Set 'backen' werden.
************************************************************************
4.) Erstellen eines MINIMALEN RAID Installsets:
************************************************************************
D.h. wir wollen uns ein site34.tgz basteln welches uns dann bei der
Installation von unserem selbstgedrehten OpenBSD als Install Set
dienen soll.
Dazu brauchen wir zu allererst ein paar exports um die Sache etwas
einfacher zu gestalten:
# export MYRELEASEDIR=/usr/new-release
# export MYBUILDDIR=/usr/new-minimal-package
# export MYRAIDRELEASE=/usr/new-raid-release
# export MYRAIDKERNEL=/usr/src/sys/arch/i386/compile/GENERIC/bsd
- In MYRELEASEDIR befindet sich das Snapshot, CD-Release oder
SRC-build Release.
- In MYBUILDDIR werden wir unser minimales Release basteln.
- In MYRAIDRELEASE werden wir das tgz komprimiert build reingeben.
- In MYRAIDKERNEL befindet sich unser RAID Kernel.
* Erstellen wir das Build Directory:
# mkdir -p $MYBUILDDIR
# cd $MYBUILDDIR
* Nun extrahieren wir die Files fuer den Build:
# tar xvzfp $MYRELEASEDIR/etc34.tgz './etc/*'
# tar xvzfp $MYRELEASEDIR/base34.tgz \
'./bin/*' '*/ex' '*/MAKEDEV' '*zoneinfo*' '*/vi' '*/raidc*' \
'*/find' ./usr/bin/reset ./usr/bin/tset */ld.so */libcurses.so* \
*/libc.so* */libterm* */termcap* */terminfo* */chroot \
*libexec/getty '*/mtree' */slog* *bin/ssh* \ */mdec/* './var/*' \
'*/encrypt' '*/pwd_mkdb*' ./sbin/ancontrol ./sbin/chown \
./sbin/dhclient ./sbin/dhclient-script ./sbin/disklabel \
./sbin/dmesg ./sbin/fdisk ./sbin/fsck* ./sbin/halt \
./sbin/ifconfig ./sbin/init ./sbin/kbd ./sbin/mkfifo \
./sbin/mknod ./sbin/mount* ./sbin/newfs ./sbin/ping \
*/libcrypto.so* */libkrb5.so* */crontab */egrep */fgrep */compress \
*bin/ftp */grep */gunzip */gzcat */gzip */less */more \
*/rsh */sed *bin/sysc* './sbin/route' './sbin/ttyflags' \
'./sbin/swapctl'
... das ganze ist etwas aufgesplittet ...
# tar xvzfp $MYRELEASEDIR/base34.tgz \
'./bin/*' '*/ex' '*/MAKEDEV' '*zoneinfo*' '*/vi' '*/raidc*' \
'*/find' ./usr/bin/reset ./usr/bin/tset */ld.so */libcurses.so* \
*/libc.so* */libterm* */termcap* */terminfo* */chroot \
*libexec/getty '*/mtree' */slog* *bin/ssh* */mdec/* './var/*' \
'*/encrypt' '*/pwd_mkdb*' ./sbin/ancontrol ./sbin/chown \
./sbin/dhclient ./sbin/dhclient-script ./sbin/disklabel \
./sbin/dmesg ./sbin/fdisk ./sbin/fsck* ./sbin/halt ./sbin/ifconfig \
./sbin/init ./sbin/kbd ./sbin/mkfifo ./sbin/mknod ./sbin/mount* \
./sbin/newfs ./sbin/ping */libcrypto.so* */libkrb5.so* */crontab \
*/egrep */fgrep */compress *bin/ftp */grep */gunzip */gzcat */gzip \
*/less */more */rsh */sed *bin/sysc* './sbin/route' \
'./sbin/ttyflags' './sbin/swapctl'
...
# tar xvzfp $MYRELEASEDIR/base34.tgz \
'./usr/sbin/kvm_mkdb' './usr/sbin/dev_mkdb' './usr/bin/mktemp' \
'./usr/bin/install' './usr/sbin/syslogd' './usr/bin/wc' \
'./sbin/savecore' './sbin/quotacheck' './usr/sbin/quotaoff' \
'./usr/sbin/quotaon' './usr/bin/cmp' './sbin/ccdconfig' \
'./usr/sbin/inetd' '*/libz.so*' './usr/sbin/cron' '*/libwrap.so*' \
'./usr/lib/libutil.so*' './usr/lib/libkrb5.so*' './usr/lib/libas*' \
'./usr/lib/libcom_err.so*' './usr/lib/libdes.so*' \
'./usr/libexec/auth/login_*' './usr/bin/login' '*/libedit.*' \
'./sbin/umount'
... weiters wollen wir noch ssh, ftp und andere nuetzliche Sachen auf
unserem MINIMALEN Release haben:
# tar xvzfp $MYRELEASEDIR/base34.tgz \
'./usr/bin/scp' './usr/libexec/sftp-server' './usr/bin/ftp' \
'./usr/lib/libgssapi.so*'\ './usr/bin/which' './usr/bin/touch' \
'./usr/bin/logname' './usr/bin/whoami' './usr/bin/du' \
'./usr/bin/id' './usr/bin/whereis'
...nun kopieren wir unseren RAID enabled Kernel an den richtigen
Platz:
# cp $MYRAIDKERNEL ./bsd
* Bevor wir weitermachen koennen brauchen wir einige Directories und
Files damit das System problemlos und ohne etwaige Fehlermeldungen
laeuft:
# mkdir ./usr/local
# rm -rf ./var/www
# mkdir ./tmp
# mkdir ./root
# touch ./var/log/messages \
touch ./var/log/authlog \
touch ./var/log/secure \
touch ./var/cron/log \
touch ./var/log/daemon \
touch ./var/log/xferlog \
touch ./var/log/lpd-errs \
touch ./var/log/maillog
* Nun fehlen uns noch einige Config Files:
Wir brauchen eine dummy ./etc/rc.conf.local...
-----------------------------------------------------------------------
| #!/bin/sh -
| #
| sendmail_flags=NO
| check_quotas=NO # NO may be desirable in some YP environments
| ntpd=NO # run ntpd if it exists
-----------------------------------------------------------------------
Ein ./root/.profile wird ebenfalls benoetigt:
-----------------------------------------------------------------------
| # $OpenBSD: dot.profile,v 1.3 2003/03/20 01:43:31 david Exp $
| #
| # sh/ksh initialization
|
| PATH=/sbin:/usr/sbin:/bin:/usr/bin
| export PATH
| HOME=/root
| export HOME
| umask 022
|
| alias ll='ls -al'
| export TERM=vt220
|
| if [ -x /usr/bin/tset ]; then
| eval `/usr/bin/tset -sQ \?$TERM`
| fi
-----------------------------------------------------------------------
Das ./root/.login nicht vergessen:
-----------------------------------------------------------------------
| # $OpenBSD: dot.login,v 1.9 2003/03/20 01:43:31 david Exp $
| #
| # csh login file
|
| set tterm='?'$TERM
| set noglob
| onintr finish
| eval `tset -s -Q $tterm`
| finish:
| unset noglob
| unset tterm
| onintr
|
| if ( `logname` == `whoami` ) then
| echo "Don't login as root, use su"
| endif
-----------------------------------------------------------------------
Nun erstellen wir ein ./root/raid0.conf file nach 'man 8 raidctl'. In
diesem Fall machen wir ein RAID 1 (Mirror):
-----------------------------------------------------------------------
| START array
| # numRow numCol numSpare
| 1 2 0
|
| START disks
| /dev/wd0d
| /dev/wd1d
|
| START layout
| # sectPerSU SUsPerParityUnit SUsPerReconUnit RAID_level_1
| 128 1 1 1
|
| START queue
| fifo 100
-----------------------------------------------------------------------
* Hoi ;->, nun koennen wir endlich unseren Release tarball packen:
# tar -czf $MYRAIDRELEASE/site34.tgz *
Nun schaufeln wir noch ein wenig hin und her ;->
# cp $MYRELEASEDIR/* $MYRAIDRELEASE/
Erstellen wir noch ganz flott ein ISO Image:
# cd $MYRAIDRELEASE
# mkisofs -l -L -v -r -T -V "OpenBSD-3.4" -A "OpenBSD 3.4-Raid \
INSTALL SET" -b cdrom34.fs -c boot.catalog -o openbsd-3.4.raid.iso \
-x openbsd-3.4.raid.iso *
...leere CD-R ins Brenner Laufwerk legen und los gehts:
# cdrecord dev=/dev/cd1c speed=8 openbsd-3.4.raid.iso
************************************************************************
5.) Installation eines minimalen Pre-RAID Systems:
************************************************************************
OK. Nun wirds spannend! In meiner Test Konfiguration habe ich 2 IDE
Platten wd0 und wd1 zur Verguegung. Zuerst werden wir auf wd0 und
wd1 unser minimal System installieren und sicherstellen dass dieses
sowohl won wd0 als auch von wd1 bootet, dann werden wir unser RAID 1
auf den Rest von wd0 und wd1, welches dann logisch als raid0
erscheinen wird, spielen.
* Partitionieren wir also mal wd0:
Wir werden eine 50m grosse 'a' Partition und eine kleine 32m [swap]
Partition erstellen. Der Rest wird als RAID partitioniert:
--------------------------------------------------------------------
Partition FS-TYPE Mount Point Size
wd0a 4.2BSD / 50M
wd0b swap swap 32M
wd0c unused [reserved]
wd0d --> RAID <-- [none] *
--------------------------------------------------------------------
...nun noch schnell disklabeln....
--------------------------------------------------------------------
> a a
offset: [63]
size: [ ... ] 50m
Rounding to nearest cylinder: xxxxx
FS type: [4.2BSD]
mount point: [none] /
> a b
offset: [ ... ]
size: [ ... ] 32m
Rounding to nearest cylinder: xxxxx
FS type: [swap]
> a d
offset: [ ... ]
size: [ ... ]
FS type: [4.2BSD] RAID
mount point: [none]
> w
> q
--------------------------------------------------------------------
...wenn die Installation so weit fortgeschritten ist dass man zum
installieren der Sets kommt, dann sollte man '(c)drom' waehlen. Wenn
man dann nach dem 'mount point' fuer die Install Sets gefragt wir
einfach '/' eingeben und man sollte folgendes zur auswahl haben:
--------------------------------------------------------------------
The following sets are available. Enter a filename, 'all' to select
all the sets, or 'done'. You may de-select a set by prepending a '-'
to its name.
[X] bsd
[ ] bsd.rd
[ ] base34.tgz
[ ] etc34.tgz
[ ] misc34.tgz
[ ] comp34.tgz
[ ] man34.tgz
[ ] game34.tgz
[X] site34.tgz
--------------------------------------------------------------------
...OK, wir wollen in diesem Fall echt NUR 'bsd' und unser minimales
Set 'site34.tgz' installieren.
Nach der Installation sollte man den Rechner neu starten und
probieren sich mit SSH einzuloggen. Wenn alles geklappt hat kann man
mal verschnaufen, einen Kaffee trinken und auf zu neuen taten
schreiten :->
Bis jetzt haben wir das 2 Laufwerk wd1 noch nicht angeruehrt was wir
nun aber schleunigst tun werden:
# disklabel wd0 > /root/disklabel.wd0
# cp /root/disklabel.wd0 /root/disklabel.wd1
# vi /root/disklabel.wd1
In '/root/disklabel.wd1' muessen wir folgenden Eintrag noch
abaendern:
# /dev/rwd0c:
wird zu ...
# /dev/rwd1c:
Jetzt koennen wir endlich das zweite Laufwerk gemuetlich mit fdisk
und disklabel bearbeiten:
# fdisk -i wd1
# disklabel -R -r wd1 /root/disklabel.wd1
Unser zweites Laufwerk ist nun partitioniert und braucht ein neues
Filesystem:
# newfs /dev/wd1a
Nun muessen wir dafuer sorgen dass 'wd1a' genauso aussieht wie 'wd0a'
damit im Fall der Faelle - z.B. Head Crash auf 'wd0' - das System von
der anderen Platte, in unserem Fall 'wd1', booten kann. Dazu kopieren
wir '/' von 'wd0a' auf 'wd1a':
# mkdir /mnt
# mount /dev/wd1a /mnt
# cd /
# pax -r -w -p e -v bin boot bsd dev etc root sbin tmp usr var /mnt/
Nun muessen wir nur mehr das zweite Laufwerk bootable machen:
# cp /usr/mdec/boot /mnt/boot
# /usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot wd1
Man muss nun eigentlich nur mehr in '/mnt/etc/fstab' folgende Zeile
aendern:
# /dev/wd0a / ffs rw 1 1
wird zu ...
# /dev/wd1a / ffs rw 1 1
Das funktioniert ganz toll so lange das erste IDE Laufwerk wd0 vom
System erkannt wird. Sollte 'wd0' aber total ausfallen wird das System
'wd1' - obwohl es am zweiten Kontroller haengt - als 'wd0' starten.
Nun sollte man testen ob man auch wirklich von der anderen Platte
booten kann. Dazu gibt man am boot prompt z.B. folgende Zeile ein:
boot > boot hd1a:/bsd
************************************************************************
6.) Erstellen des RAID Arrays
************************************************************************
Bevor wir nun endlich mit dem erstellen des RAID Arrays beginnen
sollte man sich noch einmal die man page zu 'raidctl(8)' durchlesen!
Wir haben in unserem minimalen RAID Install Set eine Konfigurations
Datei fuer RAID 1 beigefuegt - '/root/raid0.conf' - welche wir nun
heranziehen werden:
# raidctl -C /root/raid0.conf raid0
Das RAID Array braucht auch eine ID, in unserem Beispiel '100':
# raidctl -I 100 raid0
Nun muss man das parity set initialisieren:
# raidctl -iv raid0
Falls man einen Fehler gemacht haben sollte kann man das 'raid0'
jederzeit mit ...
# raidctl -u raid0
...deconfiguren.
************************************************************************
7.) Partitionieren des RAID Arrays
************************************************************************
Der Befehl 'raidctl -iv raid0' kann schon etwas Zeit in Anspruch
nehmen und wenn alles gut gegangen ist koennen wir unser RAID Array
partitionieren:
# disklabel -E raid0
---------------------------------------------------------------------
Partition Mount Point
raid0a /
raid0b swap
raid0c [reserved]
raid0d /tmp
raid0e /var
raid0f /usr
raid0h /home
---------------------------------------------------------------------
Ein Filesystem wird noch benoetigt:
# newfs raid0a; newfs raid0d; newfs raid0e; newfs raid0f; \
newfs raid0h
Nun muessen wir nur mehr 'auto-configuration' einschalten:
# raidctl -A yes raid0
************************************************************************
8.) OpenBSD auf dem RAID Array installieren:
************************************************************************
Auf unserer RAID enabled Installations CD haben wir alle Install Sets
drauf welche nun nur mehr an die richtige Stelle entpackt werden
muessen:
Mounten der RAID Partitions:
# cd /mnt
# mount /dev/raid0a /mnt
In unserem 'root' Verzeichniss welches jetzt in '/mnt' liegt sollten
folgende Ordner erstellt werden:
# mkdir ./usr
# mkdir ./tmp
# mkdir ./var
# mkdir ./home
Endlich kann man alles mounten:
# mount /dev/raid0d /mnt/tmp
# mount /dev/raid0e /mnt/var
# mount /dev/raid0f /mnt/usr
# mount /dev/raid0h /mnt/home
Jetzt werden noch die Release Files bzw. Install Sets an den
richtigen Orten entpackt:
# mkdir /cdrom
# mount /dev/cd0a /cdrom
# cd /mnt
# tar -zxvpf ./cdrom/etc34.tgz
# tar -zxvpf ./cdrom/base34.tgz
# tar -zxvpf ./cdrom/comp34.tgz
# tar -zxvpf ./cdrom/man34.tgz
Einige Config files muessen noch auf unsere 'root' Partition von
unserem RAID System:
# cd /
# pax -r -w -p e -v dev boot bsd* /mnt/
# cd /etc
# cp -p fstab my* hostname.* hosts kbdtype resolv.conf dhc* /mnt/etc/
Die mount points in '/mnt/etc/fstab' muessen noch angepasst werden:
[/mnt/etc/fstab]
----------------------------------------------
/dev/raid0a / ffs rw 1 1
/dev/raid0d /tmp ffs rw 1 1
/dev/raid0e /var ffs rw 1 1
/dev/raid0f /usr ffs rw 1 1
/dev/raid0h /home ffs rw 1 1
----------------------------------------------
Ein root passwort wird noch benoetigt:
# /mnt/usr/sbin/chroot /mnt
# passwd
# exit
Endlich koennen wir unsere RAID Configuration abschliessen in dem wir
mit dem Befehl:
# raidctl -A root raid0
...dem System mitteilen dass 'raid0' nun unsere root Partition
beinhaltet.
Um dies wieder rueckgaengig zu machen kann man folgenden Befehl
verwenden:
# raidctl -A yes raid0
Nun muessen wir dem System noch sagen dass 'raid0' ready for
auto-configuration ist indem wir unser '/etc/raid0.conf' file nach
/etc kopieren(dies muss man auf 'wd0a' und 'wd1a' machen!!):
# cp /root/raid0.conf /etc/raid0.conf
Dadurch wird das 'raid0' device automatisch von den rc scripts
aktiviert.
SOOOO :-> nun endlich koennen wir das System neu starten und hoffen
das alles geklappt hat.
************************************************************************
9.) Testen des RAID
************************************************************************
Um herauszufinden ob wir uns nach dem Reboot echt am RAID device
befinden muss man nur schnell mal 'dmesg' aufrufen. Dort sollten
ungefaehr folgende Zeilen enthalten sein:
----------------------------------------------------------------
[...]
Kernelized RAIDframe activated
[...]
raid0 (root): (RAID Level 1) total number of sectors is 73400448 \
(35840 MB) as root
dkcsum: wd0 matched BIOS disk 80
dkcsum: wd1 matched BIOS disk 81
rootdev=0x1300 rrootdev=0x3600 rawdev=0x3602
[...]
----------------------------------------------------------------
Ein 'df -h' bestaetigt das ganze auch:
----------------------------------------------------------------
# /home/igor $df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/raid0a 1006M 34.3M 921M 4% /
/dev/raid0h 13.8G 332M 12.8G 2% /home
/dev/raid0d 1006M 5.9M 950M 1% /tmp
/dev/raid0f 3.9G 2.1G 1.6G 56% /usr
/dev/raid0e 13.8G 1.3G 11.8G 10% /var
----------------------------------------------------------------
* Nun koennen wir endlich einige RAID Szenarios testen:
- Wir werden als erstes physisch 'wd1' entfernen und dan schauen ob
immer noch das 'raid0' device gebootet wird:
----------------------------------------------------------------
# raidctl -s raid0
raid0 Components:
/dev/wd0d: optimal
component1: failed <---- wd1 Platte FAILED
No spares.
Parity status: clean
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
----------------------------------------------------------------
Nun, sehen wir das man das 'raid0' device auch dann booten kann wenn
eine Platte komplett ausgefallen ist. Haengen wir die Platte wieder
an und schauen wir wie sich das System verhaelt:
----------------------------------------------------------------
# halt -p
[...shutdown des Systems...neustart...]
# raidctl -s raid0
raid0 Components:
/dev/wd0d: optimal
/dev/wd1d: failed
No spares.
Parity status: clean
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
# raidctl -P raid0
raid0: Parity status: clean
----------------------------------------------------------------
Das System hat sich also genauso Verhalten wie es dies tun sollte
aber da wir die 2. Platte nur disconnected haben und keine Schreib
oder lese Operationen ausgefuehrt haben, hatte RAID in diesem Fall
nicht viel zu tun. Waere nun wirklich etwas schief gegangen auf
unserer zweiten Platte dann muesste man die zweite Platte quasi
'rebuilden'. Folgende Kommandos waeren dazu noetig:
# raidctl -R /dev/wd1d raid0
- Probieren wir nun ein FORCED FAIL um die ganze Sache etwas
spannender zu machen:
----------------------------------------------------------------
# raidctl -F /dev/wd1d raid0
# Feb 9 05:20:05 backup /bsd: raid0: Failing disk r0 c1.
Feb 9 05:20:05 backup /bsd: raid0: Failing disk r0 c1.
Feb 9 05:20:05 backup /bsd: Unable to reconstruct disk at row 0 /
col 1 because no spares are available.
Feb 9 05:20:05 backup /bsd: Unable to reconstruct disk at row 0 /
col 1 because no spares are available.
----------------------------------------------------------------
Hmmm, das ist zwar etwas unerwartet aber eigentlich auch korrekt so,
da wir kein HOT SPARE in userer 'raid0.conf' definiert haben. Damit
dieses Commando werkt brauchen wir also wirklich ein SPARE damit das
FORCED FAIL und der RECONSTRUCT Prozess funkt.
- FORCED RECONSTRUCTION
Schauen wir mal ob dieser Befehl in einer ECHT Umgebung auch funken
wuerde. Rekonstruieren wir also '/dev/wd1d':
# raidctl -R /dev/wd1d raid0
Nachdem man diesen Befehl abgesetzt hat kann man sich auf einer
weiteren Konsole davon uberzeugen dass ein Reconstruction run laeuft:
----------------------------------------------------------------
# raidctl -s raid0
raid0 Components:
/dev/wd0d: optimal
/dev/wd1d: reconstructing <---
No spares.
Parity status: clean
Reconstruction is 5% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
----------------------------------------------------------------
...und hier nochmal mit allen Meldungen...
----------------------------------------------------------------
# raidctl -R /dev/wd1d raid0
Feb 9 05:23:55 backup /bsd: RECON: Initiating in-place reconstruction on
Feb 9 05:23:55 backup /bsd: row 0 col 1 -> spare at row 0 col 1.
Feb 9 05:23:55 backup /bsd: Quiescence reached...
Feb 9 05:44:42 backup /bsd: Quiescence reached...
Feb 9 05:44:42 backup /bsd: Number of I/Os: 55
Feb 9 05:44:42 backup /bsd: Elapsed time (us): 1247403180
Feb 9 05:44:42 backup /bsd: User I/Os per second: 0
Feb 9 05:44:42 backup /bsd: Average user response time: 0 us
Feb 9 05:44:42 backup /bsd: Total sectors moved: 1504
Feb 9 05:44:42 backup /bsd: Average access size (sect): 27
Feb 9 05:44:42 backup /bsd: Achieved data rate: 0.0 MB/sec
Feb 9 05:44:42 backup /bsd: Reconstruction of disk at row 0 col 1 \
completed.
Feb 9 05:44:42 backup /bsd: Recon time was 1247.393404 seconds, \
accumulated XOR time was 0 us (0.f4f4f4).
Feb 9 05:44:42 backup /bsd: (start time 1076329435 sec 63067 usec,\
end time 1076330682 sec 456471 usec)
Feb 9 05:44:42 backup /bsd: Total head-sep stall count was 0.
Feb 9 05:44:42 backup /bsd: RAIDframe: 939473 recon event waits, 0 \
recon delays.
Feb 9 05:44:42 backup /bsd: RAIDframe: 939473 recon event wait
----------------------------------------------------------------
Nach der Reconstruction sieht die Situation dann wieder wie gewohnt
aus :->
----------------------------------------------------------------
# raidctl -s raid0
raid0 Components:
/dev/wd0d: optimal
/dev/wd1d: optimal
No spares.
Parity status: clean
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
----------------------------------------------------------------
************************************************************************
10.) RAID Installation Foto Gallery & Credits
************************************************************************
Ich habe auch eine kleine Foto Doku waehrend der RAID Installation
geschossen, viel spass beim anschauen :-> :
* RAID install Gallery
Hier sind die Quellen die ich fuer das Schreiben dieses HOWTOs
benuetzt habe:
* http://www.nomoa.com/bsd/raid_ide.htm
* http://www.abstrakt.ch/unix/MINI-HOWTO-openbsd-raid.html
* man 8 raidctl
* man 4 raid
--
Igor
|