Datenverlust - Na und? Teil 3

Im vergangenen Monat haben wir uns in erster Linie mit den Folgen von physikalischen Fehlern auf Disketten beschäftigt. Aber nicht nur durch Lesefehler sind Ihre Daten bedroht, noch unangenehmer können logische Fehler in den Datenstrukturen eines Mediums sein.

Bevor wir uns ganz dem eigentlichen Thema widmen, zunächst ein Wort in eigener Sache. Je komplexer die Fehler werden, die ich anspreche, um so weniger läßt es sich vermeiden, auf konkrete Software-Produkte hinzuweisen. Nicht jedes Programm (es gibt ohnehin nur wenige davon) ist für jedes Problem geeignet. Außerdem bringt es wenig, auf Möglichkeiten zur Fehlererkennung oder -beseitigung hinzuweisen, ohne gleichzeitig anzusprechen, welche Software dazu zur Verfügung steht. Als Autor des Diskus-Utilities besitze ich naturgemäß eine „eingeschränkte Objektivität", schließlich kennt man sein eigenes Programm besonders gut. Zwar glaube ich nicht, daß ich mit dieser Serie Werbung für ein bestimmtes Produkt mache, aber als Leser sollten Sie dennoch über diesen S ach verhalt informiert sein. Nun aber ans Werk.

Kleiner Irrtum, großer Ärger

Nicht immer ist ein Datenverlust auf Fehler in der Hard- oder Software zurückzuführen. Es dürfte jedem schon passiert sein, daß er irrtümlich eine Datei gelöscht hat, die eigentlich noch benötigt wurde. Eine Reihe von Utilities (z.B. SED [1], Diskus) bieten die Möglichkeit, eine Löschoperation automatisch rückgängig zu machen. Dies muß aber nicht in allen Fällen funktionieren. Warum es schiefgehen kann, zeigt sich, wenn man sich das Prinzip überlegt, nach dem sich eine Datei wiederbeleben läßt.

Führen wir uns einmal vor Augen, was eigentlich passiert, wenn eine Datei gelöscht wird. TOS löscht dazu die entsprechenden FAT-Einträge, diese werden also auf Null gesetzt und stehen somit für neue Daten zur Verfügung. Außerdem wird im Directory das erste Zeichen des Dateinamens durch ein „ o " ersetzt. Das ist auch schon alles, die Datei ist nun scheinbar nicht mehr vorhanden. Dabei wurden die eigentlichen Datensektoren überhaupt nicht angetastet, es sei denn, man hat nach dem Löschen bereits neue Daten auf die Disk geschrieben. Will man die Daten reaktivieren, muß man diese Vorgänge lediglich rückgängig machen. Was den Verzeichniseintrag betrifft, ist das recht einfach. Es genügt, das „G" durch ein anderes Zeichen (möglichst das ursprüngliche) zu ersetzen, und schon wird die gelöschte Datei wieder vom Desktop angezeigt. Aber das alleine genügt natürlich nicht. Viel wichtiger ist es, die FAT in den ursprünglichen Zustand zu versetzen. Dazu muß man herausfinden, welche Cluster Bestandteile der Datei waren. Der erste Cluster der gelöschten Datei kann schnell gefunden werden, denn schließlich zeigt ein Feld im Directory-Eintrag auf diesen Start-Cluster. Die restliche Verkettung ist jedoch nicht mehr erkennbar, denn hier wurden ja beim Löschen Null-Bytes in die FAT eingetragen.

Ein Programm, das einen automatischen Reparaturversuch unterstützt, wird nun die auf den Start-Cluster folgenden Cluster der Reihe nach überprüfen. Trifft es dabei auf einen unbelegten Cluster, ist die Wahrscheinlichkeit hoch, daß dieser einmal zur gelöschten Datei gehört hat. Insgesamt müssen so viele unbelegte Cluster gefunden werden, bis die Dateilänge, die sich dem Verzeichniseintrag entnehmen läßt, erreicht worden ist. Anschließend werden diese Cluster untereinander neu verkettet und die FAT wird aktualisiert. Ob der Rettungsversuch erfolgreich war, muß natürlich anschließend überprüft werden. Bei Programmdateien geschieht dies, indem man das Programm startet und die Funktionsfähigkeit überprüft. Texte betrachtet man sich am besten mit der jeweiligen Textverarbeitung.

