Re: RAID5 administrieren

Autor: Markus Hochholdinger <Markus_at_hochholdinger.net>
Datum: Thu, 24 Jul 2008 14:25:33 +0200
Hi,

Am Donnerstag, 24. Juli 2008 00:37 schrieb Werner Holtfreter:
> Am Mittwoch, 23. Juli 2008 22:54:07 schrieb Markus Hochholdinger:
> > Korrekter Weg wäre:
> > * Kaputte Platte aus dem aktiven RAID5 nehmen ("mdadm --set-faulty .."
> > und "mdadm --remove ..")
> > * Jetzt hantieren wie Du lustig bist, dd usw. Im Prinzip könntest Du die
> >   Platte aber auch einfach wieder ins RAID5 integrieren und der Rebuild
> >   schreibt dann eh alles neu ("mdadm --add ..").
> md schreibt wohl nur dann alles neu, wenn der Superblock fehlt, wenn ich
> die Manpage richtig verstanden habe:
> | If an array is using a write-intent bitmap, then devices which have been
> | removed can be re-added in a way that avoids a full reconstruction but
> | instead just updated the blocks that have changed since the device was
> | removed. For arrays with persistent metadata (superblocks) this is done
> | automatically.

Man hat die Möglichkeit dies zu machen! Wenn man mit set-faulty und remove 
eine Platte entfernt hat, kann man auch noch zur Sicherheit ein 
zero-superblock nachschieben. Aber normalerweise sollte bei einem set-faulty 
die Platte komplett draußen sein. Anders, wenn z.B. eine Platte nur 
einen "Hänger" hat und vom md raisgeworfen wird. Dann hilft das block bitmap 
zu protokollieren was sich alles so auf der Platte hätte verändern sollen. 
Wird nun dieselbe Platte wieder integriert werden nur die Teile neu 
synchronisiert, die sich seit dem Rauswurf verändert haben. Der Superblock 
ist hierbei eine entscheidende Rolle so ein Szenario zu erkennen.


> > > Die genullte Partition gehörte zu einem RAID5 aus 3 Partitionen.
> > > Leider klappt die Inbetriebnahme nicht wieder, /dev/sda1 und sdc1
> > > sind nur noch "spare".
> > Wenn du das RAID5 beendet hast ("mdadm --stop") und dann die Platte
> > genullt hast, wissen das die anderen Platten nicht. Bei einem normalen
> > inbetriebnehmen ("mdadm --assemble ..") merkt md dann, dass eigentlich
> > eine Platte fehlt (war das letzte mal ja noch OK) und macht das ganze
> > nicht.
> Verstehe ich richtig: Bei einem Plattenausfall arbeitet das Raid
> unauffällig weiter - aber nur bis zu einem Reboot?

Nein. Stell Dir das so vor, dass jede Festplatte in ihrem Superblock eine Art 
Status des RAID hat. Wenn eine Festplatte ausfällt, dann notieren sich das 
die anderen und das RAID kann beim nächsten Reboot auch mit einer fehlenden 
Platte zusammengestellt werden. ALLERDINGS hängt der Erfolg sehr Stark davon 
ab, wie die jeweilige Linux-Distribution das RAID beim Boot zusammenbaut.


> > Für die, die es wissen, die können mit
> > force "mdadm --assemble /dev/md0 --force .." dem md sagen, dass man schon
> > weiß was man tut. Damit hätte dann das RAID5 mit Angabe der zwei
> > verbliebenen Platten wieder inbetrieb genommen werden können und mit add
> > hätte dann die genullte Platte in das laufende RAID5 wieder aufgenommen
> > werden können.
> > Mit der Annahme /dev/sdd1 ist die genullte Platte:
> >  mdadm --assemble /dev/md0 --force /dev/sda1 /dev/sdc1
> > Oder neu erstellen:
> >  mdadm  --create /dev/md0 --level=5 --raid-disks=3 /dev/sda1 /dev/sdc1
> > missing
> Warum werden hierbei die vorhandenen Daten (Superblock) nicht zerstört?

Ja, das werden sie. Mit dem force sage ich dem md ja, ich weiß schon was ich 
tue. Ich versuche damit das RAID wieder so zusammenzubauen, wie es vorher 
war. Nur eben mit einer fehlenden Platte und ohne Rebuild. Der Superblock ist 
natürlich nach so einer Aktion überschrieben!
Ich hatte hier vergessen, dsas man evtl. verschiedene Kombinationen benutzen 
muss ("/dev/sda1 /dev/sdc1 missing" oder "/dev/sda1 missing /dev/sdc1" 
oder "missing /dev/sda1 /dev/sdc1") bevor man die korrekte Konstellation 
zusammen hat. Den Erfolg testen kann man jeweils wenn man das RAID versucht 
zu mounten.


> Hier muss dann vermutlich folgen: mdadm --add [partition] ?

Wenn es denn wieder funktional ist, dann will man natürlich auch die Redundanz 
wiederherstellen. Aber erst, wenn man sich sicher ist, dass die Daten OK 
sind. Mit dem add stößt man nämlich einen Resync an, welcher dann Daten 
überschreibt. Alles davor verändert keine Daten nur den Superblock.


-- 
Gruß
                                                          \|/
       eMHa                                              (o o)
------------------------------------------------------oOO--U--OOo--
 Markus Hochholdinger
 e-mail  mailto:Markus_at_Hochholdinger.net             .oooO
 www     http://www.hochholdinger.net                (   )   Oooo.
------------------------------------------------------\ (----(   )-
                                                       \_)    ) /
                                                             (_/


--
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: http://wiki.uugrn.org/wiki/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/

Empfangen am 24.07.2008

Dieses Archiv wurde generiert von hypermail 2.2.0 : 24.07.2008 CEST