Wie mounte ich eine Festplatte aus einem zerstörten RAID-System?

16

Ich habe eine schreckliche Situation, in der ich Daten von einem beschädigten RAID-System in einem Rettungs-Debian-Linux wiederherstellen muss. Ich möchte sie nur im Nur-Lese-Modus in / mnt / rescue einbinden, um VMWare GSX-Images auf einen anderen Computer kopieren und später auf ESXi migrieren zu können. Die Ausgabe für relevante Befehle ist wie folgt.

fdisk -l

Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005e687

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         523     4200997   fd  Linux raid autodetect
/dev/sda2             524         785     2104515   fd  Linux raid autodetect
/dev/sda3             786      182401  1458830520   fd  Linux raid autodetect

Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014fc7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         523     4200997   fd  Linux raid autodetect
/dev/sdb2             524         785     2104515   fd  Linux raid autodetect
/dev/sdb3             786      182401  1458830520   fd  Linux raid autodetect

Disk /dev/md0: 4301 MB, 4301717504 bytes
2 heads, 4 sectors/track, 1050224 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

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

Disk /dev/md1: 2154 MB, 2154954752 bytes
2 heads, 4 sectors/track, 526112 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md1 doesn't contain a valid partition table

Ich habe versucht, die Datenträger wie folgt zu mounten.

mount -o ro /dev/sda1 /mnt/rescue

Dann bekomme ich folgenden Fehler.

mount: unknown filesystem type 'linux_raid_member'

Das erratene Dateisystem läuft auch nicht gut.

mount -o ro -t ext3 /dev/sda1 /mnt/rescue/
mount: /dev/sda1 already mounted or /mnt/rescue/ busy

Also habe ich versucht, ein virtuelles Gerät wie folgt zu erstellen.

mdadm -A -R /dev/md9 /dev/sda1

Dies führt zu der folgenden Meldung.

mdadm: cannot open device /dev/sda1: Device or resource busy
mdadm: /dev/sda1 has no superblock - assembly aborted

Jetzt bin ich verloren, ich habe keine Ahnung, wie ich die Festplatten wiederherstellen und die Daten zurückholen soll. Das Folgende ist die Ausgabe von mda --examine für alle 3 Festplatten (ich denke, es sollte 3x RAID1-Festplatten sein).

/ dev / sda1:

          Magic : a92b4efc
        Version : 0.90.00
           UUID : 6708215c:6bfe075b:776c2c25:004bd7b2 (local to host rescue)
  Creation Time : Mon Aug 31 17:18:11 2009
     Raid Level : raid1
  Used Dev Size : 4200896 (4.01 GiB 4.30 GB)
     Array Size : 4200896 (4.01 GiB 4.30 GB)
   Raid Devices : 3
  Total Devices : 2
Preferred Minor : 0

    Update Time : Sun Jun  2 00:58:05 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 9070963e - correct
         Events : 19720


      Number   Major   Minor   RaidDevice State
this     1       8        1        1      active sync   /dev/sda1

   0     0       0        0        0      removed
   1     1       8        1        1      active sync   /dev/sda1
   2     2       8       17        2      active sync   /dev/sdb1

/ dev / sda2:

          Magic : a92b4efc
        Version : 0.90.00
           UUID : e8f7960f:6bbea0c7:776c2c25:004bd7b2 (local to host rescue)
  Creation Time : Mon Aug 31 17:18:11 2009
     Raid Level : raid1
  Used Dev Size : 2104448 (2.01 GiB 2.15 GB)
     Array Size : 2104448 (2.01 GiB 2.15 GB)
   Raid Devices : 3
  Total Devices : 2
Preferred Minor : 1

    Update Time : Sat Jun  8 07:14:24 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 120869e1 - correct
         Events : 3534


      Number   Major   Minor   RaidDevice State
this     1       8        2        1      active sync   /dev/sda2

   0     0       0        0        0      removed
   1     1       8        2        1      active sync   /dev/sda2
   2     2       8       18        2      active sync   /dev/sdb2

/ dev / sda3:

          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4f2b3b67:c3837044:776c2c25:004bd7b2 (local to host rescue)
  Creation Time : Mon Aug 31 17:18:11 2009
     Raid Level : raid5
  Used Dev Size : 1458830400 (1391.25 GiB 1493.84 GB)
     Array Size : 2917660800 (2782.50 GiB 2987.68 GB)
   Raid Devices : 3
  Total Devices : 2
Preferred Minor : 2

    Update Time : Sat Jun  8 14:47:00 2013
          State : clean
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0
       Checksum : 2b2b2dad - correct
         Events : 36343894

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     1       8        3        1      active sync   /dev/sda3

   0     0       0        0        0      removed
   1     1       8        3        1      active sync   /dev/sda3
   2     2       0        0        2      faulty removed

cat /proc/mdstat
Personalities : [raid1]
md2 : inactive sda3[1](S) sdb3[2](S)
      2917660800 blocks

md1 : active raid1 sda2[1] sdb2[2]
      2104448 blocks [3/2] [_UU]

md0 : active raid1 sda1[1] sdb1[2]
      4200896 blocks [3/2] [_UU]

md2 scheint beschädigt zu sein und es ist wahrscheinlich der Überfall mit meinen VMWare-Images.

Ich möchte auf die Daten von md2 (die Daten auf der aktiven und nicht beschädigten Festplatte, d. H. / Dev / sda3) zugreifen, indem ich sie außerhalb des Raids mounte.

Ist es eine gute Idee, nur auszuführen

mdadm --manage /dev/md2 --remove /dev/sda3 

(würde es auch funktionieren, da md2 von fdisk nicht gesehen wird)?

Soll ich die anderen Raids md0 und md1 durch Laufen wieder zusammenbauen

mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1

?

UPDATE 0: Ich kann md0 und md2 nicht zusammenbauen.

root@rescue ~ # mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
mdadm: cannot open device /dev/sda1: Device or resource busy
mdadm: /dev/sda1 has no superblock - assembly aborted
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sda3 /dev/sdb3
mdadm: cannot open device /dev/sda3: Device or resource busy
mdadm: /dev/sda3 has no superblock - assembly aborted

Eine Montage mit mount -t auto ist nicht möglich.

root@rescue ~ # mount -t auto -o ro /dev/md0 /mnt/rescue/
/dev/md0 looks like swapspace - not mounted
mount: you must specify the filesystem type
root@rescue ~ # mount -t auto -o ro /dev/md2 /mnt/rescue/
mount: you must specify the filesystem type

Das Mounten von / dev / md1 funktioniert, es sind jedoch keine VMWare-Daten vorhanden.

root@rescue /mnt/rescue # ll
total 139M
-rw-r--r-- 1 root root 513K May 27  2010 abi-2.6.28-19-server
-rw-r--r-- 1 root root 631K Sep 16  2010 abi-2.6.32-24-server
-rw-r--r-- 1 root root 632K Oct 16  2010 abi-2.6.32-25-server
-rw-r--r-- 1 root root 632K Nov 24  2010 abi-2.6.32-26-server
-rw-r--r-- 1 root root 632K Dec  2  2010 abi-2.6.32-27-server
-rw-r--r-- 1 root root 632K Jan 11  2011 abi-2.6.32-28-server
-rw-r--r-- 1 root root 632K Feb 11  2011 abi-2.6.32-29-server
-rw-r--r-- 1 root root 632K Mar  2  2011 abi-2.6.32-30-server
-rw-r--r-- 1 root root 632K Jul 30  2011 abi-2.6.32-33-server
lrwxrwxrwx 1 root root    1 Aug 31  2009 boot -> .
-rw-r--r-- 1 root root 302K Aug  4  2010 coffee.bmp
-rw-r--r-- 1 root root  89K May 27  2010 config-2.6.28-19-server
...

UPDATE 1:

Ich habe versucht, md2 und md0 zu stoppen und noch einmal zusammenzubauen.

mdadm -S /dev/md0

root@rescue ~ # mount -t auto -o ro /dev/md0 /mnt/rescue/
/dev/md0 looks like swapspace - not mounted
mount: you must specify the filesystem type

mdadm -S /dev/md2

root@rescue ~ # mount -t auto -o ro /dev/md2 /mnt/rescue/
mount: you must specify the filesystem type

Irgendwelche Ideen?

UPDATE 2:

Das Zusammenbauen von einer Festplatte funktioniert aufgrund der folgenden Fehlermeldung nicht.

root@rescue ~ # mdadm -S /dev/md2
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sda3
mdadm: /dev/md2 assembled from 1 drive - not enough to start the array.

root@rescue ~ # mdadm -S /dev/md2
mdadm: stopped /dev/md2
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sdb3
mdadm: /dev/md2 assembled from 1 drive - not enough to start the array.

Sogar ein neuer Überfall schlägt fehl.

root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm --assemble /dev/md9 /dev/sda3
mdadm: /dev/md9 assembled from 1 drive - not enough to start the array.

root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm --assemble /dev/md9 /dev/sdb3
mdadm: /dev/md9 assembled from 1 drive - not enough to start the array.

Das Erstellen einer neuen MD-Platte schlägt ebenfalls fehl.

root@rescue ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[1] sdb1[2]
      4200896 blocks [3/2] [_UU]

md1 : active raid1 sda2[1] sdb2[2]
      2104448 blocks [3/2] [_UU]

unused devices: <none>
root@rescue ~ # mdadm -A -R /dev/md9 /dev/sda3
mdadm: failed to RUN_ARRAY /dev/md9: Input/output error
mdadm: Not enough devices to start the array.
root@rescue ~ # cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md9 : inactive sda3[1]
      1458830400 blocks

md0 : active raid1 sda1[1] sdb1[2]
      4200896 blocks [3/2] [_UU]

md1 : active raid1 sda2[1] sdb2[2]
      2104448 blocks [3/2] [_UU]

unused devices: <none>
root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm -A -R /dev/md9 /dev/sdb3
mdadm: failed to RUN_ARRAY /dev/md9: Input/output error
mdadm: Not enough devices to start the array.

UPDATE 3:

Das Entfernen von Datenträgern aus MD2 funktioniert nicht.

mdadm --remove /dev/md2 /dev/sda3
mdadm: cannot get array info for /dev/md2

UPDATE 4:

Endlich läuft Assemble mit --forcehoffentlich hat es geklappt. Ich kopiere jetzt Dateien auf einen anderen Server.

Tony Stark
quelle
mdadm --assembleist der Weg zu gehen. Versuchen Sie es ohne --remove.
Hauke ​​Laging
mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 mdadm: /dev/md0 has been started with 2 drives (out of 3). Aber dann schlägt das Mounten fehl (ich kenne den Dateisystemtyp nicht). mount -o ro /dev/md0 /mnt/rescue /dev/md0 looks like swapspace - not mounted mount: you must specify the filesystem type
Tony Stark
Könnte sein sd?1 ist Swapspace. Versuchen Sie , zu montieren md1und md2und zu montieren mit mount -t auto ....
Hauke ​​Laging
@HaukeLaging: Ich habe versucht, md0, md1 und md2 zusammenzusetzen (siehe aktualisierten Beitrag). Nur md1 wird erfolgreich zusammengebaut und montiert. Die anderen beiden können nicht zusammengebaut und montiert werden. Irgendwelche Ideen?
Tony Stark
1
Konnten Sie dieses Problem beheben? Bitte erwägen Sie, eine Selbstantwort mit der Lösung zu veröffentlichen, die für Sie funktioniert hat (oder die vorhandene Antwort zu akzeptieren, wenn dies hilfreich war), zum Nutzen zukünftiger Besucher.
ein Lebenslauf vom

Antworten:

3

