PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei Fragen zu mdadm und RAID5



Ragamuffin
25.05.07, 09:46
Moin Leute,

also ich hätte zwei kleine Fragen zu meinem neu eingerichteten Software RAID5 mit mdadm unter Debian 4.0 Etch. ^^

1. Wie ich den Ausfall einer einzelnen Platte kompensiere ist mir mittlerweile bekannt. Ist ja kein Thema mal eben die kaputte Platte mit mdadm rauszunehmen und die neue Platte dort einzusetzen. Was mich viel mehr interessiert: Was muss ich eingeben, um wieder Zugriff auf mein RAID zu erhalten, nachdem ich das System neu installieren musste, weil meine Boot-Platte (nicht im RAID) abgeschmiert ist? Ich mein, das kann ja durchaus vorkommen und dann steh' ich da. *g*

2. Ich habe bei der Einrichtung meines RAIDs einen kleinen Fehler gemacht: Anstatt nun auf jeder der drei Platten im RAID eine große, primäre Partition zu erstellen (hdf1, hdg1, hdh1) hab ich die Platten direkt so wie sie sind (hdf, hdg, hdh) unpartitioniert als md0 eingebaut und dieses dann einfach formatiert. fdisk -l gibt folgendes bei den RAID-Platten und dem RAID selbst aus:


Disk /dev/hdf: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Disk /dev/hdg: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/hdg doesn't contain a valid partition table

Disk /dev/hdh: 250.0 GB, 250059350016 bytes
4 heads, 1 sectors/track, 122099292 cylinders
Units = cylinders of 4 * 512 = 2048 bytes

This doesn't look like a partition table
Probably you selected the wrong device.

Device Boot Start End Blocks Id System
/dev/hdh1 33010 77971940 155877859+ c7 Syrinx
/dev/hdh2 ? 1 1 0 0 Empty
Partition 2 does not end on cylinder boundary.
/dev/hdh3 536903922 536904164 483+ c7 Syrinx
/dev/hdh4 ? 1 1 0 0 Empty
Partition 4 does not end on cylinder boundary.

Disk /dev/md0: 500.1 GB, 500118454272 bytes
2 heads, 4 sectors/track, 122099232 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Device Boot Start End Blocks Id System

Laufen tut aber alles, konnte md0 problems mit ext3 formatieren und es ist auch schon großflächig mit Daten belegt.
Die Frage ist: Kann es ignoriert werden, da es ja läuft? Oder werde ich dadurch irgendwann Probleme kriegen, wenn ich mal ne Platte wechseln muss?

Schonmal Danke im Voraus! :)

$kuLL
25.05.07, 16:51
Hm, also ein schon existierendes Array wird von mdadm über --assemble gefunden. Das bringt mich aber gleich zu Frage 2, denn das funktioniert imho nur, wenn der Partitionstyp 0xFD ist (RAID autodetect). Da das bei dir aber nicht der Fall ist (du hast ID C7), könnte ich mir vorstellen, dass mdadm ohne eine konfigurierte mdadm.conf Probleme haben wird das Array einzubinden.

Ragamuffin
25.05.07, 17:26
Ja, das ist echt Kraut & Rüben und beunruhigt mich auch ziemlich. Hab mir vorhin angesehen wie das eigentlich aussehen soll und das sah wesentlich sinnvoller und geordneter aus. Bin grade dabei die rund 310 GB von meinem Share wegzukopieren, um danach das RAID neu zu erstellen.

Wollte dabei so vorgehen:


mdadm --stop /dev/md0
mdadm --remove /dev/md0
fdisk /dev/hd[f bis h] und ne große, primäre Partition erstellen
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/hd{f,g,h}1
mkfs.ext3 -j /dev/md0
echo "DEVICE /dev/hdf1 /dev/hdg1 /dev/hdh1" > /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Korrekt, oder?

$kuLL
25.05.07, 19:19
mdadm --remove /dev/md0
Mit --remove entfernt man eigentlich Partitionen aus einem Array, nicht das Array selber. Die Informationen welche Platte zu welchem Verbund gehört, stehen im Superblock. Also um einen wirklich sauberen Zustand zu erreichen solltest du den Superblock der Partitionen mit Nullen überschreiben:

mdadm --zero-superblock /dev/hdf1
# usw.
Der Rest ist ok, aber achte auf den richtigen Partitionstyp beim Partionieren --> 0xfd

Ragamuffin
26.05.07, 14:20
Okay, hab es jetzt endlich hinbekommen, dass er das RAID macht. Aus bis vor kurzem unerfindlichen Gründen hatte er nach einem Neustart nur noch /dev/hdh1 im Array (/proc/mdstat) und die Gerätedateien /dev/hdf1 und /dev/hdh1 existierten garnicht mehr. Sehr merkwürdig.

Ich bin mir nicht sicher, wodurch ich es jetzt geschafft habe das zu beheben, aber ich denke es liegt an dem Eintrag "spare-devices=1" den mdadm beim Neuerstellen selbsständig gesetzt hat. Wobei ich da keinen Sinn drin sehe: Ich hab ein RAID-5 mit 3 Platten, die alle genutzt werden. Was soll bitte mein Spare Drive sein?

$kuLL
26.05.07, 14:35
Ja, diesen "Bug" hatte ich auch mal, deswegen habe ich mir angewöhnt beim Erstellen immer explizit --spare-devices=0 mit anzugeben, wenn ich kein Sparedrive verwende.

Ragamuffin
26.05.07, 15:02
Jup, das hab ich auch gemacht, hat aber u.a. den Fehler ebenfalls erzeugt, als mit den fehlenden Gerätedateien und dem alleinigen Eintrag in der mdstat.

Dabei war ich wirklich gründlich, habe sogar nicht nur den Superblock genullt, sondern auf allen Platten auch ein
dd if=/dev/zero of=/dev/hdX1 bs=1024 count=10000ausgeführt, um sicher zu gehen, dass da nicht noch irgendwelche Überbleibsel des alten RAIDs sind. Hat aber nicht viel gebracht.

Habe jetzt spares=0 händisch in die mdadm.conf gesetzt und grade mal gebootet - scheint zu funktionieren. :)

Ragamuffin
26.05.07, 21:35
Was mir grade mal so auffällt: Wie ist es überhaupt möglich, dass mdadm mit nur zwei aktiven Platten plus einer Platte, die derzeit noch mit dem Resync beschäftigt ist, ein funktionstüchtiges RAID-5 aufzubauen?

Ich meine, es basiert doch darauf, dass von jeder Platte 2/3 ihrer Daten nutzbar ist, der Rest ist die Parität, die aus je der Hälfte der nutzbaren Daten der beiden anderen Platten errechnet wird. Demnach dürften das RAID-5 bei nur zwei aktiven Festplatten garnicht nutzbar sein, da es auf den Resync der 3. Platte warten müsste.

Wieso aber kann ich während des Rebuilds die volle Kapazität von zwei ganzen Platten nutzen? :confused: