Ist es möglich, Windows 2008 LDM-Partitionen unter Linux zu lesen?
Wir haben fünf 512-GB-LUNS, die über ISCSI zu einem toten Windows 2008 exportiert wurden und diese Box will sie nicht mehr haben. Windows glaubt, dass sie jetzt Raw-Geräte sind ... Also würde ich gerne die Partitionen mit Linux lesen. Ich benutze das neueste ubuntu, um wenigstens einige der Daten zu speichern. Das Problem ist, dass die gesamte Dokumentation, die ich bisher gefunden habe, veraltet zu sein scheint (oft über w2k oder XP Logical Disk Manager (LDM). Aber ich denke jetzt ist es anders mit 2008.
Testdisk [0] gib mir die folgende Ausgabe
%Vor%Hinweis: Jede der fünf LUNs hat dieselbe Partitionstabelle.
In vielen Dokumentationen [1] sprechen sie entweder von ldminfo, die keine nützlichen Informationen zurückgibt. Ich vermute, dass es jetzt veraltet ist, nur weil es sehr schwer zu finden war :) Und weil es nicht funktioniert, nehme ich an, dass Windows 2008 ein anderes Format verwendet.
%Vor%Dann habe ich versucht, sie mit dmsetup zu concattieren, aber wieder kein Glück. So habe ich dmsetup benutzt:
%Vor%Also noch kein NTFS-Dateisystem:)
Hat jemand irgendwelche Ideen, wie ich die Daten von dort extrahieren oder mir ein paar Hinweise geben kann?
Alles klar, ich werde auf meine eigene Frage antworten, um anderen denselben Schmerz zu ersparen.
Wenn Sie eine Wiederherstellung durchführen, kopieren Sie IMMER IHRE DATEN und arbeiten Sie auf der Kopie. Ändern Sie NICHT die ursprünglichen "kaputten" Daten. Das Ding sagte, lesen Sie weiter.
Installieren Sie das Suchkit und die Testdiskette. Hoffentlich gibt es Pakete für Ihre Distribution:)
%Vor%Hinweis: testdisk gibt Ihnen die gleichen Informationen mit weniger Details # testdisk / list LUN01
Alle Informationen zur Festplattenreihenfolge, Datengröße und anderen chiffrierten Attributen über die Partition wird in der LDM-Metadatenpartition gefunden. W2k8 hat nicht hat sich seit diesem Dokument [2] so sehr verändert, obwohl einige Größen unterschiedlich sind und einige Attribute sind neu (und offensichtlich unbekannt) ...
%Vor%In Zeile 0002410 sollte der Name des Servers angezeigt werden. Beruhigend? Aber wir sind nach der Festplattenreihenfolge und Festplatten-ID. Scrollen Sie nach unten.
Bei Zeile 0003210 sollte 'Disk1' gefolgt von einer langen Zeichenfolge angezeigt werden.
%Vor%Dies bedeutet, dass der erste Datenträger dieses Volumes mit dem Namen des folgende eindeutige ID (UID): 79e80293-6eb1-11df-88dc-0026b9835db3 Aber im Moment wissen wir nicht, welcher der Datenträger diese UID hat! Also gehe zum Disk2-Eintrag und notiere seine UID und so weiter alle Festplatten, die Sie in Ihrem Volume hatten. Hinweis: Basierend auf meiner Erfahrung nur die ersten 8 Zeichen ändern sich, der Rest bleibt gleich. Tatsächlich scheint W2k8 die ID um 6 zu erhöhen. $ Ist ein Trennzeichen.
z. :
%Vor%Gehe zu Zeile 00e8200 (lun01.metadata). Du solltest 'PRIVHEAD' finden.
%Vor%Was wir wollen, ist die Platten-UID dieser speziellen Platte. Wir sehen: - Datenträger-ID: 79e80299-6eb1-11df-88dc-0026b9835db3 - Host-ID: 1b77da20-c717-11d0-a5be-00a0c91db73c - Laufwerksgruppen-ID: 891d0e8f-d929-11e0-a8a7-0026b9835db5
Also diese Diskette mit der UID 79e80299 -... ist Windows Disk2 aber für uns es war Physical Disk 1. Tatsächlich finden Sie diese UID in der Festplattenreihenfolge oben gefunden. Hinweis: Es gibt keine logische Reihenfolge. Ich meine, Windows entscheidet, wie es eingerichtet wird die Festplatte bestellen Sie nicht. Also gibt es KEINE menschliche Logik und erwarte nicht Ihre erste Festplatte ist Disk1.
Nimm also nicht an, dass die obige Reihenfolge einem Menschen folgen wird Logik. Ich empfehle Ihnen, alle LDM-Daten Ihrer Festplatten durchzugehen und extrahiere ihre UID. (Sie können den folgenden Befehl nur verwenden extrahiere die PRIVHEAD-Information: dd if = LUNXX überspringen = 1890 count = 1 | xxd -a)
z.B.:
%Vor%Ich bin mir sicher, dass Sie irgendwo in den LDM-Metadaten den Typ finden können of Volume (übergreifend, RAID0, RAIDX und die zugehörigen Stripe-Größen) Allerdings habe ich es nicht gegraben. Ich habe eine "versuchen und wiederholen" -Methode verwendet, um zu finden meine Daten. Also, wenn Sie wissen, wie Sie Ihre Konfiguration zuvor eingerichtet haben das Drama, Sie sparen sich viel Zeit.
Jetzt interessieren wir uns für den großen Teil der Daten, die wir wiederherstellen wollen. In meinem Fall sind ~ 512GB an Daten, also werden wir das Ganze nicht konvertieren ASCII. Ich habe nicht wirklich gesucht, wie Windows den Anfang findet seine NTFS-Partition. Aber was ich gefunden habe ist, dass es logisch beginnt mit dem folgenden Schlüsselwort: R.NTFS. Lass uns das finden und das finden Offset müssen wir später anwenden, um unser NTFS FS zu sehen.
%Vor%In diesem Beispiel beginnen die Daten bei 262178 und sind 1048314789 Sektoren lang
Wir fanden oben, dass Disk1 (der Volume-Gruppe) eigentlich die 2. ist physische Festplatte. Wir werden einige seiner Informationen extrahieren, um sie zu finden wo die NTFS-Partition startet.
%Vor%Hier können wir sehen, dass NTFS bei 00fbc00 startet. So zu wissen, dass wir es können Beginnen Sie, unsere Daten aus Sektor 262178 + 00fbc00 Bytes zu extrahieren. Lasst uns mach ein bisschen Hexadezimal-Dezimal-Konvertierung mit Bytes zu Sektor Umwandlung auch.
0xfbc00 Bytes = 1031168 Bytes = 1031168/512 Sektoren = Sektoren 2014
Also beginnt unsere NTFS-Partition bei 262178 + 2014 = 264192 Sektoren. Dieser Wert wird ein Offset sein, den wir später auf allen Festplatten verwenden werden. Nennen wir es den NTFS-Offset. Offensichtlich wird die Gesamtgröße um den Offset verkleinert. Die neue Größe ist also: 1048314789 - 2014 = 1048312775 Sektoren
Von nun an wird es entweder funktionieren, weil Ihre NTFS-Partition es ist gesund oder es wird nicht, weil Sie dies tun, um einige Daten wiederherzustellen. Der folgende Prozess ist derselbe, unabhängig von Ihrem Status. Alles Folgende ist basierend auf [1] (siehe Links unten)
Ein übergreifendes Volume füllt ein Volume nach dem anderen. Wo als gestreift (RAID0) wird einen Teil der Daten über viele Festplatten kopieren (a.k.a ist eine Datei über viele verteilt Festplatten). In meinem Fall wusste ich nicht, ob es ein überspanntes oder gestreiftes Volumen war. Das Der einfachste Weg zu wissen, wenn Ihr Volumen nicht voll ist zu überprüfen, ob Sie viel haben von Nullen am Ende all Ihrer Volumes. Wenn das der Fall ist, dann ist es gestreift.Denn wenn es überspannt ist, füllt es die erste, dann die zweite. ich bin nicht 100% sicher, aber das habe ich beobachtet. Also dd ein paar Sektoren vom Ende der LDM-Datenpartition.
4.0 Vorbereitungen für den Zugriff auf Ihre Daten
Zuerst mounten Sie Ihre DD-Datei oder Ihr Gerät über ein Loopback-Gerät mit dem NTFS Offset und die Größe, die wir oben berechnet haben. Der Offset und die Größe müssen jedoch sein in Bytes nicht in Sektoren, die mit Losetup verwendet werden sollen. Offset = 264192 * 512 = 135266304 Größe = 1048312775 * 512 = 536736140800
%Vor%Hinweis: Sie können '-r' hinzufügen, um im schreibgeschützten Modus zu mounten.
Führen Sie die obigen Schritte für alle physischen Festplatten Ihres Volumes aus. Zeigen Sie das Ergebnis an mit: losetup -a Hinweis: Wenn Sie nicht genug Loop-Geräte haben, können Sie einfach mehr erstellen mit: # mknod -m0660 / dev / loopNUMBER b 7 NUMBER & amp; & amp; chown root.disk / dev / loopNUMBER
Überprüfen Sie Ihre Ausrichtung, indem Sie die erste Disk der Gruppe (zB: Disk2) öffnen, um zu sehen wenn die erste Zeile R.NTFS ist. Wenn nicht, dann ist Ihre Ausrichtung falsch. Bestätigen Sie Ihre Berechnungen oben und versuchen Sie es erneut. Oder Sie betrachten nicht die 1. Windows Disk
z.B.:
%Vor%Alles gut. Gehen wir zum nervigen Teil:)
4.1 überspannt
Übergreifende Festplatten sind eigentlich eine Kette von Festplatten. Sie füllen das erste, dann verwenden Sie der zweite und so und so weiter. Erstellen Sie eine Datei, die wie folgt aussieht, zB:
%Vor%Hinweise: - Denken Sie daran, die gute Festplattenreihenfolge (Sie zuvor gefunden) zu verwenden. zB: Physische Festplatte2 gefolgt von Physical Disk1 und Physical Disk3 - 2096625550 = 2 * 1048312775 und natürlich, wenn du eine vierte Festplatte hast, wird es Beachte die 3-fache Größe für den Offset für die 4. Festplatte.
4.2 Gestreift
Das Problem mit Striped-Modus (aka RAID0) ist, dass Sie wissen müssen, was Ihr Stripe ist Größe. Anscheinend ist es standardmäßig 64k (in meinem Fall war es 128k, aber ich weiß nicht, ob es wurde von Windows-Systemadministrator abgestimmt :). Jedenfalls, wenn du es nicht weißt, musst du es einfach tun Probieren Sie alle möglichen Standardwerte aus und sehen Sie sich an, welcher Ihnen einen möglichen Wert gibt NTFS-Dateisystem.
Erstellen Sie eine Datei wie die folgende für 3 Festplatten mit einer 128k-Chunk-Größe
%Vor%/! \: Die Größe des Volumes entspricht nicht genau der zuvor berechneten Größe. dmsetup benötigt eine Volume-Größe, die durch die Chunk-Größe (aka Stripe-Größe) UND durch die Nummer teilbar ist von Festplatten im Volume. Also in unserem Fall. Wir haben 3 Scheiben von 1048312775 Sektoren Also die 'normale' Größe ist 1048312775 * 3 = 3144938325 Sektoren, aber aufgrund der oben genannten contraint berechnen wir die Größe neu und runden sie ab # echo "3144938325/128 * 128" | bc 3144938240 Sektoren
%Vor%4.3 Montieren Sie es.
Lasst nun alles zusammen mit dmsetup:
zusammenfassen %Vor%Wenn es nicht mount. Dann kannst du testdisk verwenden:
%Vor%Das obige hat für mich funktioniert. Ihre Laufleistung kann variieren. Und es gibt vielleicht ein besseres und einfacherer Weg, es zu tun. Wenn ja, teile es, damit niemand anderes dies durchmachen muss Ärger :) Auch kann es hart aussehen, aber es ist nicht. Solange Sie Ihre Daten kopieren Versuchen Sie es einfach und versuchen Sie es erneut, bis Sie etwas sehen können. Ich habe 3 Tage gebraucht verstehe, wie man alle Bits zusammensetzt. Hoffentlich hilft dir das Obige 3 Tage nicht verschwenden.
Hinweis: Alle obigen Beispiele wurden erstellt. Es gibt vielleicht einige Unstimmigkeiten zwischen den Beispielen trotz meiner Gründlichkeit;)
Viel Glück.
Hier ist die (viel einfachere) Antwort, jetzt, da ldmtool
existiert. ldmtool
liest LDM-Metadaten (auch Windows Dynamic Disks genannt) und erstellt (unter anderem) Device-Mapper-Einträge für die entsprechenden Laufwerke, Partitionen und RAID-Arrays, damit Sie anschließend wie bei anderen Blockdevices unter Linux auf sie zugreifen und sie mounten können.
Das Programm hat einige Einschränkungen, hauptsächlich aufgrund der Tatsache, dass LDM-Metadaten überhaupt nicht verändert werden. Sie können also keine LDM-Festplatten in Linux erstellen (verwenden Sie dazu Windows), und Sie sollten keine RAID-Volumes im Lese-Schreib-Modus bereitstellen, bei denen Festplatten fehlen. ( ldmtool
ändert die Metadaten nicht, um anzuzeigen, dass dies passiert ist. Wenn Windows das RAID-Array das nächste Mal erstellt, treten Probleme auf, da nicht alle Laufwerke synchron sind.)
Hier sind die folgenden Schritte:
ldmtool
. Geben Sie auf Debian- und Ubuntu-Systemen apt-get install ldmtool
ein. Ähnlich sollte es bei den meisten anderen aktuellen Linux-Distributionen sein. ldmtool create all
. /dev/mapper/ldm_vol_VOLNAMEHERE-Dg0_Volume2
) und mounten Sie es einfach mit etwas wie mount -t ntfs /dev/mapper/ldm_vol_VOLNAMEHERE-Dg0_Volume2
. Um dies automatisch beim Booten zu erreichen, müssen Sie wahrscheinlich einen Aufruf von ldm create all
an der richtigen Stelle in der Boot-Sequenz einfügen, bevor der Inhalt von /etc/fstab
gemountet wird. Ein guter Weg, um den Anruf zu tun wäre:
Aber wie Sie dieses Snippet zum richtigen Zeitpunkt während des Bootvorgangs ausführen können, hängt von der verwendeten Distribution ab. Für Ubuntu 13.10 habe ich diese Zeile in /etc/init/mountall.conf
eingefügt, direkt vor dem exec mountall ...
-Aufruf am Ende des Skriptbereichs. Und ich kann jetzt meine Windows LDM RAID1-Partition in /etc/fstab
mounten. Viel Spaß!
Dies ist, was ich aus der obigen Antwort und durch Bezugnahme auf [1] und [2] erhalten habe.
Was ich entdeckt habe, ist, dass in der Metadatenpartition mehr als nur die GUID der Datenträgerreihenfolge enthalten ist. Es gibt eine klare Struktur, die Größe, Offset und Offset innerhalb des übergreifenden Volumens enthält.
Verwenden Sie die obige Antwort {2.1} und {2.2}, um die Reihenfolge der Laufwerke zu bestimmen.
Meine 4x Festplatten werden als 4x 2tb Chunks und 1x kleinere Chunks von einem einzelnen RAID5 Array von einem 3ware 9650se Controller exportiert. Jede Festplatte hat folgendes Format:
%Vor%von a 'xxd -a -l 65535 / dev / sdd1 | mehr 'Ich bekomme
%Vor%Von oben sehen Sie also deutlich die Größe des Datenbereichs, den Offset innerhalb der Partition und den Offset innerhalb des übergreifenden Volumes. Also lass uns die Mathematik machen;
%Vor%Dies wurde mit dmraid in
übersetzt %Vor%kann direkt über:
eingebunden werden %Vor%was Module erfordert:
%Vor%Achten Sie unbedingt darauf, dass Sie alle Offsets, die Größe auf der Festplatte und die Versus-Versätze korrekt eingestellt haben, bevor Sie den Schreib-Lese-Vorgang durchführen. ntfs-3g wird bereitgestellt, wenn die Offsets falsch sind und der Dateiinhalt nicht korrekt ist.
Ein guter Doppel-Check ist die Verwendung von Windows Check Disk und Looping bei den zusätzlichen Informationen am Ende. Notieren Sie die Gesamtzahl der zugewiesenen Einheiten, multipliziert mit der Blockgröße (meine war 4096) und teilen Sie diese dann durch 512 (normale Sektorgröße). Dies sollte zu der von Windows angegebenen Größe passen.
Meine Partitionsgröße ist um 4096 Bytes kleiner als die in den obigen Metadatentabellen angegebene Größe. Ich nehme an, dass die Partitionsgröße auf eine gerade Zahl rundet. Ich berechne 2197090816, Windows sagt 2197090815, 4096 Byte-Blöcke ..
Tags und Links windows linux filesystems recovery computer-forensics