vinum
BACK ..
Ein RAID-1 aus zwei IDE-HDD's mit "vinum" konfigurieren.
========================================================
bash-2.05b# fdisk -I ad2
bash-2.05b# fdisk -I ad3
bash-2.05b# disklabel -r -w ad2 auto
bash-2.05b# disklabel -r -w ad3 auto
bash-2.05b# disklabel -W ad2
bash-2.05b# disklabel -W ad3
bash-2.05b# disklabel -e /dev/ad2
bash-2.05b# disklabel -e /dev/ad3
# Die Zeile mit "e: ..." auf beiden Laufwerken hinzufühgen:
# c: 30033360 0 unused 0 0 # (Cyl. 0 - 29794)
# e: 30033360 0 vinum 0 0 0 # (Cyl. 0 - 29794)
bash-2.05b# disklabel -N ad2
bash-2.05b# disklabel -N ad3
#
# vi vinum.conf:
# --------------
drive m11 device /dev/ad2e
drive m12 device /dev/ad3e
volume mirror1 setupstate
plex org concat
sd length 0 drive m11
plex org concat
sd length 0 drive m12
bash-2.05b# vinum create -f vinum.conf # NUR EINMAL AUSFÜHREN!
bash-2.05b# vinum list
2 drives:
D m11 State: up /dev/ad2e Ä 0/14664 MB (0%)
D m12 State: up /dev/ad3e Ä 0/14664 MB (0%)
1 volumes:
V mirror1 State: up Plexes: 2 Size: 14 GB
2 plexes:
P mirror1.p0 C State: up Subdisks: 1 Size: 14 GB
P mirror1.p1 C State: up Subdisks: 1 Size: 14 GB
2 subdisks:
S mirror1.p0.s0 State: up D: m11 Size: 14 GB
S mirror1.p1.s0 State: up D: m12 Size: 14 GB
# die RAID-1 - Platte formatieren:
bash-2.05b# newfs /dev/vinum/mirror1
# Soft-Update einschalten:
bash-2.05b# tunefs -n enable /dev/vinum/mirror1
# die "/etc/fstab" aktualisieren:
bash-2.05b# vi /etc/fstab
/dev/vinum/mirror1 /RAID1 ufs rw 0 0
# Mountpoint anlegen:
bash-2.05b# mkdir /RAID1
# mounten:
bash-2.05b# mount /RAID1
# kontrollieren:
bash-2.05b# mount;df
# in die rc.conf eintragen
bash-2.05b# vi /etc/rc.conf
start_vinum="YES" # set to YES to start vinum
################################################################################
Wenn die 6GB-Platte mal ausgebaut war, wird der dazugehoehrige mirror deaktiviert.
----------------------------------------------------------------------------------
bash-2.05b# vinum list
4 drives:
D m11 State: up Device /dev/ad1s1e Avail: 0/6149 MB (0%)
D m13 State: up Device /dev/ad1s1f Avail: 0/1628 MB (0%)
D m12 State: up Device /dev/ad2s1e Avail: 0/6149 MB (0%)
D m14 State: up Device /dev/ad3s1e Avail: 0/1628 MB (0%)
2 volumes:
V mirror1 State: down Plexes: 2 Size: 6149 MB
V mirror2 State: up Plexes: 2 Size: 1628 MB
4 plexes:
P mirror1.p0 C State: faulty Subdisks: 1 Size: 6149 MB
P mirror1.p1 C State: faulty Subdisks: 1 Size: 6149 MB
P mirror2.p0 C State: up Subdisks: 1 Size: 1628 MB
P mirror2.p1 C State: up Subdisks: 1 Size: 1628 MB
4 subdisks:
S mirror1.p0.s0 State: stale PÖ 0 B Size: 6149 MB
S mirror1.p1.s0 State: crashed PÖ 0 B Size: 6149 MB
S mirror2.p0.s0 State: up PÖ 0 B Size: 1628 MB
S mirror2.p1.s0 State: up PÖ 0 B Size: 1628 MB
anzeigen der Konfigurationen, die auf den Laufwerken gespeichert sind
---------------------------------------------------------------------
bash-2.05b# vinum dumpconfig
oder nur vom Laufwerk "ad2
bash-2.05b# vinum dumpconfig /dev/ad2"
bash-2.05b# vinum start -w mirror1 mirror1.p1 mirror1.p1.s0
Can't start mirror1: Device busy (16)
mirror1.p1.s0 is already up
bash-2.05b# vinum start -w mirror1 mirror1.p0 mirror1.p0.s0
mirror1 is already up
vinum[343]: reviving mirror1.p0.s0
... Das kann jetzt ein paar Minuten dauern.
vinum[343]: mirror1.p0.s0 is up
mirror1.p0.s0 is already up
################################################################################
anhalten eines Mirrors:
-----------------------
bash-2.05b# vinum stop -f mirror1 mirror1.p0 mirror1.p0.s0
bash-2.05b# vinum stop -f mirror1 mirror1.p1 mirror1.p1.s0
starten eines Mirrors:
----------------------
bash-2.05b# vinum start -w mirror1 mirror1.p0 mirror1.p0.s0
bash-2.05b# vinum start -w mirror1 mirror1.p1 mirror1.p1.s0
Loeschen eines Mirrors:
-----------------------
bash-2.05b# vinum rm -f mirror1 mirror1.p0 mirror1.p0.s0
bash-2.05b# vinum rm -f mirror1 mirror1.p1 mirror1.p1.s0
bash-2.05b# vinum rm -f mirror1
loeschen der kompletten Mirror-Konfiguration:
---------------------------------------------
(alle Daten gehen verloren)
bash-2.05b# vinum resetconfig
################################################################################
Beispiel "so tauscht man eine defekte Platte aus einem RAID aus"
----------------------------------------------------------------
(hier sind aber alle Platten heil, wir tauschen aber mal "ad3" aus)
siehe auch: http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/raid.html
Wenn in der /var/log/messages oder in der Ausgabe von dmesg Meldungen wie die
folgenden auftauchen:
ad3 on monster1 suffered a hard error.
ad3: READ command timeout tag=0 serv=0 - resetting
ad3: trying fallback to PIO mode
ata1: resetting devices .. done
ad3: hard error reading fsbn 1116119 of 0-3 (ad3 bn 1116119; cn 1107 tn 4 sn 11) status=59 error=40
ar0: WARNING - mirror lost
Dann ist die Platte "ad3" aus dem Mirror "ar0" gerade ausgefallen und muss
ausgetauscht werden...
So geht das (selber aber noch nie gemacht...):
channel's anzeigen
------------------
bash-2.05b# atacontrol list
ATA channel 0:
Master: ad0 ATA/ATAPI rev 4
Slave: ad1 ATA/ATAPI rev 5
ATA channel 1:
Master: ad2 ATA/ATAPI rev 5
Slave: ad3 ATA/ATAPI rev 5
den Status des defekten Raid überpru:fen
---------------------------------------
bash-2.05b# atacontrol status ar0
channel mit defekter Platte aus dem Verbund lösen
-------------------------------------------------
bash-2.05b# atacontrol detach 1
Platte austauschen!
die neue Platte in den Verbund aufnehmen
----------------------------------------
bash-2.05b# atacontrol attach 1
Organisation des Verbunds wieder herstellen
-------------------------------------------
Dieses Kommando funktioniert nur an einem RAID-1! (laut "man atacontrol" FreeBSD 5.2.1 / May 17, 2001)
bash-2.05b# atacontrol rebuild ar0
Jetzt ist das Terminal blockiert, bis der Verbund wieder hergestellt ist.
Den Fortgang kann man auf einem anderen Terminal mit
bash-2.05b# dmesg | tail
beobachten.
Um zu sehen in welchem Mode die Platten eines channel's laufen,
nutzt man das folgende Kommandö
---------------------------------------------------------------
bash-2.05b# atacontrol mode 0
Master = PIO4
Slave = PIO4
bash-2.05b# atacontrol mode 1
Master = PIO4
Slave = PIO4
Im PIO-Mode halten die Platten wesentlich länger und die Daten sind somit sicherer!
Um den Mode, in dem die Platten eines channel's laufen,
zu ändern, nutzt man das folgende Kommandö
---------------------------------------------------------------
bash-2.05b# atacontrol mode 0 PIO4 PIO4
bzw.
bash-2.05b# atacontrol mode 1 PIO4 PIO4
[IMG]