ubuntuusers.de

Fehlerhaftes RAID6 mit mdadm wiederherstellen

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

homeserver_wacken

Anmeldungsdatum:
1. März 2025

Beiträge: 20

Hi,

ich habe ein mdadm-RAID6 mit 6 Festplatten, jedoch sind 3 davon ausgefallen. Wie kann ich meine Daten von dem Array wiederherstellen.

Das sind die Superblöcke der HDDs:

Devices 0:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sudo mdadm --examine /dev/sdb1
/dev/sdb1: 
         Magic : a92b4efc 
       Version : 1.2 
   Feature Map : 0x1 
    Array UUID : b815d2e8:5d39c936:20bd5de6:22ebcc68 
          Name : asus:0  (local to host asus) 
 Creation Time : Sat Nov  5 21:01:35 2016 
    Raid Level : raid6 
  Raid Devices : 6 

Avail Dev Size : 3906764942 (1862.89 GiB 2000.26 GB) 
    Array Size : 7813529600 (7451.56 GiB 8001.05 GB) 
 Used Dev Size : 3906764800 (1862.89 GiB 2000.26 GB) 
   Data Offset : 262144 sectors 
  Super Offset : 8 sectors 
  Unused Space : before=262056 sectors, after=142 sectors 
         State : active 
   Device UUID : 38cf3af1:2df40f88:abbcdaa4:0ade5456 

Internal Bitmap : 8 sectors from superblock 
   Update Time : Fri Nov 22 22:36:05 2024 
 Bad Block Log : 512 entries available at offset 72 sectors 
      Checksum : 90d2dc83 - correct 
        Events : 285529 

        Layout : left-symmetric 
    Chunk Size : 512K 

  Device Role : Active device 0 
  Array State : AA...A ('A' == active, '.' == missing, 'R' == replacing) 

Device 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sudo mdadm --examine /dev/sdc1 
/dev/sdc1: 
         Magic : a92b4efc 
       Version : 1.2 
   Feature Map : 0x1 
    Array UUID : b815d2e8:5d39c936:20bd5de6:22ebcc68 
          Name : asus:0  (local to host asus) 
 Creation Time : Sat Nov  5 21:01:35 2016 
    Raid Level : raid6 
  Raid Devices : 6 

Avail Dev Size : 3906764942 (1862.89 GiB 2000.26 GB) 
    Array Size : 7813529600 (7451.56 GiB 8001.05 GB) 
 Used Dev Size : 3906764800 (1862.89 GiB 2000.26 GB) 
   Data Offset : 262144 sectors 
  Super Offset : 8 sectors 
  Unused Space : before=262056 sectors, after=142 sectors 
         State : active 
   Device UUID : 1abcb134:1fa0d5be:fe8fb002:5ea6550d 

Internal Bitmap : 8 sectors from superblock 
   Update Time : Fri Nov 22 22:36:05 2024 
 Bad Block Log : 512 entries available at offset 72 sectors 
      Checksum : 1fe610fe - correct 
        Events : 285529 

        Layout : left-symmetric 
    Chunk Size : 512K 

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

Devices 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sudo mdadm --examine /dev/sdd1 
/dev/sdd1: 
         Magic : a92b4efc 
       Version : 1.2 
   Feature Map : 0x1 
    Array UUID : b815d2e8:5d39c936:20bd5de6:22ebcc68 
          Name : asus:0  (local to host asus) 
 Creation Time : Sat Nov  5 21:01:35 2016 
    Raid Level : raid6 
  Raid Devices : 6 

Avail Dev Size : 3906764942 (1862.89 GiB 2000.26 GB) 
    Array Size : 7813529600 (7451.56 GiB 8001.05 GB) 
 Used Dev Size : 3906764800 (1862.89 GiB 2000.26 GB) 
   Data Offset : 262144 sectors 
  Super Offset : 8 sectors 
  Unused Space : before=262056 sectors, after=142 sectors 
         State : active 
   Device UUID : 2a43a512:a038504b:b7b153aa:825239cd 

