claim.gif
Linux Magazin Linux User Easy Linux International Linux Community
Erschienen in EasyLinux 03/2007   »   Ausgabe bestellen

Hintergrundwissen zu Linux- und Windows-Dateisystemen

Datei mit System

Martin Loschwitz


Was ist ein Dateisystem? Warum gibt es mehrere davon, und warum verwendet Linux nicht die gleichen wie Windows? Das sind viele Fragen, die wir in diesem Artikel beantworten.

Vielleicht haben Sie bei der Linux-Installation von (Open) Suse, Mandriva oder Ubuntu Linux den Hinweis gesehen, dass der Installer eine Partition "mit Ext3 formatiert". Ext3 ist der Kurzname eines Dateisystems für Linux. Den meisten Desktop-Anwendern sagt auch der Begriff "Dateisystem" nicht mehr als "Ext3"; ein Großteil der Magie rund um Dateisysteme geschieht unter der Haube und damit vom Benutzer ungemerkt. Akut wird das Thema allerdings, wenn Sie unter Linux Windows- oder Apple-Dateisysteme (z. B. NTFS, HFS) lesen möchten. Dieser Artikel gibt einen Überblick über die Funktionsweise eines Dateisystems und stellt die wichtigen Vertreter vor.

Begriffsklärung

Was genau ist ein Dateisystem? Die Antwort auf diese Frage liegt in den Interna der Computertechnik begraben. Halten Sie sich zunächst vor Augen, wie Datenträger Informationen speichern: Auf Festplatten schreibt ein Schreib-/Lesekopf magnetisch, Flash-Laufwerke (z. B. Speicherkarten für Digitalkameras oder USB-Sticks) schreiben elektronisch auf integrierte Speicherchips.

Würde das Betriebssystem die Daten "einfach so" ohne feste Ordnung auf das Speichermedium schreiben, wäre das zwar eine schnelle und praktikable Methode, aber das System hätte anschließend große Schwierigkeiten, das zuvor Geschriebene wiederzufinden. Denken Sie an eine Bibliothek, in der es einen Zettelkasten mit Informationen über alle verfügbaren Bücher gibt. Ohne diesen Zettelkasten wäre es praktisch unmöglich, gezielt ein bestimmtes Buch zu suchen. Ein Dateisystem ist der Zettelkasten der Festplatte, in dem alle Dateien und Ordner mit ihren physikalischen Adresses vermerkt sind. Es dient also der sinnvollen Verwaltung von Speicherplatz. Dazu gehört auch, Zugriffsrechte zu speichern: Nicht jeder Benutzer darf beliebige Dateien lesen oder überschreiben.

Abb. 1: Erst ein Dateisystem macht die sinnvolle Verwaltung von Speicherplatz mit Ordnern überhaupt möglich.

Die technische Beschreibung ist freilich etwas komplizierter und variiert in Details von einem zum anderen Dateisystem sowie zwischen den verschiedenen Betriebssystemen: Unterschiedliche Programmierer und Softwarehersteller haben ganz eigene Vorstellungen davon, wie ein Dateisystem funktionieren muss.

Anwender sehen sich heute einer Vielzahl verschiedener Dateisysteme für Linux gegenüber, auch für Windows gibt es zumindest zwei wichtige Vertreter. Windows kommt nicht problemlos mit den Linux-eigenen Dateisystemen klar, und Linux kennt zwar einige der Windows-Dateisysteme, nutzt diese aber auch nur mit Einschränkungen.

An dieser Stelle stellen wir zunächst die wichtigsten Linux-Dateisysteme vor, zwischen denen Sie sich bei der Installation oder dem späteren Einbau einer zusätzlichen Platte entscheiden können, bevor ein Blick über den Tellerrand auch Windows miteinbezieht.

Ext2, der Linux-Klassiker

Ext2fs oder Ext2 ist der Kurzname für das Second Extended File System, auch das zugehörige Kernel-Modul heißt so (ext2fs). Das Dateisystem ist der Nachfolger des schon länger nicht mehr unterstützten Extended File System, mit dem sehr alte Linux-Versionen arbeiteten. Die Verbreitung von Ext2 ist auch heute noch hoch, da es viele ältere Systeme gibt, die vor Jahren aufgesetzt wurden.

