Wie mounten Sie ein Windows NTFS RAID / Logical-Laufwerk mit mehreren Festplatten unter Linux?

1797
awksp

Ich habe zwei 500-GB-Festplatten von einem alten Windows-Laptop an meinem Arbeitsplatz. Mein Chef hat mich gebeten, den Inhalt möglichst auf den Dateiserver zu kopieren, mit der Einschränkung, dass absolut keine Daten verloren gehen können.

Normalerweise genügen Backups dafür, aber dies war aus den früheren Tagen der Operation, als Sachen wie Backups nicht strenger aufbewahrt wurden und dieser Typ notorisch schlecht organisiert war, daher bin ich mir nicht sicher, ob die Backups am meisten ausgelastet sind aktuelle (oder auch recht aktuelle) Inhalte.


Das erste, was ich tat, war, Bilder mit zu produzieren ddrescue. Das Laufwerk, auf dem die Partitionstabelle fehlerfrei kopiert wurde, und das andere Laufwerk verloren ~ 150 KiB an Fehlern. Die Bilder wurden schreibgeschützt /dev/loop1und /dev/loop2verwendet losetup. fdisk -lzeigt folgendes:

Disk /dev/loop1: 465.8 GiB, 500107862016 bytes, 976773168 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 /dev/loop2: 465.8 GiB, 500107862016 bytes, 976773168 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 Disklabel type: dos Disk identifier: 0x87afa6ad  Device Boot Start End Sectors Size Id Type /dev/loop2p1 2048 31459327 31457280 15G 27 Hidden NTFS WinRE /dev/loop2p2 * 31459328 31664127 204800 100M 27 Hidden NTFS WinRE /dev/loop2p3 31664128 1191071167 1159407040 552.9G 7 HPFS/NTFS/exFAT /dev/loop2p4 1191071168 1953533951 762462784 363.6G 7 HPFS/NTFS/exFAT 

Die Größe der Partitionen schien zu vermuten, dass es sich hierbei um ein RAID-Array oder ein logisches Windows-Laufwerk handelt, und eine schnelle Überprüfung blkidergab, dass es sich um die Laufwerkstypen handelt isw_raid_member. Beim Versuch, das Array mit mdadm -v --assemble /dev/md0 /dev/loop2 /dev/loop1der folgenden Ausgabe zusammenzusetzen, wurde Folgendes ausgegeben:

mdadm: looking for devices for /dev/md0 mdadm: Cannot assemble mbr metadata on /dev/loop2 mdadm: /dev/loop2 has no superblock - assembly aborted 

Andere Dinge, die ich entweder versucht habe, die Laufwerke zu mounten oder mehr Informationen zu erhalten, waren:

  • mount /dev/loop2 <mount point>: Fehlgeschlagen mit unknown filesystem type 'isw_raid_member'
  • mount -t mit NTFS und exFAT: Dateisystem nicht gefunden
  • mount /dev/loop2p[1234]: Special device <dev> does not exist
  • mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/loop[21]: Staaten, die /dev/loop2scheinbar Teil eines RAID 0-Arrays ohne Geräte sind und ein Erstellungsdatum von 00:00:00 Jan 1 1970 haben
  • mdadm -E /dev/loop[12]: Gibt an, dass kein MD-Superblock erkannt wurde, /dev/loop1und druckt die Partitionen und die MBR-Zaubernummer von aa55für aus/dev/loop2
  • file -s /dev/loop1: druckt /dev/loop1: data
  • file -s /dev/loop2: spuckt einen Textblock aus, der im Wesentlichen besagt, dass es sich um einen DOS / MBR-Boot-Sektor handelt und der Wert für Partitionsoffsets / -größen angegeben.
  • mount -t ntfs -o ro,offset=$((512*2048)) /dev/loop2 /mnt/partition1:

    NTFS signature is missing Failed to mount '/dev/loop3': Invalid argument The device '/dev/loop3' doesn't seem to have a valid NTFS 

    Nein, ich habe das nicht falsch geschrieben 3. Keine Ahnung woher es kam.