Internal Bitmap : 8 sectors from superblock 
   Update Time : Mon Jul  8 21:13:58 2024 
 Bad Block Log : 512 entries available at offset 72 sectors 
      Checksum : f128e672 - correct 
        Events : 262684 

        Layout : left-symmetric 
    Chunk Size : 512K 

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

Device 3:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sudo mdadm --examine /dev/sde1 
/dev/sde1: 
         Magic : a92b4efc 
       Version : 1.2 
   Feature Map : 0x1 
    Array UUID : b815d2e8:5d39c936:20bd5de6:22ebcc68 
          Name : asus:0  (local to host asus) 
 Creation Time : Sat Nov  5 21:01:35 2016 
    Raid Level : raid6 
  Raid Devices : 6 

Avail Dev Size : 3906764942 (1862.89 GiB 2000.26 GB) 
    Array Size : 7813529600 (7451.56 GiB 8001.05 GB) 
 Used Dev Size : 3906764800 (1862.89 GiB 2000.26 GB) 
   Data Offset : 262144 sectors 
  Super Offset : 8 sectors 
  Unused Space : before=262056 sectors, after=142 sectors 
         State : clean 
   Device UUID : 6f193684:b35e8a32:387bef2c:d6a8b4da 

Internal Bitmap : 8 sectors from superblock 
   Update Time : Sat Jul 20 12:30:50 2024 
 Bad Block Log : 512 entries available at offset 72 sectors 
      Checksum : da1b5f3b - correct 
        Events : 264031 

        Layout : left-symmetric 
    Chunk Size : 512K 

  Device Role : Active device 3 
  Array State : AA.AAA ('A' == active, '.' == missing, 'R' == replacing)

Device 4:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sudo mdadm --examine /dev/sdf1 
/dev/sdf1: 
         Magic : a92b4efc 
       Version : 1.2 
   Feature Map : 0x1 
    Array UUID : b815d2e8:5d39c936:20bd5de6:22ebcc68 
          Name : asus:0  (local to host asus) 
 Creation Time : Sat Nov  5 21:01:35 2016 
    Raid Level : raid6 
  Raid Devices : 6 

Avail Dev Size : 3906764942 (1862.89 GiB 2000.26 GB) 
    Array Size : 7813529600 (7451.56 GiB 8001.05 GB) 
 Used Dev Size : 3906764800 (1862.89 GiB 2000.26 GB) 
   Data Offset : 262144 sectors 
  Super Offset : 8 sectors 
  Unused Space : before=262056 sectors, after=142 sectors 
         State : clean 
   Device UUID : aa489ad7:7db661c6:aeb69f46:863b24f3 

Internal Bitmap : 8 sectors from superblock 
   Update Time : Fri Nov 22 22:15:36 2024 
 Bad Block Log : 512 entries available at offset 72 sectors 
      Checksum : f4176b8d - correct 
        Events : 285525 

        Layout : left-symmetric 
    Chunk Size : 512K 

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

Device 5:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sudo mdadm --examine /dev/sdg1 
/dev/sdg1: 
         Magic : a92b4efc 
       Version : 1.2 
   Feature Map : 0x1 
    Array UUID : b815d2e8:5d39c936:20bd5de6:22ebcc68 
          Name : asus:0  (local to host asus) 
 Creation Time : Sat Nov  5 21:01:35 2016 
    Raid Level : raid6 
  Raid Devices : 6 

Avail Dev Size : 3906764942 (1862.89 GiB 2000.26 GB) 
    Array Size : 7813529600 (7451.56 GiB 8001.05 GB) 
 Used Dev Size : 3906764800 (1862.89 GiB 2000.26 GB) 
   Data Offset : 262144 sectors 
  Super Offset : 8 sectors 
  Unused Space : before=262056 sectors, after=142 sectors 
         State : active 
   Device UUID : 947d50b4:4836ab89:a131ce96:dbb6c96a 