Der logische Aufbau eines Ext2-Dateisystems ist simpel: Es teilt den verfügbaren Platz in Blöcke auf und fasst diese zu Blockgruppen zusammen. Jede solche Blockgruppe besteht aus einem Superblock (das ist der erste Block der Gruppe) und weiteren Kontrollblöcken, bevor im Anschluss die eigentlichen Datenblöcke folgen, in denen die Dateien und Verzeichnisse liegen. Im Vergleich mit moderneren Dateisystemen ist Ext2 veraltet -- unter anderem, weil es keine Journaling-Features bietet.

Abb. 2: Mit dem Kommando "mount" auf der Konsole sehen Sie, welche Datenträger aktuell eingehängt sind und welche Dateisysteme diese verwenden.

Journaling-Dateisysteme

Um unter Linux auf die Daten einer Partition zuzugreifen, muss man sie in die vorhandene Verzeichnisstruktur des Systems einhängen, auf Englisch: mounten. Ist der Zugriff nicht länger nötig, wird es wieder aus der Verzeichnisstruktur ausgehängt (unmount). Im Hintergrund passieren beim Unmount-Vorgang einige wichtige Dinge: Daten, die noch in irgendwelchen Zwischenspeichern des Laufwerks liegen, synchronisiert das System, schreibt also alle Änderungen auf die Platte. Dann markiert das Betriebssystem dieses Dateisystem als "sauber". Nach einem Absturz fehlt dieser Sauber-Flag, und Linux weiß beim nächsten Start, dass etwas schief gegangen ist.

Ext2 hat hier einen großen Nachteil: Wenn der Rechner abstürzt und die Dateisysteme nicht ordentlich ausgehängt wurden, besteht stets die Gefahr, dass einzelne Dateien auf der Platte oder ganze Blöcke korrumpiert sind. Zwar behebt in den meisten Fällen eine Dateisystemüberprüfung (englisch: File System Check, abgekürzt "fsck") das Problem, aber bei sehr großen Partitionen dauert diese Überprüfung gerne mehrere Stunden. Das ist Zeit, die meist nicht zur Verfügung steht, weil Abstürze nicht nach Plan geschehen. Viele andere Dateisysteme sind von diesem Problem genauso betroffen.

Der Lösungsansatz heißt Journaling: Dateisysteme mit diesem Feature unterscheiden sich von klassischen Vertretern wie Ext2 dadurch, dass sie neben den normalen Dateisystemaktionen ein Journal führen. Dort protokollieren sie sämtliche Schreibvorgänge. Der Clou ist: Stürzt der Rechner unvermittelt ab, erkennt nach dem Neustart der Dateisystemtreiber im Kernel die letzten geplanten Schreibvorgang anhand des Journals und schaut nach, ob diese erfolgreich abgeschlossen wurden. Ist dies nicht so, führt er alle noch notwendigen Schreibvorgänge auf dem Medium durch und sorgt so dafür, dass das Dateisystem wieder konsistent und damit "sauber" ist. Der ganze Vorgang dauert nur wenige Sekunden, der abgestürzte Rechner ist danach sofort nutzbar.

Ext2 + Journaling = Ext3

Journaling war eines der Features ist, die Linux-Anwender bei Ext2 am schmerzlichsten vermissten. Zwar gab es damals bereits Journaling-Dateisysteme für Linux, sie waren aber noch weit davon entfernt, in den Linux-Kernel Einzug zu halten, oder galten als wenig zuverlässig. Theodore T'so, Linux-Kernel-Urgestein, machte sich mit ein paar Mitstreitern an eine Lösung und erweiterte Ext2 um das vermisste Feature -- das neue Dateisystem erhielt den Namen Ext3fs (Third Extended Filesystem).

Da sich außer der neuen Journaling-Funktion nur wenig gegenüber Ext2 geändert hat, sind Ext2 und Ext3 auf- und abwärtskompatibel: Aus einem Ext2-Dateisystem lässt sich mit wenig Aufwand (vor allem: ohne neues Formatieren) ein Ext3 machen, und umgekehrt können ältere Linux-Versionen problemlos Ext3-formatierte Datenträger als Ext2-Dateisysteme einbinden.

