PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RAID5 _vollständig_ auflösen und neu Assemblieren



tomekk228
27.07.09, 07:14
Guten Morgen Jungs,

ich habe es mal wieder geschafft. Ich habe es geschafft ein RAID5 nach dem Muster zu erstellen, wie ich es mir vorgestellt habe, und das der RAID5 beim neustart assembliert wird und als /home gemountet wird.

Allerdings, habe ich es auch es geschafft, dieses RAID5 vollkommen zu vernichten bzw "unbrauchbar" zu machen...

Ich werde jetzt nicht um den heißen Brei reden, und auch die "Symptome" des Problems von mir mit dem RAID nicht zu 100% erläutern da es schlicht gut 2 Seiten wegnehmen würde.

Ich habe (bzw will wieder) ein RAID5 nach folgenden Muster erstellt das ich mir ausgedacht habe:

http://www.schaltkreis-blog.de/wp-content/uploads/2009/06/raid.png

Das habe ich beim ersten Mal(!) auch geschafft:



midna:/home/tomekk# cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4]
md1 : active raid5 sdc[0] md0[2] sdd[1]
976772992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md0 : active raid0 sda1[0] sdb1[1]
488391808 blocks 64k chunks

unused devices:
midna:/home/tomekk#
midna:/home/tomekk# mdadm –detail /dev/md1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: metadata format 00.90 unknown, ignored.
/dev/md1:
Version : 00.90
Creation Time : Fri Jul 24 01:41:54 2009
Raid Level : raid5
Array Size : 976772992 (931.52 GiB 1000.22 GB)
Used Dev Size : 488386496 (465.76 GiB 500.11 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Sun Jul 26 16:27:27 2009
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

UUID : 4d181081:f6d4ddb2:430fa026:6458319f
Events : 0.12410

Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
2 9 0 2 active sync /dev/disk/by-id/md-uuid-3c82d111:f97a8d1c:430fa026:6458319f
midna:/home/tomekk#
midna:/home/tomekk# fdisk -l

Disk /dev/hda: 81.9 GB, 81964302336 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×000d62d1

Device Boot Start End Blocks Id System
/dev/hda1 1 8510 68356543+ 83 Linux
/dev/hda2 8511 9118 4883760 83 Linux
/dev/hda3 9119 9847 5855692+ 83 Linux
/dev/hda4 9848 9964 939802+ 82 Linux swap / Solaris

Disk /dev/sda: 250.0 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×00000000

Device Boot Start End Blocks Id System

Disk /dev/sdb: 250.0 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×00000000

Device Boot Start End Blocks Id System

Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×00000000

Disk /dev/sdc doesn’t contain a valid partition table

Disk /dev/sdd: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×00000000

Disk /dev/sdd doesn’t contain a valid partition table

Disk /dev/md0: 500.1 GB, 500113211392 bytes
2 heads, 4 sectors/track, 122097952 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0×00000000

Disk /dev/md0 doesn’t contain a valid partition table

Disk /dev/md1: 1000.2 GB, 1000215543808 bytes
2 heads, 4 sectors/track, 244193248 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0×00000000

Disk /dev/md1 doesn’t contain a valid partition table
midna:/home/tomekk#

(http://www.schaltkreis-blog.de/neuer-server-ist-online/)

Wie ihr aber allerdings sieht, hat /dev/sda und /dev/sdb eine Partitionstabelle (waren vorher schonmal im gebrauch).

/dev/sdc und /dev/sdd allerdings nicht, die sind auch neu.

Nun, als alles zusammen gebaut wurde, /dev/sda und /dev/sdb zu einem RAID0:

mdadm --create /dev/md0 --auto=yes --level=0 /dev/sda /dev/sdb
und /dev/sdc, /dev/sdd und dann /dev/md0 zu einem RAID5:

mdadm --create /dev/md1 --auto=yes --level=5 /dev/sdc /dev/sdd /dev/md0
funktionierte auch alles tadellos. Zu guter letzt habe ich

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
ausgeführt, damit die RAID's beim neustart auch assembliert werden, was auch nach einem Neustart funktioniert hat.

Als ich jedoch einfach spaßeshalber, und um das RAID5 zu testen, das RAID5 mit Daten füllte, und dann eine der Platten als "faulty" makiert habe (/dev/md0):

mdadm --fail /dev/md1 /dev/md0
und dann mit

mdadm --remove /dev/md1 /dev/md0
entfernt habe, und somit ein [UU_] im RAID5 bekommen habe, war ich zufrieden das die Daten noch da waren, und wollte die Platte /dev/md0 wieder ins RAID5 einhängen:

mdadm --manage --add /dev/md1 /dev/md0
Nachdem hat er das RAID5 auch wieder hergestellt, bzw die "neue" Platte eingebunden (was gut 1 Stunde dauerte) hat, hatte ich wieder ein CLEAN [UUU] Status und ich wollte einfach mal den Server neustarten, um zu gucken ob auch alles beim Neustart noch funktioniert (halt der Ausfall einer Platte simuliert).

Das tut es anscheinend aber nicht. Denn beim Boot vorgang wird aufeinmal _zuerst_(!) md1 zusammen gebaut, und dann erst md0. Ich brauch es aber genau andersrum. Damit md1 korrekt zusammen gebaut werden kann, muss vorher schon md0 assembliert sein.

Die Reihenfolge in /etc/mdadm/mdadm.conf ist auch korrekt.

Daraus folgt das beim Hochfahren immer das RAID5 nur mit 2 Platten gebaut wird, und als "deprecated" maskiert wird.

Nachdem das System vollständig hochgefahren ist, kann ich mich als Root anmelden, und mit mdadm -a /dev/md1 /dev/md0 nachträglich hinzufügen. Allerdings synchronosiert er das RAID5 immer (was ja auch logisch ist).

Als ich im Internet keine Lösung gefunden habe, wie ich Debian (Stable) beibringe, das er zum verrecken erst /dev/md0 und dann /dev/md1 bauen soll (sprich die Reihenfolge), habe ich einfach das RAID5 mit:



mdadm --zero-superblock /dev/sda
mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc
mdadm --zero-superblock /dev/sdd
gelöscht, und die Einträge aus mdadm.conf entfernt.

Jedoch, steht nun bei jedem Booten, immer noch auf dem Bildschirm:



Assemble RAID Device md1: No Devices for md1, skipping
Assemble RAID Device md0: No Devices for md0, skipping

(oder so ähnlich, ganz frei gemerkt)

Dies habe ich aber getrost ignoriert, und habe mein RAID5 Plan neu gebaut (erst md0, dann md1). Funktionierte auch. Nur beim Booten baute er die falsch zusammen.

Also habe ich die RAID's wieder gelöscht, incl alle Einträge in Configs die nötig sind und habe es erneut versucht. Nur diesmal habe ich mein RAID5 nicht md1 genannt sondern md0 und mein RAID0 md1 statt md0 (habe natürlich die RAID-Create befehle angepasst). Und es funktionierte beim Hochfahren immer noch nicht! Jetzt nahm er md0 zuerst und dann md1.

Egal was ich probierte, er wollte immer erst das RAID5 starten.

Nach Stunden der Verzweiflung, habe ich sogar mdadm incl _allen_ Configs gelöscht (--purge) und neu installiert. Brachte nichts.

Habe sogar mal das /dev/md0 und /dev/md1 Device gelöscht, brachte ebenso nichts. Die waren nach nem Neustart wieder da.

Ich hatte ja das RAID5 mal zum laufen gebracht, beim besagten ersten mal, incl das beim Boot alles in Ordnung war und er die RAID's korrekt zusammen baute, und vorallem in der richtigen Reihenfolge, doch seitdem ich wie oben ein "Festplattenausfall" simuliert habe, funktioniert nichts mehr wie es soll.

Und das soll ja nicht so sein. Weil das ist ja der Grund weswegen ich ein RAID5 aufbauen will. Damit eine Festplatte ausfallen kann und dann einfach nur gegen eine neue tauschen und hinzufügen muss und alles ist gut, egal wie oft das System neugestartet wird - bis ende der Welt :)

Kann mir da einer bitte helfen oder erklären was mein Fehler ist/war?

Systeminfos:


tomekk@midna:~$ uname -a
Linux midna 2.6.26-2-686 #1 SMP Sun Jun 21 04:57:38 UTC 2009 i686 GNU/Linux
tomekk@midna:~$
| Debian Stable

//Edit: Ich sehe grad wie schrecklich ich alles Formuliert und Erklärt habe, und von der Rechtschreibung fangen wir erst garnicht an, aber ich Sitz im Büro und hatte mein Kaffee noch nicht *gg*

quinte17
27.07.09, 09:32
eine möglichkeit ist eine falsche initramfs. nach dem editieren von etc/mdadm.conf kann es sein dass du die aktualisieren musst.
bei debian systemen wäre das wohl:


sudo update-initramfs -u

schau doch mal in deine initramfs rein (gzip und cpio sind meist dein freund) und suche mal was da so drin steht

tomekk228
27.07.09, 10:06
eine möglichkeit ist eine falsche initramfs. nach dem editieren von etc/mdadm.conf kann es sein dass du die aktualisieren musst.
bei debian systemen wäre das wohl:


sudo update-initramfs -u

schau doch mal in deine initramfs rein (gzip und cpio sind meist dein freund) und suche mal was da so drin steht

Ok, baue dann mal das RAID neu auf.

Komischerweiße kommt jetzt diese Meldung bei /proc/mdstat:


midna:/home/tomekk# cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4]
md1 : active (auto-read-only) raid5 md0[3](S) sdd[1] sdc[0]
976772992 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]

md0 : active raid0 sdb[1] sda[0]
488394880 blocks 64k chunks

unused devices: <none>
midna:/home/tomekk#
Was soll das (S) dahinter heißen?

Edit:

Nope, brachte nichts. /proc/mdstat sieht nun genau so aus wie das von grade, nur ohne md0. Sprich nur 2 Devices =/

Ich gucke mal wie ich an den Bootlog komme.

Edit2: Schade. Kann kein Bootlog machen, da er erst ab "Setting Systemclock" anfängt zu loggen. Davor passiert aber so einiges. Ich habe mal die Auflösung höher gestellt damit ich wenigstens an den Text komme.

Da steht ganz am anfang:

md: No Devices for md0
md: No Devices for md1
/dev/md1 file exist
md: Starting md1 with 2 from 3 Devices

und noch viel mehr. Ich schau mal wie ich an mehr ran komme.

tomekk228
27.07.09, 17:58
Das Problem hat sich erledigt...

Freebsd + ZFS. Läuft alles wunderbar und macht keine Probleme, wie zu erwarten :)