PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu einem Raid-5 Array



der_angler
16.01.09, 11:18
Hallo,

ich bin gerade dabei einen kleinen Server aufzusetzen und arbeite dort mit einem Raid-5-Array bestehend aus 3 x 320GB SATA Festplatten. Im Laufe der Installation haben sich dann aber diverse Fragen aufgetan, speziell zu dem Verhalten meines Raid's. Ich habe die Platten folgendermassen eingeteilt:
Partition "/boot" = raid1 = sda1,sdb1,sdc1
Partition "/" = raid5 = sda2,sdb2,sdc2
Partition "swap" = raid5 = sda3,sdb3,sdc3
Ich habe mich zwar auch per Internet über Raid5 informiert, aber alle Fragen konnten nicht geklärt werden. Deswegen frage ich jetzt mal euch.

1.
Bei einem Raid5 habe ich ja 3 Festplatten im PC. Meine erste Frage lautet wie bekomme ich den Bootsektor auf alle 3 Festplatten bekomme, so das der PC auch nach Ausfall von sda noch bootet. Mit dem Befehl "grub-install --no-floppy /dev/md1" bzw. "grub-install --no-floppy /dev/sda(b,c)" klappt es auch nicht, bei beiden meckert die Partition wäre dafür nicht geeignet.

2.
Die Festplatten sind ja in 3 Partitionen aufgeteilt. Wenn nun eine Platte ausfallen würde, was dann? Muss ich den PC runter fahren oder kann ich einen "Hotplug" durchführen? Und wenn dann die defekte Platte ausgetauscht wurde, partitioniert und formatiert der Rechner die dann selbst neu und bindet sie ins Raid ein oder muss ich die Platte zuerst manuell partitionieren, dann formatieren und dann dem Raid hinzufügen?

3.
Mein Raid5 habe ich soweit hinbekommen, nach einem Neustart des Systems habe ich mit die raids per "mdadm --detail /dev/md2" angeschaut und es war alles okay, alle 3 Platten waren an und "sync". So nachdem ich den Rechner 1 Stunden später nochmal neugestartet habe kam dann plötzlich folgendes
server ~ # cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4]
md1 : active raid1 sdc1[2] sda1[0]
104320 blocks [3/2] [U_U]

md2 : active raid5 sdc2[2] sda2[0]
614405760 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]

md3 : active raid5 sdc3[2] sda3[0]
4096384 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]

unused devices: <none>
server ~ # mdadm --detail /dev/md1
/dev/md1:
Version : 00.90.03
Creation Time : Fri Jan 16 01:57:34 2009
Raid Level : raid1
Array Size : 104320 (101.89 MiB 106.82 MB)
Used Dev Size : 104320 (101.89 MiB 106.82 MB)
Raid Devices : 3
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Fri Jan 16 04:15:37 2009
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : 379ca6e1:8a158ce1:6f168e16:ee3dbcd2
Events : 0.10

Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 0 0 1 removed
2 8 33 2 active sync /dev/sdc1
server ~ # mdadm --detail /dev/md2
/dev/md2:
Version : 00.90.03
Creation Time : Fri Jan 16 01:57:54 2009
Raid Level : raid5
Array Size : 614405760 (585.94 GiB 629.15 GB)
Used Dev Size : 307202880 (292.97 GiB 314.58 GB)
Raid Devices : 3
Total Devices : 2
Preferred Minor : 2
Persistence : Superblock is persistent

Update Time : Fri Jan 16 09:31:49 2009
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

UUID : 224575e7:244f3190:80037211:7dffad2e
Events : 0.4302

Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 0 0 1 removed
2 8 34 2 active sync /dev/sdc2
server ~ # mdadm --detail /dev/md3
/dev/md3:
Version : 00.90.03
Creation Time : Fri Jan 16 01:58:10 2009
Raid Level : raid5
Array Size : 4096384 (3.91 GiB 4.19 GB)
Used Dev Size : 2048192 (2000.52 MiB 2097.35 MB)
Raid Devices : 3
Total Devices : 2
Preferred Minor : 3
Persistence : Superblock is persistent

Update Time : Fri Jan 16 04:14:01 2009
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

UUID : 69853f97:8b154413:5f0b3c5b:9ee7bde6
Events : 0.10

Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 0 0 1 removed
2 8 35 2 active sync /dev/sdc3
server ~ #

Sehe ich das flasch oder steht da das eine der Platten entfernt wurde? Weil das ist komisch, alle Platten sind im PC und scheinen auch zu laufen, siehe
server ~ # dmesg | grep md
Command line: root=/dev/md2 vga=0x318
Kernel command line: root=/dev/md2 vga=0x318
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
md: raid6 personality registered for level 6
md: raid5 personality registered for level 5
md: raid4 personality registered for level 4
md: Autodetecting RAID arrays.
md: Scanned 9 and added 9 devices.
md: autorun ...
md: considering sdc3 ...
md: adding sdc3 ...
md: sdc2 has different UUID to sdc3
md: sdc1 has different UUID to sdc3
md: adding sdb3 ...
md: sdb2 has different UUID to sdc3
md: sdb1 has different UUID to sdc3
md: adding sda3 ...
md: sda2 has different UUID to sdc3
md: sda1 has different UUID to sdc3
md: created md3
md: bind<sda3>
md: bind<sdb3>
md: bind<sdc3>
md: running: <sdc3><sdb3><sda3>
md: kicking non-fresh sdb3 from array!
md: unbind<sdb3>
md: export_rdev(sdb3)
raid5: allocated 3232kB for md3
raid5: raid level 5 set md3 active with 2 out of 3 devices, algorithm 2
md: considering sdc2 ...
md: adding sdc2 ...
md: sdc1 has different UUID to sdc2
md: adding sdb2 ...
md: sdb1 has different UUID to sdc2
md: adding sda2 ...
md: sda1 has different UUID to sdc2
md: created md2
md: bind<sda2>
md: bind<sdb2>
md: bind<sdc2>
md: running: <sdc2><sdb2><sda2>
md: kicking non-fresh sdb2 from array!
md: unbind<sdb2>
md: export_rdev(sdb2)
raid5: allocated 3232kB for md2
raid5: raid level 5 set md2 active with 2 out of 3 devices, algorithm 2
md: considering sdc1 ...
md: adding sdc1 ...
md: adding sdb1 ...
md: adding sda1 ...
md: created md1
md: bind<sda1>
md: bind<sdb1>
md: bind<sdc1>
md: running: <sdc1><sdb1><sda1>
md: kicking non-fresh sdb1 from array!
md: unbind<sdb1>
md: export_rdev(sdb1)
raid1: raid set md1 active with 2 out of 3 mirrors
md: ... autorun DONE.
EXT3 FS on md2, internal journal
Adding 4096376k swap on /dev/md3. Priority:-1 extents:1 across:4096376k

Jetzt frage ich mich ist mein Raid kaputt oder warum steht selbst beim /dev/md1 (raid1) das eine Platte entfernt wurde? Und wenn sie wirklich fehlt, warum hat er beim hochfahren alles okay angezeigt?




ICh hoffe ihr könnt mir helfen, eventuell fallen mir zu dem Thema auch noch 1-2 Fragen ein, die stelle ich dann hinten an.
Vielen Dank schonmal im Vorraus

CoolTux
16.01.09, 12:05
Hallo

Deine Fragen zu 100% kann Dir der Artikel in der letzten ct beantworten.


http://www.heise.de/ct/inhalt.shtml
Linux: Migration auf Software-RAID, S. 168

der_angler
16.01.09, 12:53
hmm, das ist ja prima :ugly:

NUR das ich die ct weder habe, noch dazu komme Sie mir zu kaufen. Wollte eigentlich ohne was zu bezahlen erfahren ob mein Raid so richtig ist und ob ich raid5 richtig verstanden habe.
Nicht falsch verstehen, bin dir Dankbar für den Hinweis, aber es wäre nett wenn mir jemand meine Fragen trotzdem beantworten könnte (bin etwas knapp bei Kasse).
Danke

@CoolTux
Willst du nicht einem gentoo-Kollegen aushelfen und es mir erklären ^^

MiGo
16.01.09, 13:52
Steht da - "kicking non fresh sdb2 from array".
Anscheinend sind da noch Daten drauf (oder aber der Superblock eines anderen Raids) und das Raid weigert sich, diese zu ueberschreiben. Eventuell die Partitionen einmal mit "dd" nullen und per hand wieder dem Array hinzufuegen (mdadm --add).

der_angler
16.01.09, 19:29
Hmm, aber wie könnte den sowas passieren? Das System lief ja schon 4 Stunden lang mit dem raid5, und während dieser zeit hat es auch die 3 Platten gesynct. Danach stand bei allen 3 platten dann auch ein ok. Und nach einem reboot ist sdb weg, hmmm

der_angler
20.01.09, 10:25
Hallo,

so, da bin ich mal wieder. Ich hatte jetzt zwischenzeitlich die besagte Platte "sdb" per "dd" komplett gelöscht (hat über 7 Stunden gedauert).
Danach habe ich die Platte dann per "cfdisk /dev/sdb" partitioniert und dann mit dem Befehl "mdadm --add ..." wieder alle 3 Partitionen in das Raid eingebunden.

Danach lief auch direkt der sync an und nach 2-3 Stunden waren alle 3 Platten am laufen und gesynct. Ich habe das dann die nächsten 1-2 Tage immer mal wieder getestet und immer war alles in Ordnung.

Tja, 2 Tage (und etliche Neustarts) später dachte ich mir dann schaust mal was deine Platte macht und siehe da ... gleicher Fehler!

Wieder hat es mir meine sdb aus dem Raid gehauen, wieder mit dem gleichen Fehler!

Jetzt gebe ich echt langsam auf und die ct habe ich leider auch nicht mehr bekommen.
Woran kann das noch liegen? Ich bin echt am verzweifeln ....

PS: Kann es daran liegen das day System die Raids niemals richtig beenden kann? Da ja das "/"-Filesystem auf md2 liegt kann er beim neustart/shutdown md2 das Raid nicht richtig beenden. Gibt es dafür ne Lösung?

MiGo
20.01.09, 17:01
Kann es daran liegen das day System die Raids niemals richtig beenden kann? Da ja das "/"-Filesystem auf md2 liegt kann er beim neustart/shutdown md2 das Raid nicht richtig beenden.
Aber es wird ja zumindest vorher read-only eingebunden.

Gibt es dafür ne Lösung?
Meines Wissens nicht - sollte (!) aber auch kein Problem darstellen.

Gibt es irgendwelche Meldungen über Plattenfehler? Kommt mir komisch vor, dass er immer die selbe kickt :)

der_angler
21.01.09, 13:45
leider gibt es keinerlei Fehlermeldung. Die 3 Platten laufen 2-3 Tage ohne Probleme und dann ohne Vorwarnung ist /dev/sdb weg ...
Ich habe jetzt /dev/sdb nochmals per DD komplett gelöscht und werde sie nachher wieder ins Raid einhängen und dann mal genau verfolgen was passiert.

Hat den niemand sonst ein Idee?