In meinem Fall habe ich CentOS 7 aufgerufen und versucht, allen Anweisungen auf dieser Seite zu folgen. Ich stieß immer wieder auf eine Besetztmeldung. Der Grund meiner Meinung nach, warum Sie das bekommen

mdadm: Gerät / dev / sda1 kann nicht geöffnet werden: Gerät oder Ressource belegt

Fehlermeldung ist, weil das Gerät bereits als etwas anderes gemountet ist.

Ich wollte auch überhaupt keine Änderungen an der Festplatte vornehmen, da mein Anwendungsfall darin bestand, eine sehr große Datei aus meinem RAID1-Array zu extrahieren, die sonst nicht auf jede erdenkliche Weise extrahiert werden konnte, und der schnellste Weg bestand darin, eines der Laufwerke herauszunehmen Ich möchte das Laufwerk wieder einlegen und habe meine Konfiguration auch noch an Ort und Stelle.

Folgendes habe ich nach einigen Online-Recherchen auf anderen Websites getan: HINWEIS : NAS: 0 ist der Name meines NAS-Geräts, der entsprechend ersetzt wird.

Es wurde automatisch eingehängt, obwohl es heißt, dass es nicht eingehängt ist, wenn Sie den Befehl mount ausführen, können Sie überprüfen, ob es eingehängt wurde, indem Sie Folgendes ausführen:

[root@localhost Desktop]# cat /proc/mdstat 
Personalities : [raid1] 
md127 : active (auto-read-only) raid1 sdb2[0]
      1952996792 blocks super 1.2 [2/1] [U_]

unused devices: <none>

Beachten Sie, dass es /dev/md127für mich automatisch unter gemountet wurde .

OK dann:

[root@localhost Desktop]# mdadm -A -R /dev/md9 /dev/sdb2 
mdadm: /dev/sdb2 is busy - skipping

[root@localhost Desktop]# mdadm --manage --stop /dev/md/NAS\:0 
mdadm: stopped /dev/md/NAS:0

[root@localhost Desktop]# mdadm -A -R /dev/md9 /dev/sdb2
mdadm: /dev/md9 has been started with 1 drive (out of 2).

[root@localhost Desktop]# mount /dev/md9 /mnt/

Das hat es für mich getan.

Im Zweifelsfall DD das Laufwerk, um eine vollständige Kopie zu erstellen und CentOS oder eine andere Linux Live-CD zu verwenden.

Eugene.
quelle
Diese Antwort hat mir am meisten geholfen. Vielen Dank! Für mich war es auch unter montiert, /dev/md127also habe ich den Stop so ausgegeben mdadm --manage --stop /dev/md127.
Ferenc Géczi
4

Wenn Sie können, sollten Sie ein ddImage Ihrer gesamten Festplatte erstellen, bevor Sie etwas tun, nur für den Fall.

Sie sollten in der Lage sein, / dev / sda3 direkt zu mounten, sobald Sie mdadmes freigeben :

mdadm --stop / dev / md2

mount / dev / sda3 / mnt / rescue

Wenn das nicht funktioniert, testdiskkönnen normalerweise Dateisysteme auf Raw-Block-Geräten gefunden werden.

Skorgu
quelle
1
Das funktioniert bei mir nicht. msgstr "mount: unbekannter Dateisystemtyp 'linux_raid_member'"
Cerin
4

Ich habe es auf die "harte Tour" gemacht: (Zuerst, wenn es möglich ist, klonen Sie diese Festplatte, bevor Sie etwas tun!)

dmesgfür das Raid-Disk oder try (Beispiel: sdc1)

$ fdisk -l

Ändern Sie das RAID-DISK-Flag in Ihr Linux-Dateisystem (ext3 oder so), speichern Sie dieses und starten Sie es neu.

Danach

$ mdadm --zero-superblock /dev/sdx 

und voila kannst du besteigen

$ mount /dev/sdc1 /mnt
Gast
quelle
1
Dadurch wird das RAID deaktiviert und ein "normales" Laufwerk erstellt.
CousinCocaine