mdadm Verbund kaputt, re-add funktioniert nicht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
redstorm2050
Beiträge: 7
Registriert: 04.05.2010 16:44:42

mdadm Verbund kaputt, re-add funktioniert nicht

Beitrag von redstorm2050 » 27.11.2016 18:21:20

Hi,
ich habe hier leider ein etwas komplexeres und sehr kniffliges Problem und Ihr seid meine allerletzte Hoffung.
Folgende Anfangsbedingung:
Raid 5 mit 5 Platten

Vor zwei Tagen ist mir eine Platte wegen Hardwaredefekt ausgestiegen (dev/sdb). Sie lief noch, produzierte aber so viele I/O Fehler das das System kaum noch reagiert hat. Also bin ich los und habe eine Neue gekauft. Jetzt habe ich dummerweise ( :facepalm: ) anstelle der defekten Platte eine intakte (dev/sdd) gegen die Neue getauscht. Dann habe ich den Verbund nach einigen Versuchen (immernoch mit der defekten Platte) wieder starten können, woraufhin er winige Minuten später wegen massiven I/O Fehlern der defekten Platte wieder ausstieg. Ok, dachte ich, dumm gelaufen aber die Daten auf der gezogenen Platte sind ja noch da. Also diesmal wirklich die defekte Platte rausgenommen und die sdd wieder eingesetzt.
Das Problem besteht jetzt darin das er die sdd nicht mehr als Platte des Verbunds erkennt, sondern diese für eine Neue Platte hält. Ich habe also jetzt 3/5 vollständig intakte Platten, die ganz Neue und die asynchrone (?) welche ich fälschlicherweise gezogen hatte. Wie bekomme ich die wieder in den Verbund?

Hier sind einige Informationen und was ich schon probiert habe:

Die Ausgabe von mdadm --examine für jede Platte:

Code: Alles auswählen

