it-swarm.com.de

Wie kann ich Daten auf einer Festplatte bereitstellen / wiederherstellen, die Teil eines MDADM-RAID 1 auf einem anderen Computer war?

Einige Hintergrundinformationen

  • Die Festplatte selbst wurde von einem Freund "bearbeitet" und soll noch intakt, unbeschädigt und noch mounten/wiederherstellbar sein
  • Die Festplatte war Teil eines Software-Raids 1 unter Ubuntu 12.04
  • Die andere Festplatte im ursprünglichen RAID 1 wurde formatiert und für einen anderen Zweck verwendet, sodass die aktuelle Festplatte (die betreffende) technisch immer noch Teil eines nicht mehr vorhandenen RAID ist

Was ich schon versucht habe

  • Grundmontage

    • Ich habe einen Eintrag zu fstab hinzugefügt, die Festplatte als ext3/ext4 markiert und versucht, sie bereitzustellen.
    • Beim Mounten wird der folgende Fehler angezeigt

      wrong fs type, bad option, bad superblock on

    • Und in dmesg

      EXT4-fs (sdc1): VFS: Can't find ext4 filesystem

  • Ich habe versucht, den Dateisystemtyp der Festplatte zu finden, und habe mir etwas ausgedacht

    $Sudo file -s /dev/sdc
    /dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8

Wo ich Hilfe brauche/Meine Fragen

  • Gibt es eine Möglichkeit, die Festplatte in ext4 zu konvertieren, ohne die Daten zu beschädigen?
  • Gibt es eine einfache Möglichkeit, den Datenträger vom Typ Linux 83 zu mounten und die Daten wiederherzustellen?
  • Ich habe derzeit eine andere Festplatte frei, falls es eine Möglichkeit gibt, den Raid irgendwie neu zu erstellen
  • Mein Hauptziel ist es, die Daten von der Festplatte wiederherzustellen. Ich bin offen für alle Möglichkeiten.

Aktualisieren

Ausgabe einiger Befehle

  • fdisk -l/dev/sdc

    $fdisk -l /dev/sdc

    Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
    255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0005ed9c

    Device Boot Start End Blocks Id System
    /dev/sdc1 63 1953520064 976760001 83 Linux

  • Datei -s/dev/sdc1

    $file -s /dev/sdc1
    /dev/sdc1: data

  • hexdump -C -n 32256/dev/sdc (Ich bin mir nicht sicher, ob dies helfen könnte oder nicht)

    $hexdump -C -n 32256 /dev/sdc`
    00000000  fa b8 00 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |................|
    00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
    00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
    00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
    00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
    00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001b0  00 00 00 00 00 00 00 00  9c ed 05 00 00 00 00 fe  |................|
    000001c0  ff ff 83 fe ff ff 3f 00  00 00 82 59 70 74 00 00  |......?....Ypt..|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00007e00
    
19
Adam

Dies funktioniert hervorragend in Ubuntu 14.04:

Sudo -i
mdadm --assemble --scan

Sie erhalten:

mdadm: /dev/md/1 has been started with 1 drive (out of 2)

Dann mounten und sehen Sie Ihre Dateien:

cd /mnt && mkdir to-restore-md1 && mount /dev/md1 to-restore-md1
ls -la to-restore-md1
14
vchepurnov

Linux mdraid hat mehrere Metadatenformate . In den Formaten 0.9 und 1.0 werden die Metadaten am Ende des enthaltenen Geräts abgelegt, und die Nutzdaten (das Dateisystem) beginnen am Anfang des Geräts und können direkt aufgerufen werden, ohne die RAID-Ebene zu durchlaufen. In den Formaten 1.1 und 1.2 werden die Metadaten in der Mitte bzw. am Anfang des enthaltenen Geräts platziert, sodass die Nutzlast versetzt ist.

Das Ubuntu-Installationsprogramm erstellt Volumes im 1.2-Metadatenformat, sodass Ihre Daten nach den Metadaten und nicht am Anfang des Geräts beginnen.

Der einfachste Weg, auf diese Daten zuzugreifen, besteht darin, das RAID-Gerät zusammenzubauen. In einem RAID-1-Volume ist ein einzelnes Gerät ausreichend.

madadm -A /dev/sdc1

(Hör hier auf, es sei denn, du magst Schmerzen.)

Sie können auch mit einem Versatz auf die Daten zugreifen. Der einzige Punkt, den ich sehen kann, ist, wenn Sie in einem sehr alten Kernel arbeiten müssen, der die Formate 1.x mdraid nicht unterstützt. Bestimmen Sie zunächst den Versatz mdadm -E /dev/sdc1: suche die Zeile Data Offset : SSS sectors. Ein mdadm-Sektor besteht aus 512 Bytes.

sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1

In der Verzweiflung wird bei 1.x-Formaten der Datenoffset in den Bytes 128–135 der Metadaten Little-Endian¹ gespeichert. 1.2 Metadaten sind 4096 Bytes nach dem Beginn des Geräts.

Sie können die Partitionstabelle auch ändern, damit sie weiter startet. Seien Sie sehr vorsichtig mit Ihrer Arithmetik. Tun Sie dies nur, wenn Sie die Festplatte langfristig in einem alten System verwenden möchten, das nicht auf das RAID-Gerät zugreifen kann.

¹ Oder mit Plattform-Endianness? Ich bin mir nicht sicher.

Zu meiner Überraschung konnte/kann ich die Daten einfach mit in erster Linie wiederherstellen.

Die hier erhaltene Hilfe war von unschätzbarem Wert. Nachdem ich verschiedene vorgeschlagene Kombinationen sowie meine eigenen Mix-Ins ausprobiert hatte, schien die ideale Methode (um die Festplatte wie gewohnt zu mounten und zu verwenden) keine Option mehr zu sein. In diesem Fall ist es meine Lösung, auf Datenwiederherstellung zurückzugreifen.

5
Adam

Es scheint, dass Sie den mdadm-Superblock bereits gezappt haben. Wenn es dort war und das Format 1.1 oder 1.2 hatte, ist das Dateisystem höchstwahrscheinlich auf Offset 2048 Sektoren. Sie können e2fsck /dev/sdc1?offset=2048 Ausführen, um zu erzwingen, dass ab diesem Offset nach dem Dateisystem gesucht wird. Wenn es gefunden wird, können Sie Ihre Partitionstabelle so ändern, dass sie darauf verweist, wo das Dateisystem tatsächlich startet. Sie können parted /dev/sdc Und den Befehl unit s Verwenden, um Einheiten von Sektoren zu verwenden. print die Tabelle, notieren Sie den Start- und Endsektor, dann rm die Partition, erstellen Sie sie dann mit mkpart neu und verwenden Sie denselben Endsektor, fügen Sie jedoch den Offset zum Start hinzu Sektor.

Wenn 2048 nicht funktioniert, können Sie auch 1985 ausprobieren.

3
psusi