Die Grundlagen von Dateisystemen

basic concepts of varios file systems of windows, linux, macos and other

Derzeit bietet der Computermarkt eine Vielzahl von Möglichkeiten zum Speichern der Informationen in digitaler Form. Zu den vorhandenen Speichergeräten gehören interne und externe Festplatten, Speicherkarten von Foto-/Videokameras, USB-Sticks, RAID-Sets sowie andere komplexe Speichersysteme. Auf ihnen werden Daten in Form von Dateien wie Dokumenten, Bildern, Datenbanken, E-Mail-Nachrichten usw. gespeichert, die effizient auf der Festplatte organisiert und bei Bedarf einfach abgerufen werden müssen.

Der folgende Artikel bietet einen allgemeinen Überblick über das Dateisystem, die wichtigsten Mittel zur Datenverwaltung in jedem Speicher, und beschreibt die Besonderheiten der verschiedenen Dateisystemtypen.


Was ist ein Dateisystem?

Jede Computerdatei wird auf einem Speichermedium mit einer bestimmten Kapazität gespeichert. Tatsächlich ist jeder Speicher ein linearer Raum zum Lesen oder Lesen und Schreiben digitaler Informationen. Jedes Informationsbyte hat sein Offset vom Speicherstart, das als Adresse bezeichnet wird, und wird von dieser Adresse referenziert. Ein Speicher kann als Raster mit einer Reihe von nummerierten Zellen dargestellt werden (jede Zelle ist ein einzelnes Byte). Jedes auf dem Speicher gespeicherte Element erhält eigene Zellen.

Im Allgemeinen verwenden Computerspeicher das Paar eines Sektors und eines In-Sektor-Versatzes, um auf ein beliebiges Informationsbyte auf dem Speicher zu verweisen. Ein Sektor ist eine Gruppe von Bytes (normalerweise 512 Bytes), eine minimal adressierbare Einheit des physischen Speichers. Beispielsweise wird Byte 1040 auf einer Festplatte als Sektor Nr. 3 und In-Sektor-Offset 16 Bytes bezeichnet ([Sektor] + [Sektor] + [16 Bytes]). Dieses Schema wird angewendet, um die Speicheradressierung zu optimieren und eine kleinere Zahl zu verwenden, um auf einen beliebigen Teil der auf dem Speicher befindlichen Informationen zu verweisen.

Um den zweiten Teil der Adresse wegzulassen (In-Sektor-Offset), werden Dateien normalerweise ab dem Sektorstart gespeichert und belegen ganze Sektoren (z. B.: Eine 10-Byte-Datei belegt den gesamten Sektor, eine 512-Byte-Datei belegt auch den gesamten Sektor, gleichzeitig belegt eine 514-Byte-Datei zwei ganze Sektoren).

Jede Datei wird in "nicht verwendeten" Sektoren gespeichert und kann später anhand ihrer bekannten Position und Größe gelesen werden. Woher wissen wir jedoch, welche Sektoren besetzt und welche frei sind? Wo werden Größe, Position und Name der Datei gespeichert? Genau dafür ist das Dateisystem verantwortlich.

Insgesamt ist das Dateisystem eine strukturierte Darstellung von Daten und ein Satz von Metadaten, die diese Daten beschreiben. Es wird während des Formatierungsvorgangs auf den Speicher angewendet.  Diese Struktur dient dem gesamten Speicher und ist auch Teil eines isolierten Speichersegments – einer Festplattenpartition. Normalerweise betreibt es Blöcke, keine Sektoren. Dateisystemblöcke sind Gruppen von Sektoren, die die Speicheradressierung optimieren. Im Allgemeinen verwenden moderne Typen Blockgrößen von 1 bis 128 Sektoren (512-65536 Byte). Dateien werden normalerweise am Anfang eines Blocks gespeichert und nehmen ganze Blöcke ein.

