Windows Übergreifenden Datenträger (LDM) die Wiederherstellung mit Linux?
Ist es möglich zu Lesen, Windows 2008 LDM-Partitionen in Linux ?
Wir haben fünf, 512 LUNS exportiert über ISCSI zu einem Toten Windows 2008 und diese box nicht mehr wollen. Windows glaubt, dass Sie jetzt raw-devices... Also ich würde gerne Lesen Sie die Partitionen mit Linux. Ich verwende die neueste ubuntu zu versuchen zu retten, zumindest einige der Daten. Das problem ist, dass alle Unterlagen, die ich bisher gefunden habe, scheint obsolet zu sein (sprechen Häufig über w2k oder XP Logical Disk Manager (LDM). Aber ich denke, jetzt ist es anders, mit 2008.
Testdisk [0] geben Sie mir die folgende Ausgabe
testdisk /list LUN01
TestDisk 6.11, Data Recovery Utility, April 2009
Christophe GRENIER <[email protected]>
http://www.cgsecurity.org
Please wait...
Disk LUN01 - 536 GB /500 GiB - CHS 65271 255 63, sector size=512
Disk LUN01 - 536 GB /500 GiB - CHS 65271 255 63
Partition Start End Size in sectors
1 P MS LDM MetaData 34 2081 2048 [LDM metadata partition]
No FAT, NTFS, EXT2, JFS, Reiser, cramfs or XFS marker
2 P MS Reserved 2082 262177 260096 [Microsoft reserved partition]
2 P MS Reserved 2082 262177 260096 [Microsoft reserved partition]
3 P MS LDM Data 262178 1048576966 1048314789 [LDM data partition]
Hinweis: Jede der 5 LUN hat die gleiche partitions-Tabelle.
In vielen Dokumentationen [1], Sie reden entweder ldminfo, die nicht wieder irgendwelche nützlichen Informationen. Ich vermute, dass es mittlerweile obsolet, nur weil es war sehr schwer zu finden 🙂 Und weil es nicht funktioniert, ich denke, windows 2008 verwendet ein anderes format.
# ldminfo LUN01
Something went wrong, skipping device 'LUN01'
# losetup /dev/loop1 LUN01
# losetup -a
/dev/loop1: [fd00]:14 (/mnt/LUN01)
# ldminfo /dev/loop1
Something went wrong, skipping device '/dev/loop1'
Dann habe ich versucht zu concat Sie mit dmsetup aber wieder kein Glück. Das ist, wie ich verwendet dmsetup :
# losetup /dev/loop1 LUN01
# losetup /dev/loop2 LUN02
# losetup /dev/loop3 LUN03
# losetup /dev/loop4 LUN04
# losetup /dev/loop5 LUN05
# blockdev --getsize /dev/loop1
1048577000
# cat > w2008.mapping
# Offset into Size of this Raid type Device Start sector
# volume device of device
0 1048577000 linear /dev/loop1 0
1048577000 1048577000 linear /dev/loop2 0
2097154000 1048577000 linear /dev/loop3 0
3145731000 1048577000 linear /dev/loop4 0
4194308000 1048577000 linear /dev/loop5 0
# dmsetup create myfs w2008.mapping
# mount -t ntfs /dev/mapper/myfs /mnt/final
NTFS signature is missing.
Failed to mount '/dev/loop1': Invalid argument
The device '/dev/loop1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
# echo Poo.
Also immer noch kein NTFS-filesystem: -)
Wer hat Ideen, wie kann ich extrahieren Sie die Daten aus es oder geben Sie mir einige Hinweise ?
- [0]: http://www.cgsecurity.org/wiki/TestDisk
- [1]: http://www.kernel.org/doc/Documentation/filesystems/ntfs.txt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die (viel leichter) zu beantworten, nun, das
ldmtool
vorhanden ist.ldmtool
liest LDM (aka Windows Dynamische Datenträger) Metadaten, und (unter anderem) erstellt device-mapper-Einträge für die entsprechenden Laufwerke, Partitionen und RAID-arrays, so dass Sie danach Zugriff auf und montieren Sie Sie genau wie die anderen block-devices unter Linux.Das Programm hat ein paar Einschränkungen, meist getragen von der Tatsache, dass es sich nicht ändern LDM-Metadaten überhaupt. So kann man nicht erstellen LDM-Datenträger in Linux (Windows) und man sollte nicht mounten im read-write Modus der RAID-Datenträger Datenträger fehlt. (
ldmtool
verändert nicht die Metadaten, um widerzuspiegeln, dass dies passiert, und das nächste mal Windows baut das RAID-array, die Probleme werden Folgen, da nicht alle Laufwerke werden in sync.)Hier sind die Schritte zu Folgen:
ldmtool
. Auf Debian-und Ubuntu-Systeme, Typapt-get install ldmtool
. Es soll ähnlich leicht auf die meisten anderen aktuellen Linux-Distributionen.ldmtool create all
./dev/mapper/ldm_vol_VOLNAMEHERE-Dg0_Volume2
), und montieren Sie es mit so etwas wiemount -t ntfs /dev/mapper/ldm_vol_VOLNAMEHERE-Dg0_Volume2
.Haben, dies geschieht automatisch beim Booten, werden Sie wahrscheinlich brauchen, stecken Sie einen Anruf zu
ldm create all
an der richtigen Stelle in der boot-Sequenz, bevor der Inhalt/etc/fstab
montiert ist. Eine gute Art zu tun, der Aufruf wäre:Aber, wie man dieses snippet zu laufen, zum richtigen Zeitpunkt während des Startvorgangs wird sehr unterschiedlich sein, je nach distribution Sie verwenden. Für Ubuntu 13.10, steckte ich besagte Linie in
/etc/init/mountall.conf
, direkt vor derexec mountall ...
Aufruf am Ende des Skripts Abschnitt. Und jetzt kann ich mount meine Windows LDM-RAID1-partition in/etc/fstab
. Genießen Sie!Sodala, ich werde die Antwort auf meine eigene Frage zu vermeiden, die gleichen Schmerzen für andere.
0. WARNUNG
Fall, du machst eine Wiederherstellung, IMMER KOPIEREN Sie IHRE DATEN und arbeiten
auf der Kopie. Sie verändern NICHT das ursprüngliche 'gebrochen' Daten. Das Ding
sagte, halten Lesen.
1. Die partition sieht aus wie ...
Installieren sleuth kit und testdisk. Hoffentlich wird es Pakete für Ihre Distribution 🙂
Hinweis: testdisk geben Sie die gleichen Informationen mit weniger details
# testdisk /list LUN01
2. Auszug-Festplatten-Metadaten
Alle Informationen über die Festplatte, um die Daten Größe und andere Attribute chiffriert
über die partition wird gefunden, der in die LDM-Metadaten-partition. W2k8 ist nicht
so viel geändert, da das Dokument [2] wenn auch einige Größen sind unterschiedlich und einige
Attribute sind der neue (und offensichtlich unbekannt)...
In Zeile 0002410 sollten Sie den Namen des Servers. Beruhigend ? Aber wir sind
nachdem der Datenträger, um-und Datenträger-ID. Scrollen Sie nach unten.
2.1. Festplatten, Um
In Zeile 0003210 Sie sollten sehen, 'Disk1', gefolgt von einer langen Schnur.
Dies bedeutet, dass die erste Platte dieser Band ist identfied durch die
folgende Unique-ID (UID) : 79e80293-6eb1-11df-88dc-0026b9835db3
Aber im moment wissen wir nicht, welche der disk hat dieses Medium !
So bewegen sich auf der Disk2 Eintrag, und beachten Sie Ihre UID und so weiter für
alle Platten, die Sie hatte in Ihrem Volumen. Hinweis: Basierend auf meiner Erfahrung
nur die ersten 8 Zeichen sind verändert, der rest bleibt gleich.
In der Tat, W2k8 scheint, erhöhen Sie die ID 6. $ ist ein Trennzeichen.
ZB. :
2.2. Finden Festplatte UID
Gehe zu Zeile 00e8200 (lun01.Metadaten). Sie sollten find 'PRIVHEAD'.
Was wir sind, nachdem die disk UID von diesem bestimmten Datenträger. Wir sehen:
- Datenträger-Id : 79e80299-6eb1-11df-88dc-0026b9835db3
- Host-Id : 1b77da20-c717-11d0-a5be-00a0c91db73c
- Disk-Group-Id : 891d0e8f-d929-11e0-a8a7-0026b9835db5
Also diese Festplatte mit der UID 79e80299-... der Windows-Disk2 aber für uns
es war Physische Datenträger 1. Ja finden diese UID in der Festplatte, um Sie
oben gefunden.
Hinweis: Es gibt keine logische Reihenfolge. Ich meine Windows entscheiden, wie Sie setup
die Festplatte um nicht Sie. Also es gibt KEINE menschliche Logik, und nicht erwarten, dass
Ihre erste Festplatte Disk1.
Also nicht davon ausgehen, dass die Reihenfolge oben ist zu Folgen irgendeiner menschlichen
Logik. Ich empfehle Ihnen, gehen Sie durch die LDM Daten Ihrer Festplatten
und extrahieren Ihre UID. (Sie können den folgenden Befehl verwenden, um nur
extrahieren Sie die PRIVHEAD info: dd if=LUNXX skip=1890 count=1 |xxd -a)
e.g:
Ich bin sicher, dass es irgendwo in der LDM-Metadaten, die Sie finden können, die Art
der Volume (spanned, RAID0, RAIDX, und die damit verbundenen stripe-Größe)
Jedoch, ich habe nicht gegraben es. Ich verwendete ein "try and retry" - Methode zu finden
meine Daten. Also, wenn Sie wissen, wie Sie Ihre setup-Konfiguration vor
das drama, Sie sparen sich eine Menge Zeit.
3. Finden Sie das NTFS-Dateisystem und deine Daten
Nun sind wir daran interessiert, die große Menge Daten, die wir wiederherstellen wollen.
In meinem Fall sind es ~512 GB Daten, so dass wir nicht konvertieren das ganze in
ASCII. Ich habe nicht wirklich suchen, wie Sie Windows finden der Anfang
die NTFS-partition. Aber was ich gefunden habe ist, dass es logisch beginnt
mit dem folgenden Schlüsselwort : R. NTFS. Lassen Sie s finden Sie dieses und finden Sie die
offset müssen wir später anwenden, um zu sehen, unsere NTFS-FS.
In diesem Beispiel werden die Daten beginnt bei 262178 und ist 1048314789 Sektoren lang
Wir fanden oben, dass Disk1 (der volume-Gruppe) ist eigentlich die 2.
physische Datenträger. Wir extrahieren einige seiner Informationen zu finden
wo die NTFS-partition starten.
Hier können wir sehen, dass NTFS beginnt bei 00fbc00. So wissend, dass wir können
starten Sie zu extrahieren unsere Daten von Sektor 262178 + 00fbc00 bytes. Lassen
ein bisschen von hexadezimal-zu-dezimal-Konvertierung mit bytes sector
Konvertierung sowie.
0xfbc00 bytes = 1031168 bytes = 1031168/512 Sektoren = 2014 Branchen
Also unsere NTFS-partition beginnt bei 262178 + 2014 = 264192 Sektoren.
Dieser Wert ist ein offset, die wir später benutzen werden, auf allen Datenträgern.
Wir nannten es die NTFS-offset.
Offensichtlich ist die Gesamt-Größe ist geschrumpft durch den offset. Also die neue Größe ist:
1048314789 - 2014 = 1048312775 Sektoren
4. Versuchen Sie zu montieren/die Daten sehen, die
Von nun an, entweder es wird funktionieren out of the box, weil Sie Ihre NTFS-partition ist
gesund oder nicht, weil Sie das tun, um wieder einige Daten.
Der folgende Vorgang ist der gleiche, unabhängig von Ihrem status. Alle der folgenden ist
basierend auf [1] (siehe Links unten)
Einem übergreifenden volume, füllen einen Band nach dem anderen. Wo als Stripeset (RAID0)
kopieren Stück von Daten, die über viele Festplatten (eine.k.ein file ist verteilt auf viele
Festplatten). In meinem Fall, ich wusste nicht, ob es war ein übergreifendes oder Stripeset-volume. Die
einfachste Weg, zu wissen, wenn Ihr die Lautstärke nicht voll sind, ist zu prüfen, wenn Sie haben eine Menge
von Nullen am Ende aller Ihrer Datenträger. Wenn das der Fall ist, dann ist es gestreift.
Denn wenn es spanned, wenn Sie füllen die erste Platte, dann die zweite. Ich bin
nicht 100% sicher, aber das ist, was ich beobachtet habe. So dd ein Bündel von Branchen
vom Ende des LDM-Datenpartition.
4.0 Vorbereitungen auf Ihre Daten zugreifen
Zuerst montieren Sie Ihre dd-Datei oder Ihr Gerät über ein loopback-device mit dem Dateisystem NTFS
offset und die Größe, die wir oben berechnet. Aber der offset und die Größe muss sein
in bytes, nicht in Bereichen verwendet werden, die mit losetup.
offset = 264192*512 = 135266304
Größe = 1048312775*512 = 536736140800
Hinweis: Sie können hinzufügen '-r' mounten im Read-only-Modus.
Tun, die oben für alle physischen Festplatten Teil Ihres Volumens. Das Ergebnis anzuzeigen
mit: losetup -a
Hinweis: Wenn Sie nicht genügend loop-Geräte können Sie ganz einfach mehr mit :
# mknod -m0660 /dev/loopNUMBER b 7 NUMBER && chown root.disk /dev/loopNUMBER
Überprüfen Sie Ihre Ausrichtung durch die öffnung der ersten Platte der Gruppe (z.B.: Disk2) zu sehen
wenn die erste Zeile ist R. NTFS. Wenn nicht, dann Ihre Ausrichtung falsch ist. Überprüfen Sie Ihre
Berechnungen und versuchen Sie es erneut. Oder Sie sind nicht auf der Suche an der 1. Windows-Datenträger
e.g:
Alles gut. Lasst uns bewegen, um das lästige Teil 🙂
4.1 Übergreifende
Übergreifende Datenträger sind eigentlich eine Kette von Festplatten. Sie füllen die erste, dann verwenden Sie
der zweite eins und so und so weiter. Erstellen Sie eine Datei, die so Aussehen, wie zB :
Hinweise:
- Denken Sie daran, verwenden Sie den Datenträger, um (Sie vor). eg: Physikalische Disk2
gefolgt von Physischen Disk1 und Körperliche Disk3
- 2096625550 = 2*1048312775 und natürlich, wenn Sie über eine vierte Platte it ' s gonna
3 mal die Größe für den offset der 4. disk.
4.2 Gestreiften
Das problem mit stripe-Modus (aka RAID-0) ist, müssen Sie wissen, was Ihre Streifen
Größe. Offenbar ist es standardmäßig 64 Kb (in meinem Fall war es 128k, aber ich weiß nicht, ob es
abgestimmt wurde von der Windows-sysadmin:). Jedenfalls, wenn Sie es nicht wissen, Sie müssen nur
versuchen Sie, alle möglichen standard-Werte und sehen, welche Ihnen eine tragfähige möglich
NTFS-Dateisystem.
Erstellen Sie eine Datei wie die folgende, für 3 Festplatten mit einem 128k chunk-Größe
/!\ : Größe ist nicht genau die Größe, die wir zuvor berechneten. dmsetup muss
der volume-Größe teilbar durch die chunk-Größe (auch bekannt als stripe-Größe) UND durch die Anzahl
der Festplatten im volume. So in unserem Fall. Wir haben 3 Platten von 1048312775 Sektoren
Also die "normale" Größe ist 1048312775*3=3144938325 Sektoren, aber aufgrund der oben
contraint werden wir das neu berechnen der Größe und Runde es
# echo "3144938325/128*128" | bc
3144938240 Sektoren
4.3 Montieren.
Nun können aggregierte alles zusammen mit dmsetup :
Wenn es nicht zu mounten. Dann können Sie mit testdisk :
5. Fazit
Den oben genannten für mich gearbeitet. Ihre Laufleistung kann variieren. Und gibt es vielleicht eine bessere und
einfacher Weg, es zu tun. Wenn dem so ist, teilt es, damit niemand sonst wird durch diese gehen müssen
Aufwand 🙂 Auch, es sieht vielleicht schwer, aber es ist nicht. Solange Sie kopieren Ihre Daten
irgendwo, nur zu versuchen, und wiederholen Sie, bis Sie etwas sehen können. Es hat mich 3 Tage
verstehen Sie, wie Sie alle bits zusammen. Hoffentlich die oben genannten wird Ihnen helfen,
nicht zu vergeuden, 3 Tage.
Hinweis: Alle oben genannten Beispielen aus. Es gibt vielleicht einige Ungereimtheiten
zwischen den Beispielen trotz meiner Gründlichkeit 😉
Glück.
6. Links
Windows Dynamische Volumen 5x Datenträger, übergreifende, 8 TB insgesamt.
Dies ist, was ich gesammelt habe aus der Antwort oben, und durch verweisen auf [1] und [2].
Was ich entdeckt habe ist, dass es mehr gibt, als nur die Festplatte, um die GUID-Informationen in die Metadaten-partition. Es gibt eine klare Struktur, die enthält die Größe, offset und offset innerhalb übergreifende volumne.
Verwenden Sie die obige Antwort section {2.1} und {2.2} zu bestimmen, die Reihenfolge der Laufwerke.
Meine 4x Festplatten werden so exportiert, wie 4x 2tb Stücke und 1x kleineres Stück von einem einzigen RAID5-array aus einem 3ware 9650se controller. Jede Festplatte ist im format;
vom 'xxd -a-l-65535 /dev/sdd1 | mehr' bekomme ich
So, von oben kann man deutlich sehen, die Größe der Daten-Abschnitt, offset innerhalb der partition und der offset innerhalb der übergreifenden volume. So können die Mathematik;
Diese übersetzt mit dmraid zu:
werden, die dann direkt montiert über:
erfordert Module:
WARNUNG!
Absolut sicher sein, dass Sie alle offsets, die Größe auf der Festplatte und spann-offsets korrekt vor der Montage Lesen und schreiben. ntfs-3g mounten, wenn die offsets sind falsch, und Ihre Datei wird der Inhalt nicht korrekt sein.
Gut überprüfen, ist die Verwendung der windows-check disk und Schleife um die zusätzlichen Informationen am Ende. Hinweis: die Gesamtanzahl der zugewiesenen Einheiten, mehrere, die durch die block-Größe (bei mir war das 4096) dann teilen Sie das Ergebnis durch 512 (normal-Sektor, Größe). diese sollte mit dem windows gemeldeten Größe.
Meine Partitionsgröße Berichte falsch von 4096 bytes kleiner als die angegebene Größe, die durch die oben genannten Metadaten-Tabellen. Ich gehe davon aus, dass die Größe der partition rundet auf eine gerade Zahl ist. Ich berechne 2197090816, windows sagt 2197090815, 4096-byte-Blöcke..
Referenzen
[1] : http://people.freebsd.org/~ae/LDM/g_part_ldm.c
[2] : http://bigli.ch/howto-access-windows-spanned-dynamic-disks-with-ubuntu/