Internal Bitmap : 8 sectors from superblock 
   Update Time : Fri Nov 22 22:36:05 2024 
 Bad Block Log : 512 entries available at offset 72 sectors 
      Checksum : 5bec1ac6 - correct 
        Events : 285529 

        Layout : left-symmetric 
    Chunk Size : 512K 

  Device Role : Active device 5 
  Array State : AA...A ('A' == active, '.' == missing, 'R' == replacing)

Die devices 0, 1 und 5 sind noch OK. Und auch device 4 ist quasi bis zum schluss gelaufen, der Event-Counter ist hat nur 4 Events weniger. Da ich die Daten von Device 4 vollständig auf eine neue HDD spiegeln konnte, sollte ich doch die Daten retten können, indem ich das RAID6 mit den devices 0,1,4,5 wieder zusammenbaue. Was muss ich dafür machen? Folgendes habe schon probiert, jedoch ohne erfolg:

1
2
sudo mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdf1 /dev/sdg1 
mdadm: /dev/md0 assembled from 3 drives - not enough to start the array.

Dannach wollte ich mit --re-add die /dev/sdf1 nochmals hinzufügen auch das hat aber nicht geklappt:

1
2
sudo mdadm /dev/md0 --re-add /dev/sdf1 
mdadm: Cannot get array info for /dev/md0

Das RAID wird momentan nicht als RAID6 erkannt sondern als RAID0.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sudo mdadm --detail /dev/md0 
/dev/md0: 
       Version : 1.2 
    Raid Level : raid0 
 Total Devices : 4 
   Persistence : Superblock is persistent 

         State : inactive 

          Name : asus:0  (local to host asus) 
          UUID : b815d2e8:5d39c936:20bd5de6:22ebcc68 
        Events : 285529 

   Number   Major   Minor   RaidDevice 

      -       8        1        -        /dev/sdb1 
      -       8       17        -        /dev/sdc1 
      -       8       33        -        /dev/sdf1 
      -       8       49        -        /dev/sdg1 

Vielen Dank schon mal vorab für eure Hilfe.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7775

Du kannst dein Glück mit --assemble --force probieren (das bereits vorhandene md device vorher mit --stop entfernen).

Ansonsten bleibt nur noch ein re-create aber da musst du sehr genau wissen was du tust und alles haarklein angeben (Plattenreihenfolge, Offsets, usw.).

Device 2 + 3 scheinen schon vor Monaten aus dem Array rausgeflogen zu sein, die solltest du beim assemble force gar nicht erst mit reinnehmen und bei einem etwaigen re-create als missing angeben.

Was man bei create beachten muss hatte ich hier mal überflogen https://unix.stackexchange.com/a/131927/30851

homeserver_wacken

(Themenstarter)

Anmeldungsdatum:
1. März 2025

Beiträge: 20

Danke für die schnelle Antwort. Ich habe es auch mit der --force Option versucht, mit dem gleichen Ergebnis. Kann ich auch bei assemble ein missing mit angeben. Vielen Dank für den Link, den muss ich mir in Ruhe angucken, das ganze scheint sehr fehleranfällig zu sein.

homeserver_wacken

(Themenstarter)

Anmeldungsdatum:
1. März 2025

Beiträge: 20

So, ich habe mir das jetzt angeguckt und hätte das mit dem folgenden Befehl versucht zusammenzubauen:

1
sudo mdadm --create /dev/md0 --assume-clean \ --level=6 --chunk=512K --metadata=1.2 --data-offset=262144s \ --raid-devices=6 /dev/sdb1 /dev/sdc1 missing /dev/sdd1 missing /dev/sde1 /dev/sdf1 //dev/sdg1

Zur besseren Übersichtlichkeit hier die device roles übersetzt zu den Laufwerksbuchstaben.

  • device0 = sdb1 = OK

  • device1 = sdc1 = OK

  • device2 = sdd1 = missing

  • device3 = sde1 = missing

  • device4 = sdf1 = hoffentlich OK

  • device5 = sdg1 = OK

Ist das so richtig? Bin mir nicht ganz sicher wie ich mit den missing devices umgehen muss, die mittig im Array sitzen.

Wie kann ich das ganze im read-only Modus testen?

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7775