Ständige Schreib-/Löschvorgänge auf dem Speicher verursachen dessen Fragmentierung. Dateien werden also nicht als ganze Einheiten gespeichert, sondern in Fragmente unterteilt. Beispielsweise ist ein Volumen vollständig mit Dateien mit einer Größe von jeweils etwa 4 Blöcken belegt (z. B. eine Sammlung von Fotos). Ein Benutzer will eine speichern, die 8 Blöcke einnimmt, und löscht daher die erste und die letzte Datei. Auf diese Weise gibt er oder sie den Platz für 8 Blöcke frei. Das erste Segment befindet sich jedoch in der Nähe des Speicherstarts, das zweite – in der Nähe des Speicherendes.  In diesem Fall wird die 8-Block-Datei in zwei Teile aufgeteilt (4 Blöcke für jeden Teil) und nimmt "Löcher" für freien Speicherplatz ein. Die Informationen zu beiden Fragmenten als ihre Teile werden auf dem Dateisystem gespeichert.

Zusätzlich zu den Benutzerdaten enthält das Dateisystem auch eigene Parameter (z. B. eine Blockgröße), Dateideskriptoren (einschließlich ihre Größe, ihr Speicherort, Fragmente usw.), Namen und Verzeichnishierarchie. Es kann auch Sicherheitsinformationen, erweiterte Attribute und andere Parameter speichern.

Um den unterschiedlichen Anforderungen der Benutzer wie Speicherleistung, Stabilität und Zuverlässigkeit gerecht zu werden, wurden zahlreiche Dateisystemtypen (oder Formate) entwickelt, um verschiedene Zwecke effektiver erfüllen zu können.

Dateisysteme von Windows

Microsoft Windows verwendet zwei Hauptdateisysteme: NTFS, das primäre Format, das die meisten modernen Versionen dieses Betriebssystems standardmäßig verwenden, und FAT, das von altem DOS geerbt wurde und exFAT als spätere Erweiterung hat. ReFS wurde von Microsoft auch als Dateisystem der neuen Generation für Servercomputer ab Windows Server 2012 eingeführt. Das von Microsoft zusammen mit IBM entwickelte HPFS-Dateisystem ist nur auf extrem alten Computern mit Windows NT bis 3.5 verfügbar.

FAT

FAT (File Allocation Table) ist einer der einfachsten Dateisystemtypen, der seit den 1980er Jahren gibt. Er besteht aus dem Dateisystem-Deskriptor-Sektor (Boot-Sektor oder Superblock), der Blockzuordnungstabelle (als File Allocation Table bezeichnet) und einfachem Speicherplatz zum Speichern von Daten. Dateien in FAT werden in Verzeichnissen gespeichert. Jedes Verzeichnis ist ein Array von 32-Byte-Datensätzen, die jeweils eine Datei oder ihre erweiterte Attribute definieren (z. B. einen langen Dateinamen). Ein Dateidatensatz schreibt den ersten Block einer Datei zu. Jeder nächste Block kann über die Blockzuordnungstabelle gefunden werden, indem sie als verknüpfte Liste verwendet wird.

Die Blockzuordnungstabelle enthält ein Array von Blockdeskriptoren. Ein Nullwert zeigt an, dass der Block nicht verwendet wird, und ein Wert ungleich Null bezieht sich auf den nächsten Block einer Datei oder einen speziellen Wert für das Dateiende.

Die Zahlen in FAT12FAT16FAT32 stehen für die Anzahl der Bits, die zum Auflisten eines Dateisystemblocks verwendet werden. Dies bedeutet, dass FAT12 bis zu 4096 verschiedene Blockreferenzen verwenden kann, während FAT16 und FAT32 entsprechend bis zu 65536 und 4294967296 verwenden können. Die tatsächliche maximale Anzahl von Blöcken ist noch geringer und hängt von der Implementierung des Dateisystemtreibers ab.

FAT12 und FAT16 wurden früher auf alte Disketten angewendet und finden heutzutage keinen umfangreichen Gebrauch. FAT32 wird immer noch häufig für Speicherkarten und USB-Sticks verwendet. Das Format wird von Smartphones, Digitalkameras und anderen tragbaren Geräten unterstützt.

