Ermitteln der RAID-Parameter

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
Ermitteln_der_RAID_Parameter_Rec1.png
Zum Vergrößern anklicken
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.
Ermitteln_der_RAID_Parameter_2.png
Daten im Dialogfeld Suchen, Start der Suche nach Master Boot Record (MBR)

Suchergebnisse:
Ermitteln_der_RAID_Parameter_Rec2.png
Zum Vergrößern anklicken
Disk1.arc geöffnet im Text-/Hexadezimal-Editor

Ermitteln_der_RAID_Parameter_Rec3.png
Zum Vergrößern anklicken
Disk2.arc geöffnet im Text-/Hexadezimal-Editor. MBR-Muster gefunden.

Ermitteln_der_RAID_Parameter_Rec4.png
Zum Vergrößern anklicken
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 vorangehen) im Bereich Template (Vorlagen).
Ermitteln_der_RAID_Parameter_Rec5.png
Zum Vergrößern anklicken
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.
Ermitteln_der_RAID_Parameter_Rec6.png
Zum Vergrößern anklicken
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.
Ermitteln_der_RAID_Parameter_6.png
Zum Vergrößern anklicken
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).
Ermitteln_der_RAID_Parameter_Rec7.png
Zum Vergrößern anklicken
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.
Ermitteln_der_RAID_Parameter_8.png
Zum Vergrößern anklicken
Das Muster wurde bei Sektor 10.241.463 auf Disk2 und bei Sektor 3.153.792 auf Disk3 gefunden.

Ermitteln_der_RAID_Parameter_Rec8.png
Zum Vergrößern anklicken
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
... wobei die Zahlen die Reihenfolge repräsentieren, in der die Datenblöcke auf die jeweiligen Datenträger geschrieben werden, und PD für den Block "Parität der Daten" steht.
(Diese Tabelle ist nur ein Beispiel, und die Blockreihenfolge kann in einem allgemeinen Fall beliebig sein.)

Hier bedeutet das, dass die Datensatznummern in der MFT innerhalb eines Datenblocks um eins steigen. Dann wird die MFT auf einer anderen Platte fortgesetzt, wo die Datensatznummern innerhalb des jeweiligen Datenblocks um eins steigen, während die dritte Festplatte den Paritätsblock enthält. Und so weiter.

Um also die Blockgröße zu ermitteln, betrachten wir die Datensatznummern auf diesem Datenträger, um herauszufinden, an welcher Stelle sie nicht mehr um eins erhöht werden. Diese Stelle beschreibt dann das Ende des Datenblocks. Anschließend betrachten wir andere Datenträger, um den Datenträger und die Stelle zu finden, an der die Datensatznummern in der MFT erneut um eins steigen. Dann betrachten wir noch einen Datenträger, um zu ermitteln, wo die MFT fortgesetzt wird, und so weiter.

Um danach zu suchen, scrollen Sie den Text im Editor um jeweils zwei Sektoren herunter.

Auf Disk 3 endet der Datenblock in Sektor 3.153.919 mit der Datensatznummer 3F 00.

Ermitteln_der_RAID_Parameter_Rec9.png
Zum Vergrößern anklicken
Sektor des letzten Datensatzes auf Disk3. Das Ende des Datenblocks ist im nächsten Sektor (3.153.919).

Wenn wir uns die anderen Datenträger ansehen, stellen wir fest, dass die MFT auf Disk 1 in Sektor 3.153.792 mit der Datensatznummer 40 00 fortgesetzt wird und in Sektor 3.153.919 mit der Datensatznummer 7F 00 endet. Und so weiter.

Ermitteln_der_RAID_Parameter_Rec10.png
Zum Vergrößern anklicken
Der Datensatz wird auf Disk1 fortgesetzt. Beginn eines Datenblocks.

Ermitteln_der_RAID_Parameter_Rec11.png
Zum Vergrößern anklicken
Letzter Datensatz auf Disk1. Das Ende des Datenblocks ist im nächsten Sektor (3.153.919).

Die Endergebnisse werden in der nachfolgenden Tabelle präsentiert:
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
Kein Datensatz bedeutet, dass es sich um einen Paritätsblock handelt.

Ermitteln_der_RAID_Parameter_Rec12.png
Zum Vergrößern anklicken
Beispiel für einen Paritätssektor

Anhand der oberen Tabelle leiten wir uns die folgenden Parameter ab:

Reihenfolge der Datenträger:
Erste RAID-Festplatte Disk3.arc
Zweite RAID-Festplatte Disk1.arc
Dritte RAID-Festplatte Disk2.arc

Offset: 0
Stripe-Größe: 128 Sektoren oder 65.536 KB (64 KB)
Stripe-Reihenfolge (PD steht für Parität der Daten)

Erste RAID-Festplatte Zweite RAID-Festplatte Dritte RAID-Festplatte
1 2 PD
3 PD 4
PD 5 6

Jetzt können wir ein solches RAID in R-Studio erstellen:
Ermitteln_der_RAID_Parameter_Rec13.png
Zum Vergrößern anklicken
In R-Studio erstelltes RAID-5 Objekt

R-Studio findet ein gültiges Dateisystem auf dem RAID (Partition 1)

Doppelklicken Sie auf Partition 1, um die Anzahl der Dateien zu ermitteln:
Ermitteln_der_RAID_Parameter_Rec14.png
Zum Vergrößern anklicken
Von R-Studio gefundene Dateien-/Ordnerstruktur

R-Studio zeigt eine gültige Ordner-/Dateistruktur an, was ein gutes Zeichen ist. Um zu überprüfen, ob wir ein RAID mit korrekten Parametern erstellt haben, betrachten wir eine Datei in der Vorschau. Die Datei sollte größer sein als Blockgröße * (Anzahl der Datenträger -1). In unserem Fall sind das 128 KB.
Ermitteln_der_RAID_Parameter_Rec15.png
Zum Vergrößern anklicken
Vorschau der Datei Picture 236.jpg

Die Datei wird in der Vorschau angezeigt. Unser RAID besitzt also korrekte Parameter.

© Copyright 2000-2016 R-Tools Technology Inc.