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]