FAT32 kann auf Windows-kompatiblen externen Speichern oder Festplattenpartitionen mit einer Größe unter 32 GB verwendet werden, wenn sie mit dem integrierten Tool dieses Betriebssystems formatiert werden, oder bis zu 2 TB, wenn andere Mittel zum Formatieren des Speichers eingesetzt werden. Das Dateisystem erlaubt es auch nicht, Dateien zu erstellen, deren Größe 4 GB überschreitet. Um dieses Problem zu beheben, wurde exFAT eingeführt, das keine realistischen Einschränkungen hinsichtlich der Größe aufweist und häufig auf modernen externen Festplatten und SSDs verwendet wird.

NTFS

NTFS (New Technology File System) wurde 1993 mit Windows NT eingeführt und ist derzeit das am häufigsten verwendete Dateisystem für Endbenutzercomputer, die auf Windows basieren.  Die meisten Betriebssysteme der Windows Server-Reihe verwenden dieses Format ebenfalls.

Dieser Dateisystemtyp ist dank Journaling sehr zuverlässig und unterstützt viele Funktionen, einschließlich ZugriffskontrolleVerschlüsselung usw. Jede Datei in NTFS wird als Dateideskriptor in der Masterdateitabelle (Master File Table) und als Dateninhalt gespeichert. Die Masterdateitabelle enthält Einträge mit allen Informationen zu ihnen: Größe, Zuordnung, Name usw. Die ersten 16 Einträge der Masterdateitabelle bleiben für die BitMap erhalten, in der alle freien und verwendeten Cluster, das für die Aufzeichnung von Datensätzen verwendete Protokoll und der BadClus mit Informationen zu fehlerhaften Clustern aufgezeichnet werden. Der erste und der letzte Sektor des Dateisystems enthalten Dateisystemeinstellungen (den Startdatensatz oder den Superblock). Dieses Format verwendet 48- und 64-Bit-Werte, um auf Dateien zu verweisen, und unterstützt so Datenspeicher mit extrem hoher Kapazität.

ReFS

ReFS (Resilient File System) ist die neueste Entwicklung von Microsoft, die mit Windows 8 eingeführt wurde und jetzt für Windows 10 verfügbar ist. Seine Architektur unterscheidet sich grundlegend von anderen Windows-Formaten und ist hauptsächlich in Form des B+-Baums organisiert. ReFS hat eine hohe Fehlertoleranz aufgrund neuer Funktionen. Und die bemerkenswerteste unter ihnen ist Copy-on-Write (CoW): Keine Metadaten werden geändert, ohne kopiert zu werden; Daten werden nicht über die vorhandenen Daten geschrieben, sondern in einem anderen Bereich auf der Festplatte abgelegt. Nach allen Dateimodifikationen wird eine neue Kopie der Metadaten in einem freien Bereich des Speichers gespeichert, und das System erstellt dann eine Verknüpfung von älteren Metadaten zur neueren Kopie. Daher wird beträchtliche Menge älterer Backups an verschiedenen Orten gespeichert, was einfache Datenwiederherstellung ermöglicht, sofern dieser Speicherplatz nicht überschrieben ist.

HPFS