Ich habe mir auch das Wiederherstellen eines ausgefallenen Software-RAID angesehen, aber das scheint für bereits funktionierende Linux-Arrays zu sein, die unter Linux wiederhergestellt werden (ganz zu schweigen davon, dass mir einiges über den Kopf geht).

Kann ich irgendetwas tun, um diese Bilder sicher zu installieren?

5
Bitte lassen Sie mich wissen, wenn dies auf einer anderen SE-Site erfolgen sollte. Ich habe über Serverfehler nachgedacht, aber es schien, als könnte dies in anderen Umgebungen passieren, also habe ich mich hier entschieden. awksp vor 8 Jahren 0
Soweit ich feststellen kann, ist LOOP2 die 1. Platte vom Laptop und LOOP1 die 2. Platte. Sieht aus, als hätte der Laptop nur die Festplatte 1. Die Festplatte 2 wurde hinzugefügt und (jetzt erraten) wurden beide Festplatten in dynamische Festplatten in Windows geändert. Dann wurden C: und D: mit Speicherplatz erweitert, der auf der zweiten Platte zugewiesen wurde. Ich weiß nicht, ob es eine Möglichkeit gibt, dies aus Linux heraus zu verstehen. Wenn möglich, würde ich die Festplatten wieder in den ursprünglichen Laptop (oder einen sehr ähnlichen Laptop) einlegen und in Windows booten. Kopieren Sie die Daten von dort. Lassen Sie die Bilder, die Sie erstellt haben, auf eine makellose Startsituation zurückfallen, falls Windows die Festplatten in den Papierkorb bringt. Tonny vor 8 Jahren 0
@Tonny Deine Vermutung klingt vernünftig. Ich hatte gehofft, mit den Bildern zu arbeiten und die Datenträger als Originale zu verwenden, aber jetzt, wo Sie es erwähnen, funktioniert der umgekehrte Weg auch. Das einzige, was mir Sorgen bereitet, sind die fehlerhaften Sektoren auf der 2. Platte. IIRC `dd` ist aufgrund dieser Sektoren um 10 GB ausgefallen, aber alles andere war in Ordnung. Würde dies die Wiederherstellung der Festplatte mit dem Image beeinträchtigen? awksp vor 8 Jahren 0
Es ist wahrscheinlich keine gute Idee, das Bild auf dieselbe Platte zurückzusetzen. Das Schreiben auf diese Platte kann es sogar noch verschlimmern. (Wenn Sie fehlerhafte Sektoren sehen, hat die Festplatte alle ihre Ersatzsektoren bereits aufgebraucht. Sie ist schon länger als tot.) Besorgen Sie sich einfach eine andere Festplatte gleicher Größe oder etwas größer. Ich würde empfehlen, Windows das System beim ersten Booten NICHT chkdsk zu lassen, sondern nur Daten zu booten und zu kopieren. Nachdem dies erledigt ist, lassen Sie es chkdsk und sehen Sie, ob Sie dann weitere Daten wiederherstellen können. Tonny vor 8 Jahren 0
@Tonny Richtig, du hast einen Punkt. Ich glaube nicht, dass wir 2,5-Zoll-Laufwerke oder USB-Adapter haben. Wenn andere Methoden fehlschlagen, gehe ich zum lokalen Computerladen und probiere aus, was Sie vorgeschlagen haben. awksp vor 8 Jahren 0
@KamilMaciorowski Die `mount'-Befehle schlagen mit dem unbekannten Dateisystemtyp 'isw_raid_member' leider fehl. awksp vor 8 Jahren 0
@awksp Wie wäre es, NTFS zu erzwingen, indem den `mount`-Befehlen die Option -t ntfs` hinzugefügt wird? Kamil Maciorowski vor 8 Jahren 0
@KamilMaciorowski Die vollständigen Ergebnisse wurden am Ende der Frage eingefügt. Die Zusammenfassung ist, dass "mount" versucht, auf "/ dev / loop3" zuzugreifen, und scheitert. awksp vor 8 Jahren 0
@ KamilMaciorowski Heiliger Moly, das ist komplex. Es wird jedoch ein bisschen dauern, bis ich das ausprobieren kann; Der Server, auf dem sich die Bilder befinden, ist außerhalb des Büros nicht sichtbar. awksp vor 8 Jahren 0
@KamilMaciorowski Die Kommentarkette wurde am Ende der Frage in Edit geändert. tl; dr: `dmsetup` ist erfolgreich, kann aber selbst mit einem 'offset'-Argument nicht herausfinden, wie etwas montiert werden soll awksp vor 8 Jahren 0
@awksp Es sieht so aus, als wäre dies dann ein falscher Weg. Es tut mir leid, dass ich nicht helfen konnte. Kamil Maciorowski vor 8 Jahren 0
@ KamilMaciorowski :( Das ist zu schade ... Vielen Dank für deine Hilfe! awksp vor 8 Jahren 0
@awksp Check [this] (http://blogs.silicontechnix.com/?p=962). Sieht aus, als könnte "dmraid" für Sie nützlich sein. Es ist nur ein Hinweis, ein Hinweis. Ich denke, "isw_raid_member" deutet auf Intel Software RAID hin. Recherchieren. Kamil Maciorowski vor 8 Jahren 0
Idee aus dem linken Feld: Haben Sie versucht, eine Windows-VM zu starten und Kopien von zwei Bildern darauf zu werfen, um zu sehen, ob M $ magic es herausfinden kann, und dann Samba? Peter Berbec vor 7 Jahren 0
@ PeterBerbec Das ist eine faszinierende Idee. Leider habe ich im Moment keinen einfachen Zugang zu den Bildern, aber ich werde das nächste Mal eine Aufnahme machen awksp vor 7 Jahren 0
@ KamilMaciorowski idk, wenn Sie noch in der Nähe sind, aber ich habe Ihre Anweisungen noch einmal versucht und es tatsächlich geschafft, das Ding zu montieren! Der einzige Unterschied war, dass ich eine andere Anzahl von Sektoren (19553531904 anstelle von 1953546336) und eine "chunk_size" von 256 verwendet habe. Ich weiß nicht, was genau ich diesmal anders gemacht habe, aber ich bin froh, dass es funktioniert hat. Schreibe eine Antwort und ich akzeptiere! awksp vor 6 Jahren 0
@KamilMaciorowski Erwägen Sie auch die Veröffentlichung einer Antwort [hier] (https://superuser.com/questions/1210258/isit-possible-to-recover-mount-fakeraid-image-filestldr-have); Dieser Kerl scheint ein ähnliches Problem zu haben. Er scheint einen Workaround gefunden zu haben, aber eine richtige Antwort zu posten, würde hoffentlich nicht schaden awksp vor 6 Jahren 0
@KamilMaciorowski Und es sieht so aus, als würde deine ursprüngliche Anzahl von Sektoren auch funktionieren (und ist eigentlich korrekter, da ich tatsächlich die 4. Partition auf diese Weise mounten kann). Nicht sicher, warum die Dinge früher nicht funktionierten awksp vor 6 Jahren 0
@ KamilMaciorowski Fertig! Entschuldigung, es hat so lange gedauert awksp vor 6 Jahren 0

1 Antwort auf die Frage

3
Kamil Maciorowski

Hinweis: Ich schreibe diese Antwort, nachdem das OP Hilfe durch Kommentare, Versuche und Fehler erhalten hat. Im Hinblick auf andere Benutzer mache ich die Antwort breiter und wenig generischer.


Wenn diese beiden Festplatten zusammenarbeiten, könnten sie es sein

  1. gespiegelt im RAID1-Stil;
  2. oder verkettet, JBOD-Stil;
  3. oder gestreift im RAID0-Stil.

Die Fälle werden von den am einfachsten zu behandelnden Fällen geordnet. Ich werde Sie anweisen, wie Sie sie voneinander unterscheiden und wie Sie damit umgehen, um die Partitionen schließlich einzubauen.

Die Montage sollte zuerst erfolgen -o ro, bis Sie sicher sind, dass Sie es richtig verstanden haben. In einigen Fällen mountkann dies gelingen und Sie erhalten Zugriff auf die entschlüsselte Verzeichnisstruktur und / oder verschlüsselte Dateien. Wahnsinnige Daten und / oder Metadaten zeigen an, dass Sie es nicht richtig verstanden haben. Wenn Sie schreibgeschützt sind, stellen Sie sicher, dass die Bilder nicht beschädigt werden.


1. gespiegelt im RAID1-Stil

In diesem Fall sollten beide Festplatten die gleichen Daten enthalten, wenn sie fehlerfrei sind. Beide sollten dieselbe gültige Partitionstabelle enthalten. Nur das Bild, das Sie haben, /dev/loop2meldet eine Partitionstabelle. Das kann daran liegen

  • sie wurden überhaupt nicht gespiegelt,
  • oder diese Fehler, die Sie auf den anderen Platten erwähnt haben, sind dort aufgetreten, wo sich die Partitionstabelle befindet (bei DOS-Partitionstabelle ist es MBR, dh ganz am Anfang, Sektornummer 0).

Es gibt jedoch einen großen Hinweis darauf, dass RAID1 in Ihrem Fall kaum wahrscheinlich ist: fdiskEs gibt genau 976773168Sektoren auf einer einzelnen Festplatte, aber der letzte Sektor der vierten Partition ist 1953533951. Dies ist fast doppelt so viel, da das Partitionslayout auf zwei nicht gespiegelten Festplatten erscheint.

Angenommen, Ihre Festplatten waren doppelt so groß und der oben genannte Hinweis traf nicht zu. Wenn Sie der Meinung sind, dass Sie mit gespiegelten Festplatten arbeiten können, arbeiten Sie mit dem fehlerfrei erhaltenen Bild, und lassen Sie das andere Bild in Ruhe. Versuchen Sie, die Partitionen wie folgt einzuhängen:

mount -o ro,offset=$((512*2048)) /dev/loop2 /mnt/partition1 mount -o ro,offset=$((512*31459328)) /dev/loop2 /mnt/partition2 mount -o ro,offset=$((512*31664128)) /dev/loop2 /mnt/partition3 

usw. Sie können sogar nicht den Dateipfad verwenden losetup, /dev/loop2sondern direkt angeben, mountsollten ein eigenes Loop-Gerät erstellen und dies ganz genau handhaben:

mount -o ro,offset=$((512*2048)) /path/to/the/image2.raw /mnt/partition1 

2. verkettet im JBOD-Stil

Wenn Festplatten, die JBOD erstellen, MBR zum Speichern der Partitionstabelle verwenden, fdiskwird sie nur auf der allerersten Festplatte gefunden. Andere Datenträger melden möglicherweise nichts oder einige verrückte Partitionstabellen. Die Wahrscheinlichkeit, eine Partitionstabelle zu erhalten, die von der ersten Platte als gesund erscheint, ist sehr gering, aber selbst dann bedeutet diese Partitionstabelle nichts.

Wenn JBOD-basierte Datenträger GPT zum Speichern der Partitionstabelle verwenden, finden Werkzeuge wie gdiskdie Primärtabelle auf der allerersten Platte, die Sekundärtabelle (Sicherungstabelle) auf der allerletzten.

Sie haben zwei Images, eines davon meldet eine DOS-Partitionstabelle (dh eine Partitionstabelle in MBR), das andere meldet keine Partitionstabelle. Wenn sie JBOD erstellen, wissen Sie, dass derjenige, der dazu gehört, /dev/loop2zuerst geht.

In Ihrem Fall sind die Partitionen 1 und 2 klein genug, um vollständig in die erste Platte von JBOD zu passen. Sie können versuchen, sie mit einem entsprechenden Versatz von der Sohle zu montieren /dev/loop2. Wenn Sie auf diese Weise auf normale Dateisysteme zugreifen können, wissen Sie, dass JBOD wahrscheinlich das richtige Setup ist. Um auf alle Partitionen zugreifen zu können, müssen Sie Images verketten.

Diese Antwort von mir bietet eine Möglichkeit, Bilder zu verketten, ohne das Ergebnis auf die Festplatte zu schreiben. In Ihrem Fall kann das Verfahren sein:

  1. dmsetup create mydisk
  2. Art 0 976773168 linear /path/to/the/image2.raw 0 Enter
  3. Art 976773168 976773168 linear /path/to/the/image1.raw 0 Enter
  4. drücken Sie Ctrl+D

Das resultierende Gerät sollte sein /dev/mapper/mydisk. Versuchen Sie, eine Partition mit der entsprechenden Partition einzuhängen offset=….

Um das Gerät zu zerstören, rufen Sie es auf dmsetup remove mydisk.


3. gestreift im RAID0-Stil

Ähnlich wie bei JBOD wird die Partitionstabelle, wenn Festplatten mit RAID0 erstellt werden, mit MBR gespeichert, fdisknur auf der allerersten Festplatte gefunden. Andere Datenträger melden möglicherweise nichts oder einige verrückte Partitionstabellen. Die Wahrscheinlichkeit, eine Partitionstabelle zu erhalten, die von der ersten Platte als gesund erscheint, ist sehr gering, aber selbst dann bedeutet diese Partitionstabelle nichts.

Wenn Festplatten, die RAID0 erstellen, GPT zum Speichern der Partitionstabelle verwenden, wird die Situation kompliziert. Abhängig von der Größe der Stripe-Größe erhalten Sie möglicherweise die primäre Partitionstabelle von der ersten Festplatte, die sekundäre (Backup-) Partitionstabelle von der letzten Festplatte. Sie sollten einen veralteten MBR von der ersten Festplatte erhalten (sofern kein Lesefehler auftritt).

Sie haben zwei Images, eines davon meldet eine DOS-Partitionstabelle (dh eine Partitionstabelle in MBR), das andere meldet keine Partitionstabelle. Wenn sie RAID0 erstellen, wissen Sie, dass dasjenige, das entspricht, /dev/loop2zuerst geht. Was Sie nicht wissen, ist die Streifengröße. Im Allgemeinen gibt es keine eindeutige Möglichkeit, dies zu erkennen, Sie sollten gemeinsame Werte ausprobieren und die Ergebnisse analysieren.

So verschachteln Sie Ihre Bilder und erstellen ein virtuelles Gerät:

  1. dmsetup create mydisk
  2. Art 0 1953546336 striped 2 256 /dev/loop2 0 /dev/loop1 0 Enter
  3. drücken Sie Ctrl+D

Das resultierende Gerät sollte sein /dev/mapper/mydisk. Die Zahl 256 steht für die Streifengröße von 128 KiB und muss richtig geraten werden. Im Allgemeinen sollte unabhängig von möglichen Problemen mit GPT dmsetupjetzt gdisk -l /dev/mapper/mydiskeine gültige Partitionstabelle zurückgegeben werden, wenn Sie die Stripe-Größe richtig schätzen. Wenn Sie es falsch schätzen, ist die Partitionstabelle möglicherweise ungültig. Wenn es gültig aussieht, versuchen Sie, alle Partitionen mit entsprechenden offset=…Werten bereitzustellen.

In Ihrem Fall wird die Partitionstabelle sicherlich diejenige sein, die Sie von bekommen haben /dev/loop2.

Beachten Sie, dass Sie trotz falscher Vermutungen zwar mounten können, die Dateien jedoch verschlüsselt werden. In diesem Fall umountrufen Sie den Wert anstelle von 256 auf dmsetup remove mydiskund wiederholen Sie ihn dmsetup create…mit einem anderen Wert. Zu versuchende Nummern: 8, 16, 32, 64, 128, 256, möglicherweise andere Potenzen von 2. Wenn möglich, lesen Sie Dateien mit überprüfbarem Inhalt (Medien wie MP3 spielen sie ohne Jitter?) oder formale Struktur (wie PDFs, öffnen sie sich ohne Fehler?), um zu sagen, ob Ihre Vermutung richtig ist. Dateien, die kleiner als die richtige Stripe-Größe sind, zeigen möglicherweise nicht an, dass Ihre Vermutung falsch ist. Sie sollten daher lieber eine Avi von 700 MB verwenden, nicht nur eine Textdatei mit wenigen KB.

Um das Gerät zu zerstören, rufen Sie es auf dmsetup remove mydisk.

Die dritte Option war die, die in meinem Fall funktionierte. Danke für deine Hilfe! awksp vor 6 Jahren 0