# [solved] ein paar Fragen zu Raid-5-Array

## Gucky_der_Mausbiber

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 VorrausLast edited by Gucky_der_Mausbiber on Thu Jan 22, 2009 12:31 pm; edited 1 time in total

----------

## SvenFischer

1. Bootsektor kopieren: dd if=/dev/sda of=/dev/sdb bs=512 count=1 (oder so ähnlich, bitte vorher überprüfen).

Soweit ich es verstanden habe, kann die Boot Partition auf einem RAID1 liegen, aber kommt die Installation und dann macht man daraus ein RAID 1

2. Ich glaube Du musst die HD erst partitionieren, dann dem RAID hinzufügen und der übernimmt dann die "Formatierung"=Synchronisation. Hotplug hängt vom Controller ab und ob das im Kernel aktiviert ist (glaube ich).

3. Ich finde da schon einen Fehler:

 *Quote:*   

> md: kicking non-fresh sdb2 from array!
> 
> md: unbind<sdb2>
> 
> md: export_rdev(sdb2) 

 

In einer der letzten ct war ein fantastischer Artikel "Linux RAID".

Ach ja: SWAP braucht/soll man nicht aufs RAID legen, da das schon integriert ist!

----------

## Earthwings

Zu 1.) Als Alternative zu dd wie von SvenFischer angesprochen geht es auch per Grub. Zumindest über die Grub Shell ging es bei mir problemlos, per grub-install hatte ich es nicht probiert. Einfach für alle (drei) Festplatten wiederholen.

----------

## Gucky_der_Mausbiber

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?

----------

## Max Steel

Rein theoretisch müsste das deine initramfs(die du ja wahrscheinlich brauchst) machen...

Sozusagen als letzte Befehle vorm ausgehen.

----------

## Gucky_der_Mausbiber

hmm, also nein, bisher brauche und nutze ich (soweit ich weiß) kein initramfs.

Wofür sollte ich das den brauchen? Und wie kann ich es so einbauen und konfigurieren das er die raids sauber abmeldet?

Und zu guter letzt, kann das der Grund dafür sein das sdb ständig ausfällt? Ist ne nagelneue Platte per DD gelöscht.

----------

## 69719

Eventuell braucht die sdb Platte eine weile länger als die anderen Platten um zu starten, dass Problem habe ich auch bei meinen Raid 5 und konnte es mit dem Kernelparameter rootdelay=10 (10 Sekunden warten) lösen. Wenn bei mir die Platte zu spät am System angemeldet wurde und des Raid schon gestartet wurde so wurde diese auch bei mir immer entfernt.

----------

## Gucky_der_Mausbiber

Das scheint zu funktionieren, danke. Habe das rootdelay angehängt und seitdem laufen alle 3 Platten ohne Fehler.

Danke.

----------

## fangorn

Noch ein später Kommentar. 

Meines Wissens ist die Verlagerung von swap auf ein (Software)RAID5 eher kontraproduktiv. Der swap Algorithmus macht bei mehreren swap Partitionen WIMRE automatisch eine Art Striping. 

Und wie bereits erwähnt wurde kann GRUB kein RAID. Da aber bei RAID1 alle Inhalte mit einer einzelnen Partition identisch sind kann Grub prima mit den einzelnen Bestandteilen umgehen. Also nicht mit /dev/md0 sondern mit /dev/sda1, /dev/sdb1 und /dev/sdc1

----------