HPFS (High Performance File System) wurde von Microsoft in Zusammenarbeit mit IBM erstellt und 1989 mit OS/2 1.20 als Dateisystem für Server, das im Vergleich zu FAT eine wesentlich bessere Leistung bieten könnte, eingeführt. Im Gegensatz zu FAT, das dem Dateifragment einfach jeden ersten freien Cluster auf der Festplatte zuweist, versucht HPFS, die Datei in zusammenhängenden Blöcken anzuordnen oder zumindest sicherzustellen, dass ihre Fragmente (als Extents bezeichnet) möglichst nahe beieinander liegen. Zu Beginn von HPFS gibt es drei Steuerblöcke, die 18 Sektoren belegen: den Bootblock, den Superblock und den Ersatzblock. Der verbleibende Speicherplatz ist in Teile zusammenhängender Sektoren unterteilt, die als Bänder mit jeweils 8 MB bezeichnet werden. Ein Band hat eine eigene Sektorzuweisungs-Bitmap, die zeigt, welche Sektoren in ihm belegt sind (1 - genommen, 0 - frei). Jede Datei und jedes Verzeichnis hat eine eigene in der Nähe davon sich befindende F-Node. Diese Struktur enthält Informationen zum Speicherort einer Datei und ihren erweiterten Attributen. Ein spezielles Verzeichnisband in der Mitte der Festplatte wird zum Speichern von Verzeichnissen verwendet, während die Verzeichnisstruktur selbst ein ausgeglichener Baum mit alphabetischen Einträgen ist.

Hinweis: Informationen zu den Perspektiven der Datenwiederherstellung auf den von Windows verwendeten Dateisystemen finden Sie in den Artikeln zu Datenrettungsspezifikationen verschiedener Betriebssysteme und Möglichkeiten zur Datenwiederherstellung. Ausführliche Anweisungen und Empfehlungen finden Sie in der Anleitung zur Datenwiederherstellung unter Windows.

Dateisysteme von macOS

Apple macOS wendet zwei Dateisysteme an: HFS+, eine Erweiterung des veralteten HFS-Dateisystems, das auf alten Macintosh-Computern verwendet wird, und APFS, ein Format, das von modernen Macs mit macOS 10.14 und höher eingesetzt wird.

HFS+

HFS+ war früher das primäre Format von Apple-Desktopprodukten, einschließlich Mac-Computern, iPods sowie von Apple X Server-Produkten, bevor es in macOS High Sierra durch APFS ersetzt wurde. Erweiterte Serverprodukte verwenden auch das Apple Xsan-Dateisystem, ein geclustertes Dateisystem, das von StorNext und CentraVision abgeleitet ist.

HFS+ verwendet B-Bäume zum Platzieren und Suchen von Dateien. Volumen werden in Sektoren mit einer Größe von normalerweise 512 Byte unterteilt, die dann in Zuordnungsblöcke gruppiert werden, deren Anzahl von der Größe des gesamten Volumens abhängt. Die Informationen zu freien und verwendeten Zuordnungsblöcken werden in der Zuordnungsdatei (Allocation File) gespeichert. Alle Zuordnungsblöcke, die jeder Datei als Erweiterungen zugewiesen sind, werden in der Erweiterungsüberlaufdatei (Extends Overflow File) aufgezeichnet. Und schließlich werden alle Dateiattribute in der Attributdatei (Attributes File) aufgelistet. Die Datenzuverlässigkeit wird durch Journaling verbessert, sodass alle Änderungen am System nachverfolgt und bei unerwarteten Ereignissen schnell wieder in den Betriebszustand versetzt werden können. Unter anderen unterstützten Funktionen sind feste Links zu Verzeichnissen, Verschlüsselung logischer Volumen, Zugriffskontrolle, Datenkomprimierung usw.

APFS

Das Apple-Dateisystem zielt darauf ab, grundlegende Probleme des Vorgängers zu lösen. Es wurde entwickelt, um effizient mit modernen Flash-Speichern und Solid-State-Laufwerken zu arbeiten. Dieses 64-Bit-Format verwendet die Copy-on-Write-Methode, um die Leistung zu steigern. Dies ermöglicht das Kopieren jedes Blocks, bevor die Änderungen daran angewendet werden, und bietet zahlreiche Datenintegritäts- und platzsparende Funktionen. Alle Dateiinhalte und Metadaten zu Dateien, Ordnern sowie anderen APFS-Strukturen werden im APFS-Container gespeichert. Der Container-Superblock speichert Informationen über die Anzahl der Blöcke im Container, die Blockgröße usw. Informationen zu allen zugewiesenen und freien Blöcken des Containers werden mit Hilfe von Bitmap-Strukturen verwaltet. Jedes Volumen im Container verfügt über einen eigenen Volumen Superblock, der Informationen zu diesem Volumen enthält. Alle Dateien und Ordner des Volumens werden im Datei- und Ordner-B-Baum aufgezeichnet, während der Extents-B-Baum für die Extents verantwortlich ist – Verweise auf den Dateiinhalt (Dateistart, Länge in Blöcken).