Der Hintergrund der beschriebenen Vorgehensweise ist der, daß TOS beim Anlegen von Dateien Cluster nach aufsteigenden Nummern vergibt und erst dann am Anfang eines Datenträgers nach freien Clustern sucht, wenn das Ende des Mediums erreicht wurde. Die Cluster einer Datei werden also nach einem gewissen Ordnungsprinzip angelegt, was man sich beim Rekonstruieren zunutze macht. Daß eine automatische Reparatur nach dieser Methode nicht immer erfolgreich sein muß, hängt damit zusammen, daß die unbelegten Cluster, die sich hinter dem Start-Cluster befinden, nicht zwangsweise zur gelöschten Datei gehören müssen. Wurden auf dem Datenträger häufig Dateien gelöscht und neue erzeugt, steigt die Wahrscheinlichkeit, daß die Cluster einer bestimmten Datei nicht direkt hintereinander angeordnet sind, sondern daß Sprünge auftreten. Werden nun mehrere Dateien gelöscht, ist jede Information darüber verloren, ob eine lineare Anordnung der Cluster vorlag. Es läßt sich also keine sichere Zuordnung nlehr treffen. Genau diese Voraussetzung muß aber gegeben sein, damit das automatische Rekonstruieren erfolgreich ist. Restaurieren Sie die ältesten Dateien möglichst zuerst (das Datum der Dateierstellung findet sich im Verzeichniseintrag). Dann ist die Wahrscheinlichkeit, durch Sprünge in der Cluster-Verkettung neuerer Dateien in die Irre geführt zu werden, nicht ganz so groß.

Eine Alternative zur FAT

Wer sich einmal damit beschäftigt hat, wie der C64 seine Daten auf Disketten ablegt, weiß, daß es hier erheblich einfacher ist, Löschoperationen rückgängig zu machen. Der C64 kennt keine FAT, sondern bringt die Information über Folgesektoren direkt in den Datensektoren unter. Am Beginn jedes Sektors werden dazu zwei Bytes reserviert, von denen eines die Nummer des nächsten Sektors, das andere eine Information darüber enthält, ob der Sektor überhaupt belegt ist. Beim Löschen einer Datei wird nun lediglich der Directory-Eintrag ungültig gemacht, und die Angabe über die Belegung eines Sektors wird aktualisiert. Die restlichen Informationen bleiben erhalten, also ist auch noch bekannt, wie die Cluster-Verkettung ursprünglich ausgesehen hat. Das Rekonstruieren ist so recht leicht und vor allen Dingen eindeutig möglich.

Man mag sich nun fragen, warum TOS oder DOS nicht nach einem vergleichbaren Prinzip arbeiten. Der Grund liegt darin, daß ein Format, wie es der C64 bei der Datenspeicherung benutzt, keine hohen Zugriffsgeschwindigkeiten erlaubt. So ist es nicht möglich, beim Dateizugriff mehrere Sektoren hintereinander zu lesen, denn die Nummer des nächsten Sektors ist ja erst in dem Moment bekannt, in dem die ersten Bytes des aktuellen Sektors ausgewertet wurden. Auch das Löschen von Dateien benötigt relativ viel Zeit, denn hierzu muß jeder Sektor der Datei gelesen, geändert und anschließend zurückgeschrieben werden. Ungünstig beim C64-Format ist ferner, daß jeder Sektor bei einer Größe von 256 Bytes nur 254 Bytes für die eigentlichen Daten bereithält. Dieser aus der Sicht des Computers „krumme" Wert läßt sich nicht so gut handhaben wie die üblichen Zweierpotenzen.

Mangelnde Logik

