Bei der Besprechung der Datenrettung von RAIDs gingen wir davon aus, dass wir die RAID-Parameter bereits kannten. Allerdings gibt es Fälle, in denen wir die Parameter des RAIDs, das wir rekonstruieren möchten, nicht kennen. Wie finden wir die erforderlichen Parameter? RAID-Anbieter können Ihnen eventuell mit den Standardwerten weiterhelfen, aber manchmal wurden die Parameter bereits angepasst und sind nicht mehr bekannt. Kann R-Studio in einem solchen Fall helfen? Ja - wir können die Daten der RAID-Komponenten im integrierten Text-/Hex-Editor analysieren, um die benötigten Parameter zu finden. In diesem Artikel zeigen wir Ihnen am Beispiel eines einfachen NTFS RAID 5, wie das funktioniert.
Eine solche Aufgabe erfordert zumindest Grundkenntnisse der RAID-Datenstrukturen und Dateisysteme. Falls erforderlich, können Sie sich über die folgenden Websites näher informieren:
RAIDs: http://en.wikipedia.org/wiki/RAID
NTFS-Grundlagen: http://en.wikipedia.org/wiki/NTFS
Näheres zu NTFS: http://technet.microsoft.com/en-us/library/cc758691.aspx
Versuchen wir nun, die benötigten Parameter für einen einfachen unbekannten RAID 5 zu finden.
Die bekannten Parameter sind:
1. Anzahl der Festplatten: Drei
2. Dateisystem: NTFS (erstellt von Windows XP/2003 und später mit einem standardmäßigen Master Boot Record (MBR Startblock)
3. Typ: Basisvolume
Die unbekannten Parameter, die wir benötigen, sind:
1. Reihenfolge der Datenträger
2. Blockgröße
3. Blockreihenfolge
4. Volume-Offset
Die RAID-Volumes werden als in R-Studio erzeugte Abbild-Dateien dargestellt:
Disk1.arc
Disk2.arc
Disk3.arc
Klicken Sie auf das Bild, um es zu vergrößern
Abbild-Dateien von RAID-Komponenten
Bitte beachten Sie, dass das Auffinden eines Disk1-Objekts auf Disk2.arc durch R-Studio nicht unbedingt darauf hinweist, dass dies die erste Festplatte im RAID ist.
Ermitteln des Master Boot Record
Zunächst müssen wir das MBR finden, um den RAID-Offset zu bestimmen.
1. Öffnen Sie alle drei Abbild-Dateien nacheinander im Text-/Hex-Editor.
2. Deaktivieren Sie den Schreibzugriff, um unbeabsichtigter Datenkorruption in den bearbeiteten Objekten vorzubeugen!
3. Notieren Sie sich die Windows-Datenträgersignatur für jedes Objekt, um später erkennen zu können, welches Editorfenster zu welchem Objekt gehört.
4. Suchen Sie nach dem MBR-Startblock. Geben Sie im Dialogfeld "Search" ("Suche") die Zeichen 33 C0 8E D0 BC im HEX-Feld ein (dies ist ein Standard-MBR-Startblock, der in manchen Fällen aber abweichen kann), wählen Sie dann "From start position" ("Von Startposition aus") und geben Sie unter "Search at offset" ("Suche mit Offset") 0 ein.
5. Starten Sie die Suche mit OK.
Daten im Dialogfeld Suchen, Start der Suche nach Master Boot Record (MBR)
Suchergebnisse:
Klicken Sie auf das Bild, um es zu vergrößern
Disk1.arc geöffnet im Text-/Hexadezimal-Editor
Klicken Sie auf das Bild, um es zu vergrößern
Disk2.arc geöffnet im Text-/Hexadezimal-Editor. MBR-Muster gefunden.
Klicken Sie auf das Bild, um es zu vergrößern
Disk3.arc geöffnet im Text-/Hexadezimal-Editor. MBR-Muster gefunden.
Betrachten wir nun das Ergebnis der Suche: Der Text-/Hex-Editor findet dieses Muster an der Adresse 00 in Disk2.arc und Disk3.arc; Disk1.arc besteht nur aus Nullen. Das bedeutet, dass der Offset 0 ist, und dass Disk1.arc nicht die erste Festplatte im RAID sein kann.
Gleichzeitig erkennt der Editor diese Muster in Disk2 und Disk3 als Code des Master-Bootstrap-Ladeprogramms. In unserem Fall haben zwei Festplatten die gleichen MBR-Daten an der gleichen Stelle.
Im zweiten Schritt müssen wir den NTFS-Bootsektor finden.
Werfen Sie einen Blick auf das Feld "Sectors preceding partition" ("Sektoren, die der Partition voranstehen") im Bereich "Template" ("Vorlagen").
Klicken Sie auf das Bild, um es zu vergrößern
Vorlagen-Bereich für Disk2 und Disk3
In unserem Fall ist der Sektor, der der Partition vorangeht, 16.065.
Ist dieser Wert größer als 63, müssen wir ihn durch N -1 teilen, wobei N die Anzahl der Festplatten (in unserem Fall N = 3) ist. Damit erhalten wir 8032. Dies ist die ungefähre Position, von der aus wir nach dem NTFS-Bootsektor suchen müssen. Beginnen wir die Suche an dieser Position, um zu vermeiden, dass wir falsche NTFS-Bootsektoren finden, die noch von früheren NTFS-Partitionen erhalten geblieben sein könnten.
Navigieren Sie im Editor zu diesem Sektor und suchen Sie dann nach dem Muster des NTFS-Bootsektors.
Klicken Sie auf das Bild, um es zu vergrößern
Das Sektoren-Suchfeld im Text-/Hexadezimal-Editor
Geben Sie im Dialogfeld Search (Suche) im Hex-Feld die Zeichenfolge EB 52 90 4E 54 46 53 20 20 20 20 ein (der NTFS-Bootsektor beginnt immer mit diesen Bytes), wählen Sie From current position (Von aktueller Position) und geben Sie bei Search at offset (Suche mit Offset) 0 ein.
Klicken Sie auf das Bild, um es zu vergrößern
Daten im Dialogfeld Suchen, Start der Suche nach dem NTFS-Bootsektor
Der Editor findet dieses Muster in Sektor 8064 auf Disk2 und Disk3.
Wählen Sie nun das Muster für Boot sector NTFS im Bereich "Template" ("Vorlage").
Klicken Sie auf das Bild, um es zu vergrößern
Disk2.arc geöffnet im Text-/Hexadezimal-Editor. NTFS-Bootsektormuster gefunden. Das gleiche Muster wurde auch auf Disk3.arc gefunden.
Die erforderlichen Parameter, die wir gefunden haben
Byte pro Sektor: 512
Sektoren pro Cluster: 8
Nummer des logischen Clusters für die Datei $MFT: 786432
Zuvor gefundene Parameter:
RAID-Offset: 0
Als Nächstes müssen wir die MFT (Master File Table) auf der Festplatte finden:
1. Versuchen wir, einen ungefähren Wert für den MFT-Offset vom RAID-Start aus zu finden:
MFT-Offset vom Beginn der Partition bei Sektoren = Nummer des logischen Clusters für die Datei $MFT * Sektoren pro Cluster + RAID-Offset = 786.432 * 8+0 = 6.291.456
Wenn der RAID-Offset nicht 0 ist, müssen wir das Ergebnis der obigen Gleichung mit dem Wert des Offsets addieren.
MFT-Start auf der ersten Festplatte = MFT-Offset vom Beginn der Partition bei Sektoren/(N-1) = 6.291.456/2 = 3.145.728
2. Wir beginnen damit, nach dem genauen MFT-Start an einer Position zu suchen, die ein paar tausend Sektoren unterhalb dieses Wertes liegt. Zum Beispiel Sektor 3.140.000.
Geben Sie im Dialogfeld Search (Suche) im ANSI-Feld "FILE" ein, aktivieren Sie From current position (Von aktueller Position) und geben Sie bei Search at offset (Suche mit Offset) 0 ein.
Klicken Sie auf das Bild, um es zu vergrößern
Das Muster wurde bei Sektor 10.241.463 auf Disk2 und bei Sektor 3.153.792 auf Disk3 gefunden.
Klicken Sie auf das Bild, um es zu vergrößern
Sektor des ersten Datensatzes auf Disk3. Beginn eines Datenblocks.
Folgendes ist wichtig: Die Signatur FILE endet mit 0, was bedeutet, dass die Datensatznummer nicht mit einem Fixup überschrieben wurde. Wenn sie mit * (FILE*) enden würde, wären wir nicht in der Lage, mit unserer Suche fortzufahren, und müssten eine andere Technik anwenden.
Das Muster $.M.F.T. (HEX 24 00 4D 00 46 00 54) zeigt, dass der MFT-Start korrekt ist.
Da Sektor 3.153.792 unserem erwarteten Wert von Sektor 3.145.728 näher ist als dem von Sektor 10.241.463, können wir davon ausgehen, dass Disk3 die erste Festplatte im RAID ist.
Um fortfahren zu können, müssen wir im Hinterkopf behalten, dass ein Datensatz in der MFT zwei Sektoren einnimmt, und dass die Daten nacheinander auf das RAID 5 geschrieben werden - ein Datenblock auf einen Datenträger, dann der nächste Datenblock auf den nächsten Datenträger, und ein Paritätsblock auf den dritten Datenträger. In der folgenden Tabelle stellen wir ein Beispiel für ein solches System dar ...
Erste RAID-Festplatte | Zweite RAID-Festplatte | Dritte RAID-Festplatte |
PD | 1 | 2 |
3 | PD | 4 |
5 | 6 | PD |
Disk1 | Disk2 | Disk3 |
Sek: 3,153,792 Dat.Satz: 40 00 Sek: 3,153,918 Dat.Satz: 7F 00 Sek: 3,153,919 Ende des Stripes |
Sek: 3,153,792 Kein Datensatz Sek: 3,153,918 Kein Datensatz Sek: 3,153,919: Ende des Stripes |
Sek: 3,153,792 Dat.Satz: 00 00 Sek: 3,153,918 Dat.Satz: 3F 00 Sek: 3,153,919 Ende des Stripes |
Sek: 3,153,920 Dat.Satz: Kein Datensatz Sek: 3,154,046 Dat.Satz: Kein Datensatz Sek: 3,154,047 Ende des Stripes |
Sek: 3,153,920 Dat.Satz: C0 00 Sek: Sek: 3,154,046 Dat.Satz: FF 00 Sek: 3,154,047 Ende des Stripes |
Sek: 3,153,920 Dat.Satz: 80 00 Sek: 3,154,046 Dat.Satz: BF 00 Sek: 3,154,047 Ende des Stripes |
Sek: 3,154,048 Dat.Satz: 00 01 Sek: 3,154,174 Dat.Satz: 3F 01 Sek: 3,154,175 Ende des Stripes |
Sek: 3,154,048 Dat.Satz: 40 01 Sek: Sek: 3,154,174 Dat.Satz: 7F 01 Sek: 3,154,175 Ende des Stripes |
Sek: 3,154,048 Dat.Satz: Kein Datensatz Sek: 3,154,174 Dat.Satz: Kein Datensatz Sek: 3,154,175 Ende des Stripes |
Erste RAID-Festplatte | Zweite RAID-Festplatte | Dritte RAID-Festplatte |
1 | 2 | PD |
3 | PD | 4 |
PD | 5 | 6 |