Hinweis: Die Details zur Möglichkeit der Datenwiederherstellung auf diesen Dateisystemen finden Sie im Artikel über die Besonderheiten der Datenrettung in Abhängigkeit vom Betriebssystem und die Chancen für die Datenwiederherstellung. Wenn Sie an der praktischen Seite des Verfahrens interessiert sind, lesen Sie bitte den Leitfaden zur Datenwiederherstellung unter macOS.

Dateisysteme von Linux

Open-Source Linux zielt darauf ab, verschiedene Arten von Dateisystemen zu implementieren, zu testen und zu verwenden. Zu den beliebtesten Formaten für Linux gehören:

Ext

Ext2, Ext3, Ext4 sind einfach verschiedene Versionen des "nativen" Linux Ext-Dateisystems. Dieser Typ fällt unter aktive Entwicklungen und Verbesserungen. Ext3 ist nur eine Erweiterung von Ext2, die Transaktionsdateischreibvorgänge mit einem Journal verwendet. Ext4 ist eine Weiterentwicklung von Ext3, die durch die Unterstützung optimierter Dateizuordnungsinformationen (Extents) und erweiterter Dateiattribute verstärkt wurde. Dieses Dateisystem wird häufig als "Root"-Dateisystem für die meisten Linux-Installationen verwendet.

ReiserFS

ReiserFS – ein alternatives Linux-Dateisystem, das zum Speichern einer großen Anzahl kleiner Dateien optimiert ist. Es verfügt über eine gute Fähigkeit zur Dateisuche und ermöglicht kompakte Dateizuordnung durch Speichern von Dateischwänzen oder einfach sehr kleinen Dateien zusammen mit Metadaten, um die Verwendung großer Dateisystemblöcke für diesen Zweck zu vermeiden. Dieses Format wird jedoch nicht mehr aktiv entwickelt und unterstützt.

XFS

XFS – ein robustes Journaling-Dateisystem, das ursprünglich von Silicon Graphics erstellt und von den IRIX-Servern des Unternehmens verwendet wurde. Im Jahr 2001 gelangte es in den Linux-Kernel und wird jetzt von den meisten Linux-Distributionen unterstützt, von denen einige, wie Red Hat Enterprise Linux, verwenden das sogar standardmäßig. Dieser Dateisystemtyp ist für das Speichern sehr großer Dateien und Volumen auf einem einzelnen Host optimiert.

JFS

JFS – ein Dateisystem, das von IBM für die leistungsstarken Computersysteme des Unternehmens entwickelt wurde. JFS1 steht normalerweise für JFSJFS2 ist die zweite Version. Derzeit ist dieses Projekt Open-Source und in den meisten modernen Linux-Versionen implementiert.

Btrfs

Btrfs – ein von Oracle entwickeltes Dateisystem, das auf dem Copy-on-Write-Prinzip (COW) basiert und seit 2009 vom Linux-Hauptkernel unterstützt wird. Btrfs umfasst die Funktionen eines logischen Volume-Managers, kann mehrere Geräte umfassen und bietet eine viel höhere Fehlertoleranz, bessere Skalierbarkeit, einfachere Verwaltung usw. zusammen mit einer Reihe erweiterter Möglichkeiten.

F2FS

