Warum müssen alle Daten auf einem Speichergerät verloren gehen, wenn das Dateisystem geändert wird?


0

Ich kenne die folgenden Dinge über Speichergeräte:

  • Sie sind in zwei Teile unterteilt: die Dateitabelle und die Dateidaten
  • Die Art und Weise dieser Arbeit wird vom Dateisystem vorgegeben
  • Alle Dateisysteme verfügen über eine Dateitabelle und Dateidaten
  • Die Dateitabelle kann geändert werden, ohne die Dateidaten zu ändern, und umgekehrt
  • Eine Datei kann zum schnellen Löschen aus der Dateitabelle entfernt werden, ohne dass die Daten der Datei tatsächlich gelöscht werden

Meine Frage lautet also: Wenn Sie das Dateisystem auf einem Laufwerk ändern (oder "formatieren"), warum müssen dann alle Dateidaten verloren gehen? Kann sich ein Computer nicht einfach an die Dateitabelle erinnern und sie im Format des neuen Systems neu erstellen?

Ich bin mir sicher, dass Sie Probleme mit einem vollständig vollen Laufwerk haben werden, wenn das neue Dateisystem eine größere Tabelle als das alte System erfordert, aber ansonsten sehe ich keinen Grund, warum dies nicht möglich ist.

Ich weiß auch, dass nach einem "Schnellformat" (bei dem nur die Dateitabelle ersetzt wird, die neue jedoch leer ist) alle Dateidaten noch vorhanden sind und mit forensischen Tools wiederhergestellt werden können.

Antworten:


1

Sie denken anscheinend, dass sich auf einem Speichergerät zwei getrennte, genau definierte Bereiche befinden: die "Dateitabelle" (Metadaten) und die "Dateidaten" (Daten), sodass Sie den Datenbereich während des Metadatenbereichs unberührt lassen können wird gelöscht und neu erstellt.

Das ist nicht der Fall. Jedes Dateisystem legt seine festen Metadaten nicht nur an einem anderen Ort ab, sondern auf den meisten Dateisystemen wird ein Teil der Metadaten mit den Daten gemischt. Dies ist häufig bei Verzeichnissen der Fall, die intern ähnlich wie eine "spezielle Datei" behandelt werden.

Sie haben beispielsweise FAT32 mit seinem Metadatenbereich am Anfang des Speichergeräts sowie Verzeichnisse, die mit den Daten gemischt sind. NTFS, dessen Hauptmetadatenbereich (MFT) im IIRC an einem festen Ort in der Mitte des Speichergeräts gespeichert ist; die ext-Familie (ext2, ext3, ext4), die das Speichergerät in "Blockgruppen" aufteilt, von denen jede ihre eigenen Metadaten an festen Orten hat, sodass Sie mehrere Metadatenbereiche auf dem gesamten Speichergerät sowie Verzeichnisse haben, die als spezielle Dateien gespeichert sind; und btrfs, das eine Baumstruktur verwendet, in der sich die meisten Metadaten fast überall befinden können.

Wie Sie sehen, können sich die Daten in einem Dateisystem mit den Metadaten in einem anderen Dateisystem überschneiden. Um von einem Dateisystem in ein anderes zu konvertieren, müsste das Konvertierungstool nicht nur die Verzeichnisstruktur konvertieren, sondern auch einen Teil der Daten aus dem Weg räumen. Dies kann durchgeführt werden (siehe zum Beispiel eine Konvertierung von ext3 / ext4 nach btrfs ), aber da es komplex und selten ist (die meisten Speichergeräte sind einmal mit einem Dateisystem formatiert und verwenden es für den Rest ihres Lebens), gibt es nicht viel Anreiz, es umzusetzen (und zu testen, was im Umgang mit den Daten Ihres Benutzers etwas wichtig ist).


"Die meisten Speichergeräte sind einmal mit einem Dateisystem formatiert und werden für den Rest ihres Lebens verwendet." Haben Sie Daten dazu? Ich habe das Gefühl, dass USB-Laufwerke und Micro-SD-Karten viel häufiger formatiert werden
Supuhstar

2

Sie sind in zwei Teile unterteilt: die Dateitabelle und die Dateidaten

In der Praxis speichern die meisten Dateisysteme einige Metadaten an festen Speicherorten und andere Metadaten als "spezielle Dateien". Welche Metadaten wo gespeichert werden, hängt vom Dateisystem ab.

Oft stehen die festen Standorte nicht alle am Anfang, sondern sind in gewisser Weise auf das Speichervolumen verteilt.