ReiserFS und XFS

Zwei weitere Dateisysteme, die in den letzten Jahren große Verbreitung gefunden haben, sind auch wichtig: Das erste "echte" Journaling-Dateisystem für Linux war ReiserFS, entwickelt von Hans Reiser und seiner Firma Namesys (http://www.namesys.com). Es war auch das erste Dateisystem dieses Typs, das Einzug in den offiziellen Linux-Kernel gefunden hat. Die aktuelle Version 3 leidet aber an einigen Designschwächen, die unter ungünstigen Bedingungen zu Korruption des Dateisystems führen können. ReiserFS ist sehr performant, wenn in einem Dateisystem viele kleine Dateien gespeichert sind, weshalb man es oft auf News-Servern oder E-Mail-Servern findet. Der Nachfolger ReiserFS 4 befindet sich zur Zeit in der Entwicklung, und es gab viele Anläufe, den Code in den offiziellen Kernel zu integrieren -- allerdings sträubt sich bisher der Linux-Erfinder Linus Torvalds gegen diesen Schritt.

XFS ist ebenfalls ein Journaling-Dateisystem, das die Firma SGI ursprünglich für ihr Betriebssystem Irix entwickelte. Es gilt als stabil und ist mittlerweile Teil des Linux-Kernels, brauchte von den bekannten Dateisystemen aber am längsten, um diesen Schritt zu schaffen. Das ist einer der Gründe, aus denen XFS bis heute nicht so weit verbreitet wie Ext3 und ReiserFS ist.

(Open) Suse, Mandriva Linux und Ubuntu unterstützen sowohl ReiserFS 3 als auch XFS; wenn es aber keine besonderen Gründe für den Einsatz von ReiserFS oder XFS gibt, sollte man Ext3 verwenden, wie es auf aktuellen Systemen auch die Voreinstellung ist.

Windows-Dateisysteme

Auch Windows braucht Dateisysteme. Die Windows-Welt war sehr lange in Desktop-Betriebssysteme (alle Versionen von Windows 3.1 über Windows 95/98 bis ME) und Windows-Versionen für den professionellen Einsatz (die Varianten der NT-Reihe, zu der auch Windows 2000, XP und Vista gehören) gespalten. Das Dateisystem der Desktop-Versionen war FAT (File Allocation Table), das schon MS-DOS (in der heute FAT12 genannten Variante) nutzte. Mit neuen Windows-Versionen kamen FAT16 und FAT32 hinzu, die jeweils einige neue Features unterstützten. So war es mit FAT32 erstmals möglich gewesen, Dateisysteme mit Größen über 4 GByte zu erstellen.

FAT32 findet sich noch heute auf fast allen Flash-Speichern, also auf Digitalkamera-Speicherchips oder USB-Sticks. Unter Linux gibt es einen FAT-Treiber, der zuverlässig alle FAT-Datenträger lesen und beschreiben kann. Allerdings kennt FAT nur wenige Dateizugriffsattribute; insbesondere sind dort die Linux-üblichen Zuordnungen eines Dateibesitzers und einer Besitzergruppe unbekannt. Sie können für einzelne Dateien also nicht festlegen, ob diese für bestimmte Benutzer nur lesbar oder schreibbar sein sollen.

Die NT-Reihe hatte von Anfang an ihr eigenes Dateisystem, das NT File System, kurz NTFS. NTFS war als Dateisystem für den professionellen Einsatz konzipiert, hat eine vollständige, eingeschränkt Posix-kompatible Liste von Dateiattributen und gilt im Vergleich zu FAT als sehr robust. Leider unterstütze Linux NTFS noch nicht optimal. Lange Zeit war es unmöglich, unter Linux auf NTFS-Dateisysteme (sicher) zu schreiben. Das geht zwar mittlerweile dank ntfs-3g [1], der Linux-NTFS-Treiber übersetzt die Dateiattribute aber nicht in entsprechende NTFS-Attribute, so dass Sie -- wie bei FAT32 -- auf individuelle Zugriffsrechte auf NTFS-Partitionen verzichten müssen, wenn Sie Dateien von einem Linux-Dateisystem auf den NTFS-Datenträger kopieren.


Posix: Das Portable Operating System Interface (POSIX) ist ein Minimalstandard für Unix-Systeme, der garantiert, dass man nach Posix-Richtlinien entwickelte Programme unter Posix-kompatiblen Betriebssystemen übersetzen und ausführen kann.

Zwischen den Welten

Während Linux -- mit Einschränkungen -- Windows-Dateisysteme unterstützt, ist jeder Versuch, von Windows aus mit Bordmitteln auf Linux-Partitionen zuzugreifen, hoffnungslos. Erwünscht ist eine solche Möglichkeit aber immer dann, wann Linux und Windows sich den Rechner teilen. Es ist dann zum Beispiel nicht sinnvoll, MP3-Dateien doppelt auf der Linux- und der Windows-Partition zu speichern.

Der Treiber Ext2IFS [2] rüstet Ext2- und Ext3-Support für die Windows-Versionen 2000 und XP nach; mit Umwegen auch unter Vista (siehe Artikel Vista mit Linux-Komfort ab Seite 52). Wenn Sie eine Parallelinstallation planen, achten Sie unbedingt darauf, dass Sie die Linux-Partition mit dem Ext3-Dateisystem formatieren, denn ReiserFS- oder XFS-Treiber für Windows gibt es nicht. (hge)

Zukunftsmusik

Was tut sich bei den Dateisystemen? Wie überall in der IT-Welt steht die Entwicklung auch hier nicht still. Bei allen großen Betriebssystemen arbeiten die Entwickler derzeit an bedeutenden Updates ihrer Standarddateisysteme. Linux ist in dieser Hinsicht gar ein echter Vorreiter: Seit Kernel 2.6.19 gehört das Fourth Extended Filesystem (Ext4) zum offiziellen Kernel, das der Nachfolger von Ext3 ist. Es zeichnet sich durch kleine aber feine Details aus: So hat sich die maximale Größe eines Dateisystems auf 1024 Petabyte vergrößert (Ext3 kam "nur" bis 8 Terabyte). Über Extents fasst das Dateisystem einzelne Blöcke auf der Platte zu einem logischen Block zusammen -- das soll die Performance von Ext4 steigern. Schließlich haben sich die Ext4-Entwickler auch einige Tricks ausgedacht, um Ext4 im Falle von Festplattenbeschädigungen nicht ganz so alt aussehen zu lassen. Eines hat sich aber auch mit der neuesten Version nicht geändert: Bestehende Ext2- oder Ext3-Dateisysteme lassen sich ohne Neuformatierung in ein Ext4-System konvertieren. Nur der Rückweg ist nicht mehr möglich -- sobald das System Extents verwendet, kann die Partition nicht mehr als Ext2- oder Ext3-System gemountet werden.

ReiserFS 4 haben wir bereits im Artikel kurz erwähnt: Es wurde (unabhängig von ReiserFS 3) völlig neu entwickelt und heißt deshalb offiziell auch nur Reiser4. In den Interna hat sich dann auch einiges geändert, so dass Reiser4 wie Ext4 eine bessere Performance bieten soll. Ein besonderes Schmankerl ist bei Reiser4 die Plug-in-Schnittstelle, die das Hinzufügen von Zusatzfunktionen wie Verschlüsselung und Komprimierung auf einfache Weise ermöglicht.

Auch in der Windows-Welt schläft man in Sachen Dateisystem nicht. Allerdings musste Microsoft in dieser Hinsicht kürzlich einen Rückschlag eingestehen: WinFS, das als Teil von Vista ausgeliefert werden sollte und ursprünglich als Erweiterung von NTFS auf Datenbankbasis konzipiert war, stellte sich als nicht realisierbar heraus, die Entwicklung wurde eingestellt. Eine der prestigeträchtigsten Veränderungen, die Vista bringen sollte, ist damit Geschichte. Microsoft kündigte allerdings an, verschiedene Ansätze aus WinFS in künftige Produkte wie den Vista-Nachfolger zu integrieren.

Infos
[1] ntfs-3g: http://www.ntfs-3g.org/
[2] Ext2IFS für Windows: http://www.fs-driver.org/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG | Last modified: 2008-11-05 17:26

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]