In deinem Beispiel hast du device role 0=sdb1, 1=sdc1, 2=missing, 3=sdd1, 4=missing, 5=sde1, 6=sdf1, 7=sdg1

Aber bei raid-devices=6 darfst du ja nur 0-5 haben.

Du darfst sdd1 und sde1 gar nicht auflisten in dem Befehl, wenn die nicht teilnehmen sollen.

Falls du zwischendurch mal rebooted haben solltest: die Buchstaben können sich ändern, daher vorher nochmal checken.

Und im Zweifel erstmal auf Overlay experimentieren. Oder du erstellst leere Loop-Devices und machst mdadm create mal darauf, dann kannst du dir das Ergebnis im examine anschauen.

homeserver_wacken

(Themenstarter)

Anmeldungsdatum:
1. März 2025

Beiträge: 20

Ah ja, das macht so viel mehr Sinn. Das wäre dann also so:

1
sudo mdadm --create /dev/md0 --assume-clean \ --level=6 --chunk=512K --metadata=1.2 --data-offset=262144s \ --raid-devices=6 /dev/sdb1 /dev/sdc1 missing missing /dev/sdf1 /dev/sdg1

Wobei die Laufwerksbuchstaben die device role Reihnenfolge einhalten müssen, wenn diese sich durch einen Neustart mit nur 4 angeschlossenen HDDs geändert haben.

Ich habe bezüglich des Overlay FS was gefunden und würde es bei mir so umsetzen:

1
2
3
4
5
sudo mkdir /mnt/raid #Das Verzeichnis, in dem das RAID-Array gemountet wird.
sudo mkdir /mnt/overlay #Das Verzeichnis, in dem das Overlay-Dateisystem gemountet wird.
sudo mkdir /mnt/upper #Das Verzeichnis, in dem die Änderungen gespeichert werden.
sudo mkdir /mnt/work #Ein Arbeitsverzeichnis, das für OverlayFS benötigt wird.
sudo mount -t overlay overlay -o lowerdir=/mnt/raid,upperdir=/mnt/upper,workdir=/mnt/work /mnt/overlay #Hiermit möchte ich das OverlayFS mounten und meine Daten auf /mnt/overlay erwarten.

Mir ist aber auch nicht so ganz klar wie ich es anstellen muss, dass die Superblöcke nicht überschrieben werden. Ich hätte erwartet, dass ich das Overlay über die /dev/sdx1 legen muss und erst dann das RAID zusammenpuzzeln darf. Da habe ich aber nichts gefunden, ob das so überhaupt geht.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7775

Overlay ist hier beschrieben, war in meinem vorigen Link mit verlinkt

https://archive.kernel.org/oldwiki/raid.wiki.kernel.org/index.php/Recovering_a_failed_software_RAID.html#Making_the_harddisks_read-only_using_an_overlay_file

Du kannst es aber auch so probieren... Overlay ist eben auf Nummer Sicher (noch besser wäre, Vollkopie von jeder Platte).

Kommt eben drauf an auf welchem Level der Datenrettung man spielen möchte, streng genommen ist erstmal jeder Schreibzugriff (und damit auch mdadm --create) riskant.

homeserver_wacken

(Themenstarter)

Anmeldungsdatum:
1. März 2025

Beiträge: 20

Vielen Dank für die detailierte Hilfe. Ich konnte meine Daten wiederherstellen. Letztendlich habe ich ein vollständiges Backup gemacht und dann mit folgendem Befehl das RAID erneunt erstellt:

1
sudo mdadm --create /dev/md0 --assume-clean --level=6 --chunk=512K --metadata=1.2 --data-offset=262144s --raid-devices=6 /dev/sdc1 /dev/sdd1 missing missing /dev/sdb1 /dev/sda1

In dem Befehl aus meinem vorherigen Post sind ein paar \ enthalten gewesen die falsch waren. Die Laufwerksbezeichnungen haben sich geändert, da ich den Server neugestartet hatte. Daher passt die Zuordnung nicht mehr mit der Liste aus dem vorherigen Post überein.

Antworten |