Meine Frage lautet also: Wenn Sie das Dateisystem auf einem Laufwerk ändern (oder "formatieren"), warum müssen dann alle Dateidaten verloren gehen? Kann sich ein Computer nicht einfach an die Dateitabelle erinnern und sie im Format des neuen Systems neu erstellen?

Die direkte Konvertierung eines Dateisystems ist aus mehreren Gründen schwierig.

  1. Das Layout der Metadaten wird mit ziemlicher Sicherheit unterschiedlich sein. Dies bedeutet im Grunde, dass Sie alle alten Metadaten beibehalten müssen, bis alle neuen Metadaten generiert wurden.
  2. Die Metadaten sind möglicherweise zu groß, um sie im Speicher zu speichern. Es ist also keine gute Option, einfach alle alten Metadaten zu lesen und dann alle neuen basierend auf der In-Memory-Kopie zu schreiben.
  3. Die meisten Dateisysteme speichern wichtige Metadaten an festen Standorten. Dies bedeutet, dass ein Tool für viele Konvertierungen nicht einfach die neuen Metadaten "in den Lücken" erstellen kann, die die alten Daten / Metadaten hinterlassen.
  4. Die Daten selbst können auf andere Weise gespeichert werden, zum Beispiel, wenn NTFS-Cluster immer ausgerichtet sind, während dies bei FAT nicht der Fall sein muss. Einige Dateisysteme können Daten komprimieren.

Keines dieser Probleme ist unüberwindbar, aber das Schreiben eines Dateisystemkonverters ist eine schwierige Aufgabe, und das Ausführen birgt häufig ein nicht zu vernachlässigendes Risiko für Datenverluste.

Mir sind folgende Konverter bekannt.

  • Windows 98 und ME werden mit einem Konverter geliefert, der von FAT16 in FAT32 konvertieren kann. In Windows 98 ist dies gut sichtbar, aber in Windows ME wurde es nur in der Befehlszeile erstellt.
  • Windows 2000 und höher werden mit einem Konverter geliefert, der FAT16 und FAT32 in NTFS konvertieren kann. Wieder ist dieser Konverter nur Befehlszeile. Außerdem führt der Konvertierungsprozess aufgrund des oben erwähnten Ausrichtungsproblems manchmal zu 512-Byte-Clustern.
  • Die Tools für BTRFS werden mit einem Programm geliefert, das ext2 / 3/4 in BTRFS konvertieren kann.
  • Für Linux gibt es ein Tool namens fstransform, das laut Readme ext2, ext3, ext4 und reiserfs unterstützt. Es scheint, als würden einige Tricks mit spärlichen Dateien angewendet, um die Dateisystemtreiber im Kernel dazu zu bringen, die Last zu heben, und so kann theoretisch mit jedem Linux-Dateisystem gearbeitet werden, das bestimmte Funktionen unterstützt. Anscheinend gibt es auch experimentelle Unterstützung für NTFS ( https://github.com/cosmos72/fstransform/issues/1 ).

Vielen Dank! Es ist auch erwähnenswert, dass die Installationsprogramme für iOS 10.3 und macOS 10.13 beide die primäre SSD von HFS + auf APFS
Supuhstar

0

Warum müssen alle Dateidaten verloren gehen, wenn Sie das Dateisystem auf einem Laufwerk ändern (oder "formatieren")?

Das muss nicht sein. Normalerweise wird ein Laufwerk formatiert, um ein neues Laufwerk ohne Daten zu initialisieren oder die darauf befindlichen Daten zu verwerfen.

Wenn sich auf einem Speichermedium Daten befinden, können Sie die Dateisystemstruktur auf verschiedene Arten ändern (z. B. FAT -> ext3). Dies wird weder von Endbenutzern noch in Mehrbenutzerumgebungen sehr häufig durchgeführt. Die Vorgehensweise hängt von den Details ab, die Sie nicht angegeben haben. Beachten Sie, dass nicht alle Ihre Annahmen unbedingt gültig sind.

Weitere Informationen zu Dateisystemen finden Sie unter http://en.wikipedia.org/wiki/Filesystems .


Cool! Wie würde man das machen?
Supuhstar

Ich habe nie. Ich ändere selten Dateisysteme auf einem Gerät, das gerade verwendet wird. Wenn ich müsste, würde ich das Volume sichern, das Dateisystem ändern und das Volume wiederherstellen.
Ram

1
Die Konvertierung von FAT nach NTFS unter Beibehaltung der Daten wird von Windows standardmäßig unterstützt. Ich habe es einige Male auf Systemen verwendet, die auf einer FAT-Partition installiert waren.
Berend
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.