root@Server-01:~# mdadm --examine /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : dc168f7e:619e7a92:28695097:6b18c0e7
           Name : Server-01:0  (local to host Server-01)
  Creation Time : Fri Mar 27 12:45:32 2015
     Raid Level : raid5
   Raid Devices : 5

 Avail Dev Size : 5860260785 (2794.39 GiB 3000.45 GB)
     Array Size : 11720519680 (11177.56 GiB 12001.81 GB)
  Used Dev Size : 5860259840 (2794.39 GiB 3000.45 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 17a7b3fa:b45631d3:e6ff6a08:b09be20c

    Update Time : Sat Nov 26 18:41:02 2016
       Checksum : a013e5f1 - correct
         Events : 11432

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 4
   Array State : ..AAA ('A' == active, '.' == missing)

root@Server-01:~# mdadm --examine /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x2
     Array UUID : dc168f7e:619e7a92:28695097:6b18c0e7
           Name : Server-01:0  (local to host Server-01)
  Creation Time : Fri Mar 27 12:45:32 2015
     Raid Level : raid5
   Raid Devices : 5

 Avail Dev Size : 5860260785 (2794.39 GiB 3000.45 GB)
     Array Size : 11720519680 (11177.56 GiB 12001.81 GB)
  Used Dev Size : 5860259840 (2794.39 GiB 3000.45 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
          State : clean
    Device UUID : 64c80c2f:f45dfe12:9206fd12:95ffa0b9

    Update Time : Sat Nov 26 17:59:18 2016
       Checksum : cb8c77be - correct
         Events : 11384

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AAAAA ('A' == active, '.' == missing)

root@Server-01:~# mdadm --examine /dev/sde1
/dev/sde1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : dc168f7e:619e7a92:28695097:6b18c0e7
           Name : Server-01:0  (local to host Server-01)
  Creation Time : Fri Mar 27 12:45:32 2015
     Raid Level : raid5
   Raid Devices : 5

 Avail Dev Size : 5860260785 (2794.39 GiB 3000.45 GB)
     Array Size : 11720519680 (11177.56 GiB 12001.81 GB)
  Used Dev Size : 5860259840 (2794.39 GiB 3000.45 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : cf689dd7:7c323de1:dbc8e291:5b79d289

    Update Time : Sat Nov 26 18:41:02 2016
       Checksum : 91712a10 - correct
         Events : 11432

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : ..AAA ('A' == active, '.' == missing)


root@Server-01:~# mdadm --examine /dev/sdf1
/dev/sdf1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : dc168f7e:619e7a92:28695097:6b18c0e7
           Name : Server-01:0  (local to host Server-01)
  Creation Time : Fri Mar 27 12:45:32 2015
     Raid Level : raid5
   Raid Devices : 5

 Avail Dev Size : 5860260785 (2794.39 GiB 3000.45 GB)
     Array Size : 11720519680 (11177.56 GiB 12001.81 GB)
  Used Dev Size : 5860259840 (2794.39 GiB 3000.45 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 8df1ae9f:552979f0:e88ffbf1:34a30581

    Update Time : Sat Nov 26 18:41:02 2016
       Checksum : c00a9a8e - correct
         Events : 11432

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : ..AAA ('A' == active, '.' == missing)
Ich sehe das sdd im "Array State" abweicht und offensichtlich noch denkt das alles in Ordnung ist.

mdstat sagt Folgendes:

Code: Alles auswählen

root@Server-01:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : inactive sde1[2] sdc1[5] sdf1[4]
      8790391177 blocks super 1.2

unused devices: <none>
Hier habe ich versucht die 4 intakten Platten zu "assemblen":

Code: Alles auswählen

root@Server-01:~# mdadm --assemble -f /dev/md0 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: /dev/md0 assembled from 3 drives - not enough to start the array.

root@Server-01:~# dmesg
[...]
[ 1840.313790] md: kicking non-fresh sdd1 from array!
[ 1840.313800] md: unbind<sdd1>
[ 1840.313846] md: export_rdev(sdd1)
[ 1840.360654] async_tx: api initialized (async)
[ 1840.371051] xor: automatically using best checksumming function: generic_sse
[ 1840.387076]    generic_sse: 10751.000 MB/sec
[ 1840.387079] xor: using function: generic_sse (10751.000 MB/sec)
[ 1840.474923] raid6: int64x1   1927 MB/s
[ 1840.542809] raid6: int64x2   1852 MB/s
[ 1840.610721] raid6: int64x4   1751 MB/s
[ 1840.678587] raid6: int64x8   1426 MB/s
[ 1840.746455] raid6: sse2x1    4873 MB/s
[ 1840.814338] raid6: sse2x2    5944 MB/s
[ 1840.882209] raid6: sse2x4    6875 MB/s
[ 1840.882211] raid6: using algorithm sse2x4 (6875 MB/s)
[ 1840.928126] md: raid6 personality registered for level 6
[ 1840.928129] md: raid5 personality registered for level 5
[ 1840.928131] md: raid4 personality registered for level 4
[ 1840.928304] bio: create slab <bio> at 1
[ 1840.928315] md/raid:md0: device sde1 operational as raid disk 2
[ 1840.928318] md/raid:md0: device sdc1 operational as raid disk 4
[ 1840.928320] md/raid:md0: device sdf1 operational as raid disk 3
[ 1840.928633] md/raid:md0: allocated 5332kB
[ 1840.928704] md/raid:md0: not enough operational devices (2/5 failed)
[ 1840.928771] RAID conf printout:
[ 1840.928773]  --- level:5 rd:5 wd:3
[ 1840.928775]  disk 2, o:1, dev:sde1
[ 1840.928777]  disk 3, o:1, dev:sdf1
[ 1840.928778]  disk 4, o:1, dev:sdc1
[ 1840.928970] md/raid:md0: failed to run raid set.
[ 1840.928997] md: pers->run() failed ...
[ 1905.130027] md0: ADD_NEW_DISK not supported
[ 2199.622057] md0: ADD_NEW_DISK not supported
[ 2886.131058] md0: ADD_NEW_DISK not supported
[ 3743.985573] md: md0 stopped.
[ 3743.985583] md: unbind<sde1>
[ 3744.049191] md: export_rdev(sde1)
[ 3744.049289] md: unbind<sdc1>
[ 3744.053287] md: export_rdev(sdc1)
[ 3744.053377] md: unbind<sdf1>
[ 3744.053442] md: export_rdev(sdf1)
[ 3799.428229] md: md0 stopped.
[ 3799.437787] md: bind<sdd1>
[ 3799.437933] md: bind<sdf1>
[ 3799.438070] md: bind<sdc1>
[ 3799.438204] md: bind<sde1>
Sdd1 wurde nicht akzeptiert..

Danach sah es so aus und ich habe einen re-add der Platte versucht:

Code: Alles auswählen

root@Server-01:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Mar 27 12:45:32 2015
     Raid Level : raid5
  Used Dev Size : -1
   Raid Devices : 5
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sat Nov 26 18:41:02 2016
          State : active, FAILED, Not Started
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : Server-01:0  (local to host Server-01)
           UUID : dc168f7e:619e7a92:28695097:6b18c0e7
         Events : 11432

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       0        0        1      removed
       2       8       65        2      active sync   /dev/sde1
       4       8       81        3      active sync   /dev/sdf1
       5       8       33        4      active sync   /dev/sdc1


root@Server-01:~# mdadm --re-add /dev/md0 /dev/sdd1
mdadm: --re-add for /dev/sdd1 to /dev/md0 is not possible

root@Server-01:~# dmesg
[...]
[ 1840.313790] md: kicking non-fresh sdd1 from array!
[ 1840.313800] md: unbind<sdd1>
[ 1840.313846] md: export_rdev(sdd1)
[ 1840.360654] async_tx: api initialized (async)
[ 1840.371051] xor: automatically using best checksumming function: generic_sse
[ 1840.387076]    generic_sse: 10751.000 MB/sec
[ 1840.387079] xor: using function: generic_sse (10751.000 MB/sec)
[ 1840.474923] raid6: int64x1   1927 MB/s
[ 1840.542809] raid6: int64x2   1852 MB/s
[ 1840.610721] raid6: int64x4   1751 MB/s
[ 1840.678587] raid6: int64x8   1426 MB/s
[ 1840.746455] raid6: sse2x1    4873 MB/s
[ 1840.814338] raid6: sse2x2    5944 MB/s
[ 1840.882209] raid6: sse2x4    6875 MB/s
[ 1840.882211] raid6: using algorithm sse2x4 (6875 MB/s)
[ 1840.928126] md: raid6 personality registered for level 6
[ 1840.928129] md: raid5 personality registered for level 5
[ 1840.928131] md: raid4 personality registered for level 4
[ 1840.928304] bio: create slab <bio> at 1
[ 1840.928315] md/raid:md0: device sde1 operational as raid disk 2
[ 1840.928318] md/raid:md0: device sdc1 operational as raid disk 4
[ 1840.928320] md/raid:md0: device sdf1 operational as raid disk 3
[ 1840.928633] md/raid:md0: allocated 5332kB
[ 1840.928704] md/raid:md0: not enough operational devices (2/5 failed)
[ 1840.928771] RAID conf printout:
[ 1840.928773]  --- level:5 rd:5 wd:3
[ 1840.928775]  disk 2, o:1, dev:sde1
[ 1840.928777]  disk 3, o:1, dev:sdf1
[ 1840.928778]  disk 4, o:1, dev:sdc1
[ 1840.928970] md/raid:md0: failed to run raid set.
[ 1840.928997] md: pers->run() failed ...
[ 1905.130027] md0: ADD_NEW_DISK not supported
Zum Schluss bin ich noch über folgende Lösung gestolpert, welche allerdings auch nicht funktionierte:

Code: Alles auswählen

root@Server-01:~# mdadm --fail /dev/md0 /dev/sdd1
mdadm: set device faulty failed for /dev/sdd1:  No such device
root@Server-01:~# mdadm --remove /dev/md0 /dev/sdd1
mdadm: hot remove failed for /dev/sdd1: No such device or address
root@Server-01:~# mdadm --add /dev/md0 /dev/sdd1
mdadm: /dev/md0 has failed so using --add cannot work and might destroy
mdadm: data on /dev/sdd1.  You should stop the array and re-assemble it.
Hat irgendjemand noch eine Idee oder nen Ansatz in welche Richtung ich weiter forschen kann? Ich bin hier echt am Ende mit meinem Latein und befürchte schon das ich das Ding vergessen kann :/

Danke schonmal,

Tobi

gbotti
Beiträge: 846
Registriert: 16.07.2010 14:24:43
Wohnort: München

Re: mdadm Verbund kaputt, re-add funktioniert nicht

Beitrag von gbotti » 02.01.2017 15:36:35

Hallo Tobi,

durch deine "Rettungsversuche" hast du das ganze leider vermutlich schlimmer gemacht. An einem RAID ändert sich einiges sobald irgend etwas geändert wird. Auch wenn sich die Daten nicht geändert haben verändern sich zumindest die Werte in der RAID-Konfiguration (Zeitstempel / Prüfsummen, Festplattenkofiguration, ...) weswegen die "alte" Platte als "neue" erkannt wurde. Sie ist halt aus der Konfiguration herausgeflogen.

Wie man das ganze lösen kann ist vermutlich komplizierter, weswegen es Firmen gibt, die sich mit so etwas auseinander setzen. Es gibt auch Softwares (zum Teil angeblich kostenfrei und viele auch kostenpflichtig) die RAID-Systeme angeblich wiederherstellen können, allerdings habe ich keine Erfahrung mit diesen Softwares.

Vorab wäre es Sinnvoll mit Klonen der Festplatten zu testen. Ich habe die nachfolgenden Befehle nicht getestet weswegen ich keine Garantie dafür geben kann (und will) dass sie funktionieren bzw. nicht ein totaler Datenverlust daraus resultiert!

Ich habe Google mal kurz bemüht. Hier ist einem was ganz ähnliches passiert. Eventuell hilft statt eines "--re-add" ein einfaches "--add" zu machen.

Hier wird geraten das RAID mit Beispielsweise mit den Parametern "--assemble --force" zu starten.
Für dich könnte das also in etwa so aussehen:

Code: Alles auswählen

sudo mdadm --assemble --force /dev/md127 /dev/sdc1 /dev/sdf1 /dev/sdd1 /dev/sde1
Wie erwähnt. Das sind alles theoretische Befehle. Ich habe nichts getestet und übernehme keine Garantie für eventuelle Datenschäden. Mir ist soetwas ähnliches mal mit einem RAID10 passiert. Ich hatte damals SATA-Kabel an nem Cage falsch angeschlossen und deswegen die falsche Platte gezogen. Ich habe das RAID allerdings komplett neu aufgebaut und die Datensicherung der letzten Nacht wiederhergestellt.

Viel Erfolg.
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft

Antworten