Im Gegensatz zu physikalischen Fehlern, die vom Betriebssystem eindeutig erkannt werden („Daten auf Disk A: defekt?"), sind logische Fehler, beispielsweise in der Disk-Belegungstabelle (FAT), nicht so leicht zu erkennen. Besonders gefährlich ist es, daß sich solche Fehler nur selten sofort bemerkbar machen. Oft ist bereits ein Datenverlust eingetreten, bevor ein Fehler sichtbar wird. Manchmal gibt es aber schon im Vorfeld gewisse Hinweise, daß Datenstrukturen durcheinander geraten sind. Stürzt beispielsweise ein Programm, das sonst nie irgendwelche Macken gezeigt hat, plötzlich regelmäßig beim Start ab, oder gibt es einen „TOS-Fehler #35", kann eine defekte FAT die Ursache dafür sein. Stellen Sie zunächst sicher, daß sich die Probleme nicht auf ein neu installiertes Accessory oder ein Programm im AUTO-Ordner zurückführen lassen. Booten Sie also möglichst ohne residente Programme. Bei den neueren TOS-Versionen läßt sich das dadurch erreichen, daß während des Boot-Vorgangs die Control-Taste gedrückt wird. Treten auch dann noch Fehler beim Starten von Programmen auf, ist eine fehlerhafte FAT recht wahrscheinlich.

Überhaupt ist die FAT von den drei Bereichen eines Datenträgers, die Verwaltungsinformationen enthalten (Boot-Sektor, FAT, Directory), am ehesten von Fehlern betroffen. Da nützt es herzlich wenig, daß die FAT gleich in zwei Ausführungen vorhanden ist. Beide FATs werden vom Betriebssystem mehr oder weniger zum gleichen Zeitpunkt verändert, so daß die Chance, daß nur eine Ausfertigung der FAT einen Fehler hat, gleich Null ist. Meistens enthalten beide dieselben (fehlerhaften) Daten.

Trübe Aussichten

Ungereimtheiten in der FAT können sich in vielfältiger Weise äußern. Eher harmlos sind sogenannte Lost Cluster, also solche Cluster, die als belegt markiert sind, aber zu keiner Datei gehören. Lost Cluster en-stehen beispielsweise dadurch, daß ein Programm beim Schreiben von Daten abstürzt, die Datei also nicht ordnungsgemäß geschlossen wird. Durch Lost Cluster schrumpft die Kapazität eines Mediums ohne ersichtlichen Grund zusammen, da diese Cluster nicht mehr zur Datenspeicherung zur Verfügung stehen. Unter Umständen enthalten Lost Cluster Daten, die einmal zu anderen, möglicherweise noch vorhandenen Dateien gehört haben.

Fehler in der FAT können sich auch in ungültigen Cluster-Nummern äußern. So ist es nicht möglich, daß ein FAT-Eintrag auf Cluster 1 verweist, denn wie bereits früher angesprochen, beginnt die Zählung der Cluster erst bei 2. Genauso sind Werte unmöglich, die größer sind als die Gesamtzahl der Cluster des Mediums. Denkbar sind auch Cluster, die in der FAT als unbenutzt geführt werden, aber in Wirklichkeit Bestandteile einer Datei sind. Haarig wird es bei Cross Linked Clustern, von denen man spricht, wenn Datensektoren zu mehreren Dateien gleichzeitig gehören.

Alle diese Fehler sind auf unsinnige FAT-Einträge zurückzuführen, daraus resultieren zerstückelte Dateien und daraus wiederum Abstürze oder Fehlermeldungen beim Programmstart. Da FAT-Fehler nicht unbedingt offensichtlich sind, sollte man eine FAT regelmäßig testen. Dazu eignet sich eine ganze Reihe von Programmen, wie einige der in [2] aufgeführten Optimizer sowie Correct (im Lieferumfang von Kobold), SED oder Diskus. Gerade in Verbindung mit Festplatten-Opti-mizern ist ein FAT-Test vor der eigentlichen Optimierung unerläßlich. Fehler in der FAT, insbesondere Cross Linked Cluster, können dafür sorgen, daß nach dem Optimiervorgang nur noch Datenschrott vorhanden ist.

Keine Panik

Einige Programme sind nicht nur in der Lage, Unstimmigkeiten in der FAT aufzuzeigen, sondern eine Reihen von Fehlern automatisch zu beseitigen oder den Schaden zumindest zu begrenzen. In manchen Fällen ist jedoch Handarbeit angesagt, um der Lage Herr zu werden. Dabei helfen besonders eigenständige Diskmonitore wie SED, Mutil oder Diskus, eventuell auch schon einfachere Monitore wie der in Harlekin oder anderen Multifunktionsprogrammen integrierte.

Wie bei allen anderen Fehlern auch, dürfen auf Medien mit defekter FAT in keinem Fall neue Daten geschrieben oder vorhandene Daten gelöscht werden. Wer mit einem Festplattentreiber arbeitet, der einen Schreibschutz einzelner Partitionen erlaubt, sollte dies ausnutzen. Um jedes Risiko auszuschließen, den Datenverlust noch zu vergrößern, kann man die kompletten Verwaltungssektoren (also alle Sektoren bis hin zum ersten Datensektor) als Datei auf einem anderen Laufwerk sichern (SED, Diskus). Wenn alle Stricke reißen, läßt sich so jederzeit der alte Zustand direkt nach dem Datenverlust wiederherstellen. Auch das Anfertigen einer l:l-Kopie der betroffenen Diskette oder Festplattenpartition ermöglicht es, den ursprünglichen Zustand der FAT zu sichern. Dabei bedeutet l: l Kopie, daß alle Sektoren des Datenträgers in den Kopiervorgang einbezogen werden. Man erhält so eine Kopie, die auch im Hinblick auf die logischen Fehler identisch mit dem Original ist. Nahezu alle Kopierprogramme für Disketten erlauben das Anlegen einer 1:1-Kopie, manche Programme unterstützen dies auch für Festplattenpartitionen.

Kreuz und quer

Gehen wir einmal davon aus, daß Sie durch einen Test der FAT auf Cross Linked Cluster gestoßen sind. Es existieren also mindestens zwei Dateien, die einen Cluster (und zwangsweise auch alle folgenden) gemeinsam haben. Klar, daß eine dieser beiden Dateien höchstwahrscheinlich defekt ist, denn entweder gehören die gemeinsam belegten Sektoren nur zu der einen oder nur zu der anderen Datei.

Zunächst muß man also feststellen, welcher der beiden Dateien diese Cluster zuzuordnen sind. Das geschieht einfach dadurch, daß man Programmdateien probeweise startet bzw. Textdateien auf ihren Inhalt überprüft. Je nach Beschaffenheit des Fehlers ist nicht auszuschließen, daß beide Dateien defekt sind, aber das stellt eher die Ausnahme dar.

Ist die fehlerfreie Datei identifiziert, müssen die Cluster-Zuordnungen in der FAT so geändert werden, daß eine eindeutige Cluster-Folge entsteht. Dies läßt sich dadurch erreichen, daß die zweite, defekte Datei direkt vor der Verknüpfungstelle abgeschnitten wird. Es genügt, den entsprechenden Cluster in der FAT als letzten i Cluster zu kennzeichnen. Ist die von Ihnen verwendete Software in der Lage, dies automatisch durchzuführen, sollte die Angabe des Namens der intakten Datei ausreichen, um die Cluster-Verkettung neu zu organisieren. Andernfalls müssen Sie selber Hand anlegen. Verfolgen Sie dazu die Verkettung der Datei, die gekürzt werden soll, bis zu der Stelle, an der der erste Crossed Linked Cluster auftritt. Merken Sie sich die Nummer des vorhergehenden Clusters und tragen Sie an der entsprechenden Position in der FAT den Wert $FFFF (bei Festplatten) bzw. $FFF (bei Disketten) ein. Im günstigsten Fall erlaubt ein Disk-Utility das Ändern beliebiger FAT-Einträge in einer Dialogbox (SED, Diskus), so daß Sie sich nicht darum kümmern müssen, auf welchem Sektor der FAT sich der entsprechende Eintrag befindet und welches FAT-Format vorliegt.

Verzweifelt gesucht

Bei Programmen älteren Datums mag es sein, daß Sie die notwendigen Manipulationen direkt im FAT-Sektor vornehmen müssen. Dazu muß ermittelt werden, welcher Sektor der FAT die Information über den jeweiligen Cluster enthält. Für FATs im 16-Bit-Format, wie sie bei Festplatten und ED-Disketten auftreten, läßt sich das relativ einfach berechnen.

Jeder Eintrag in der FAT belegt hier 2 Bytes, so daß bei einer Sektorgröße von 512 Bytes pro Sektor 256 FAT-Einträge in einem Sektor Platz finden. Für Cluster 2222 ist demnach der 8. Sektor der FAT (2222/256) zuständig, und innerhalb dieses Sektors findet sich der gewünschte Eintrag an Position 174. Da Festplattenpartitionen durchaus Sektoren mit einer Größe von mehr als 512 Bytes besitzen können (zur Zeit maximal 8192 Bytes pro Sektor), läßt sich für Cluster n die Sektornummer x eines FAT-Sektors wie folgt ermitteln:

x = n/(BPS/2)

bzw. (wir sind ja alle gute Mathematiker) x = n/BPS*2

Von x wird natürlich nur die Vorkommastelle benötigt.

Für die Position y des Eintrags innerhalb dieses Sektors gilt:

y = (n/BPS2-x)(BPS/2)

Hier kommt also die Nachkommastelle ins Spiel.

Für die Programmierer unter den Lesern ist sicher die folgende Schreibweise einfacher:

x = n mod (BPS/2) y = n div (BPS/2)

Für 12-Bit-FATs kann analog vorgegangen werden, hier kommen rein rechnerisch 1.5 Bytes auf jeden FAT-Eintrag.

Auch wenn es für das Eintragen des Wertes $FFFF nicht von Bedeutung ist, sollte man stets im Hinterkopf behalten, daß die Angaben in der FAT im Intel-Format organisiert sind. Geht es darum, andere Werte einzutragen, muß das natürlich berücksichtigt werden.

Sonstige Fehler

Ähnlich wie bei den Cross Linked Clu-stern lassen sich auch ungültige FAT-Einträge durch direkte Eingriffe in die FAT wieder zurechtbiegen. Dabei ist es notwendig, sich Gewißheit darüber zu verschaffen, zu welcher Datei ein Eintrag, der beispielsweise den nicht erlaubten Wert l besitzt, einmal gehört haben mag. Imldeal-fall enthält der vorausgehende Cluster einen Verweis auf den Cluster mit dem ungültigen Verweis, so daß eine Zuordnung leicht möglich ist. Solche Fehler werden daher von vielen Testprogrammen unter Angabe des Dateinamens gemeldet. Zu klären ist natürlich, ob diesem Cluster weitere folgen und wenn ja, welche das sind. Es empfiehlt sich, zunächst den unmittelbar folgenden Cluster in Augenschein zu nehmen. Gehört dieser nicht zu einer anderen Datei, ist aber als belegt markiert, dürfte die Annahme zutreffen, daß sich die Cluster-Folge mit diesem Cluster fortsetzen läßt. Es ist also einen Versuch wert, die Verkettung durch einen Eingriff in die FAT an dieser Stelle wiederherzustellen.

Ohne Directory läuft gar nichts

Neben Datenverlusten durch eine defekte FAT können auch Fehler im Wurzelverzeichnis unangenehme Folgen haben, die sich eventuell nur mit erheblichem Zeitaufwand beseitigen lassen. Im Extremfall ist das Verzeichnis komplett unbrauchbar. Sofern die FAT nach dem Verlust des Wurzelverzeichnisses noch intakt ist, lassen sich die Verzeichnisdaten weitestge-hend rekonstruieren. Die eigentlichen Daten einer Datei befinden sich ja nicht im Directory, sondern auf den Datensektoren, deren Zuordnung wiederum der FAT entnommen werden kann. Ist das Wurzelverzeichnis zerstört, sind einige Angaben wie Dateiname, Datum und Uhrzeit sowie Dateilänge natürlich unwiderruflich verloren. Alle anderen Daten jedoch lassen sich durch eine Analyse der FAT zurückgewinnen, und auf dieser Basis kann ein neues Wurzel Verzeichnis erzeugt werden. Der grundlegende Gedanke dabei ist, daß sich durch eine FAT-Analyse ermitteln läßt, wieviele Dateien sich auf der Partition befinden. Deren Anzahl muß mit der Zahl der Daten-Cluster übereinstimmen, auf die kein anderer FAT-Eintrag zeigt. Bei solchen Clustern muß es sich um Start-Cluster handeln, wobei sich natürlich die Start-Cluster aller Dateien des Mediums darunter befinden, also nicht nur die Dateien aus dem Wurzel Verzeichnis. Der nächste Schritt ist, aus der Liste von Start-Clustern diejenigen zu streichen, die zu Dateien in Ordnern gehören. Dazu kann man jede Datei daraufhin überprüfen, ob es sich um einen Ordner handelt. Als Kriterium gilt, daß der erste Cluster einer Datei zwei Dateieinträge mit den Namen „." und „.." enthalten muß, um als Ordner zu gelten. Die Start-Cluster der Dateien in Ordnern werden nun aus der Gesamtliste gestrichen, und es bleiben nur noch die Dateien übrig, die sich einmal im Wurzelverzeichnis befunden haben müssen.

Nun ist man soweit, neue Dateieinträge für die restlichen Start-Cluster anzulegen, wobei die Dateien natürlich irgendwelche erfundenen Namen erhalten müssen, denn die alten Dateinamen sind ja nicht mehr vorhanden. Was die Dateilänge angeht, so bietet es sich an, diese anhand der Cluster-Größe und Cluster-Zahl der jeweiligen Datei abzuschätzen. Eine Datei, die bei einer Cluster-Größe von 1024 Bytes zwei Cluster aufweist, kann höchstens 2048 Bytes lang gewesen sein. Ob man eine Programmdatei vor sich hat, kann relativ sicher am Datei-Header erkannt werden. Die ersten beiden Bytes besitzen bei Programmen den Inhalt $601 A, wobei es sich um einen Sprung auf den eigentlichen Programmstart handelt. (Vorsicht: Auch Objektmodule weisen diesen Aufbau auf.) Ordner können schließlich durch das bereits angesprochene Kriterium leicht von anderen Dateien unterschieden werden.

Hat man ein neues Wurzelverzeichnis erzeugt, lassen sich die einzelnen Dateien durch probe weises Starten, Laden in einen Texteditor oder auch durch Anschauen mit einem Disk-Monitor recht leicht identifizieren und mit den ursprünglichen Namen versehen. Die Namen der Dateien in Ordnern bleiben natürlich die ganze Zeit über erhalten, da lediglich die Daten im Wurzel Verzeichnis betroffen sind. Wer also wenige Dateien und viele Ordner im Wurzelverzeichnis hat, braucht sich vielleicht noch nicht einmal um die nachträgliche Identifizierung der Dateien zu kümmern. Klar, daß so umfangreiche Operationen nicht mehr per Handarbeit in den Griff zu kriegen, programmgesteuert aber in kurzer Zeit erledigt sind. Hier hilft ein Griff zu Diskus weiter.

FAT futsch

Besonders fatal ist es, wenn die FAT komplett zerstört ist. Dies ist gleichbedeutend damit, daß alle Dateien in den Papierkorb geworfen wurden, ohne allerdings die Verzeichniseinträge zu verändern. Es ist natürlich auch in dieser Situation möglich, Datenrettung durch Handarbeit zu betreiben, aber der Zeitaufwand wäre erheblich. Ohne jegliche Anhaltspunkte über die Cluster-Verkettung ist es ein einziges Puzzlespiel, die richtigen Cluster zusammenzufügen. Wenn unter den verlorenen Daten nur wenige wichtige Dateien waren, sollte man sich auf diese beschränken. Ungünstig ist es natürlich, wenn alle Daten wertvoll sind und darüber hinaus die Partition besonders groß ist. Unter einer gewissen Voraussetzung lassen sich aber auch in einem solchen Extremfall Daten ohne übermäßige Handarbeit retten. Es ist nämlich denkbar, die FAT automatisch zu rekonstruieren, wenn der Datenträger vor nicht allzu langer Zeit mit einem Optimizer bearbeitet wurde. Dieser entfernt die Fragmentierung der Dateien, die sich im Laufe der Zeit zwangsweise ergibt, und erhöht so den Ordnungsgrad der Daten erheblich.

Eigentlich geht es bei einer Optimierung primär darum, die Zugriffszeiten zu verbessern. Durch das Löschen von Dateien entstehen auf einem Datenträger Lücken, die von neuen Daten gefüllt werden. Das führt dazu, daß die Cluster neuer Dateien nicht mehr direkt hintereinander angeordnet, die Daten also quasi zersplittert sind. So ist kein optimaler Plattenzugriff mehr möglich, da je nach Grad der Fragmentierung unnötig viele Bewegungen des Lesekopfes notwendig sind, um die verschiedenen Datenbereiche einer einzigen Datei aufzusuchen. Ein Optimizer ordnet die Daten-Cluster so an, daß wieder eine lineare Abfolge entsteht.

Optimierung ist mehr

Daß eine Defragmentierung nicht nur für einen schnelleren Zugriff sorgt, sondern auch das Rekonstruieren von Daten vereinfacht, hängt direkt mit der Struktur der Daten nach der Optimierung zusammen. Weil alle Dateien in idealer Weise linear angeordnet sind, lassen sich selbst bei einem totalen Verlust der FAT-Informatio-nen recht gezielte Aussagen über das ursprüngliche Aussehen der FAT machen. Alle FAT-Einträge, sofern es sich nicht um unbelegte Cluster oder das Ende von Dateien handelt, müssen nämlich einen Verweis auf den direkt folgenden Cluster enthalten haben.

Diese wichtige Erkenntnis läßt sich ausnutzen, um eine neue FAT zu erzeugen, die der „wahren" FAT sehr nahe kommt, und die ich als „FAT-Prototyp" bezeichnen möchte. Dieser Prototyp stellt eine FAT dar, die alle Daten auf der Partition als eine einzige, riesige Datei ansieht. Jeder Cluster zeigt auf den nächsten. Dieser Zustand kommt der wahren Situation unter der gegebenen Voraussetzung (optimiertes Medium) sehr nahe. Die Cluster-Verkettungen sind bereits korrekt, nur die Markierungen für das Dateiende fehlen noch. Wo diese anzubringen sind, läßt sich den Dateieinträgen entnehmen. Diese enthalten die Dateilänge und machen so eine Aussage darüber, wieviele Cluster jeder Datei zuzuordnen sind. Wird also nach dem Erzeugen eines FAT-Prototyps die FAT getestet und werden Dateiendemarken an den entsprechenden Stellen eingefügt, liegt anschließend wieder eine fehlerfreie FAT vor. Natürlich wird der Datenverlust in den seltensten Fällen auf einer gerade erst optimierten Partition eintreten. Aber selbst dann, wenn die Optimierung des Mediums vor längerer Zeit erfolgt ist, sind die Chancen recht gut, einen größeren Teil der Daten zurückzugewinnen.

Natürlich läßt sich ein FAT-Prototyp per Hand anlegen, allerdings ist das besonders bei großen Partitionen sehr zeitraubend. Diskus bietet zu diesem Zweck eine geeignete Option. Wie ein FAT-Prototyp auszusehen hat, läßt sich leicht beschreiben. Für eine 16-Bit-FAT beginnt er wie folgt:

00 00 00 00 03 00 04 00 05 00 06 00 07 00 0800...

Die ersten beiden Einträge der FAT sind grundsätzlich unbelegt, anschließend folgen Verweise im Intel-Format bis zum Ende der FAT.

Alles futsch

Sind sowohl FAT als auch Hauptverzeichnis total zerstört, sieht es ziemlich mies aus, was die Datenrettung angeht. Aber auch hier stellt der Trick mit dem FAT-Prototyp einen guten Ansatzpunkt dar. Immerhin erhält man so eine halbwegs intakte FAT, die mit Sicherheit eine bessere Ausgangsbasis für weitere Operationen darstellt als völlig ungültige Angaben. Um die noch vorhandenen Fehler zu beseitigen, sollte man sich auf das Restaurieren der einzelnen Dateieinträge konzentrieren. Dabei ist es empfehlenswert, zunächst die Ordner wiederherzustellen. Durch Suchfunktionen, die wohl vonjedemDisk-Monitor bereitgestellt werden, läßt sich der Beginn eines Ordners recht leicht ausfindig machen. Es genügt, nach Dateinamen in diesem Ordner zu suchen. Dabei muß darauf geachtet werden, daß Dateinamen unter TOS grundsätzlich groß geschrieben werden und daß der Punkt zwischen dem eigentlichen Namen und der Extension in den Verzeichniseinträgen nicht auftaucht. Schließlich muß der Name eventuell mit Leerzeichen aufgefüllt werden. Nach einer Datei, die „TEST.S" heißt, muß also als „TEST S „ gesucht werden, da sie so im Verzeichnis aufgeführt wird. Daß man auf den ersten Cluster eines Ordners gestoßen ist erkennt man daran, daß die ersten beiden Dateien „." und „.." heißen.

Man muß nun ähnlich vorgehen, wie eingangs beim Restaurieren gelöschter Dateien beschrieben. Als erstes erzeugt man sich im Hauptverzeichnis einen neuen Dateieintrag für den Ordner, denn wir sind ja davon ausgegangen, daß die Namen im Wurzelverzeichnis zerstört sind. Je nach Disk-Utility läßt sich ein neuer Eintrag in einem Dialog oder aber durch direktes Manipulieren der Verzeichnis sektoren erzeugen. Falls als Folge des Datenverlustes irgendwelcher Datenschrott im Hauptverzeichnis steht, sollte man diesen erst einmal entfernen, um mehr Übersicht zu gewinnen. Häufig findet man Funktionen, mit denen sich die Inhalte von FAT und Wurzelverzeichnis komplett löschen lassen.

Hat man einen neuen Dateinamen angelegt, wird der Verweis auf den ersten Cluster des Ordners oder der Datei eingetragen. Anschließend sorgt ein Test der FAT dafür, daß die Dateiendemarkierungen eingefügt werden (s.o.). Mit etwas Glück sind die so erhaltenen Daten halbwegs fehlerfrei. Mit den restlichen Ordnern wird auf die gleiche Weise verfahren. Die Cluster, die anschließend noch übriggeblieben sind, müssen zu Dateien gehören, die einmal im Hauptverzeichnis aufgeführt waren.

Man sieht, daß es bei Datenverlusten von Vorteil sein kann, nicht zu viele Dateien im Wurzelverzeichnis unterzubringen und stattdessen auf Ordner auszuweichen. Das Hauptverzeichnis steht nun einmal an exponierter Position, Ordner sind da schon weniger gefährdet.

Fehlervielfalt

Es ist kaum möglich, auf jede denkbare Art von Datenverlusten einzugehen. Gerade Defekte in der FAT können sehr unterschiedliche Folgen haben. Geht man der Sache auf den Grund, wird man jedoch stets an einen Punkt gelangen, wo sich der Fehler auf eines der beschriebenen Phänomene zurückführen läßt. In der nächsten Folge wird es um Unstimmigkeiten in Strukturen auf der Festplatte gehen. Nicht alle Datenbereiche der Platte sind ohne weiteres zugänglich. Der Root-Sektor mit den Partitionsinformationen und die Defektliste lassen sich nur über einen speziellen Zugriffsmodus erreichen.

US

Literatur:

[1] Claus Brod, Anton Stepper, „Scheibenkleister II - Massenspeicher am ST", MAXON Computer GmbH [2] Dirk Johannwerner, „HardDisk Utilities", ST-Computer 3/92


US
Aus: ST-Computer 06 / 1993, Seite 80

Links

Copyright-Bestimmungen: siehe Über diese Seite