F2FS – ein von Samsung Electronics entwickeltes Linux-Dateisystem, das an die Besonderheiten von Speichergeräten angepasst ist, die auf dem NAND-Flash-Speicher basieren und in modernen Smartphones und anderen Computersystemen weit verbreitet sind. Der Dateisystemtyp arbeitet auf der Grundlage des logarithmisch strukturierten Dateisystemansatzes (LFS) und berücksichtigt Besonderheiten des Flash-Speichers wie eine konstante Zugriffszeit und eine begrenzte Anzahl von Datenumschreibungszyklen. Anstatt einen großen Block zum Schreiben zu erstellen, setzt F2FS die Blöcke zu separaten Blöcken (bis zu 6) zusammen, die gleichzeitig geschrieben werden.

Das in diesen Betriebssystemen verwendete Konzept der "harten Links" macht die meisten Linux-Dateisystemtypen insofern ähnlich, als der Dateiname nicht als Dateiattribut betrachtet, sondern als Alias für eine Datei in einem bestimmten Verzeichnis definiert wird. Ein Dateiobjekt kann von vielen Orten aus verknüpft werden und sogar aus demselben Verzeichnis unter verschiedenen Namen multipliziert werden. Dies kann zu schwerwiegenden und sogar unüberwindlichen Schwierigkeiten bei der Wiederherstellung von Dateinamen nach ihrem Löschen oder nach logischen Schäden führen.

Hinweis: Informationen zur Möglichkeit einer erfolgreichen Datenwiederherstellung auf den genannten Dateisystemen finden Sie in den Artikeln, in den die Besonderheiten der Datenrettung von verschiedenen Betriebssystemen und die Chancen für die Datenwiederherstellung beschrieben werden. Um zu verstehen, wie das Verfahren ausgeführt werden sollte, verwenden Sie  Anweisung zur Datenwiederherstellung unter Linux.

Dateisysteme von BSD, Solaris, Unix

Das gebräuchlichste Dateisystem für diese Betriebssysteme ist UFS (Unix File System), das auch häufig als FFS (Fast File System) bezeichnet wird.

Derzeit wird UFS (in verschiedenen Editionen) von allen Betriebssystemen der Unix-Familie unterstützt und ist ein wichtiges Dateisystem des BSD-Betriebssystems und von Sun Solaris. Moderne Computertechnologien implementieren in der Regel Ersatz für UFS in verschiedenen Betriebssystemen (ZFS für Solaris, JFS und abgeleitete Formate für Unix usw.).

Hinweis: Informationen zur Wahrscheinlichkeit eines erfolgreichen Ergebnisses bei der Datenrettung vons diesen Dateisystemen finden Sie in den Artikeln über betriebssystemspezifische Besonderheiten der Datenwiederherstellung und Chancen für die Datenrettung. Der Prozess selbst wird in der Anweisung zur Datenwiederherstellung auf Unix, Solaris und BSD beschrieben.

Geclusterte Dateisysteme

Geclusterte Dateisysteme werden in Computer-Cluster-Systemen verwendet und unterstützen verteilten Speicher.

Verteilte Dateisystemtypen umfassen:

  • ZFS„Zettabyte File System“ von Sun-Unternehmen – ein Format, das für verteilte Speicher von Sun Solaris OS entwickelt wurde.

  • Apple Xsan – die Entwicklung von Apple für CentraVision und späteren StorNext-Dateisystemen.

  • VMFS„Virtual Machine File System“, das von VMware für ihren VMware ESX-Server entwickelt wurde.

  • GFS„Global File System“ von Linux Red Hat.

  • JFS1 – das ursprüngliche (Legacy-)Design des IBM JFS-Dateisystems, das in älteren AIX-Speichersystemen verwendet wird.

Zu den allgemeinen Eigenschaften dieser Dateisysteme gehören Unterstützung für verteilte Speicher, Erweiterbarkeit und Modularität.

Weitere Informationen zu anderen Technologien zum Speichern und Bearbeiten von Daten finden Sie im Abschnitt Speichertechnologien.

Letzte Aktualisierung: 10. August 2022

Wenn Ihnen dieser Artikel gefällt, teilen Sie ihn in sozialen Medien: