23.7Dateisystemtypen
Dieser Abschnitt gibt einen Überblick über die Dateisystemtypen, die unter Linux genutzt werden können. Auf einige besonders wichtige Dateisystemtypen gehe ich im weiteren Verlauf dieses Kapitels dann detaillierter ein: ext2 bis ext4, btrfs, xfs, vfat, ntfs und iso9660. Welchen bzw. welche Dateisystemtypen Sie zurzeit verwenden, können Sie übrigens ganz leicht mit dem Kommando df -T feststellen.
»Linux-Dateisysteme« sind zur Installation und zum Betrieb von Linux geeignet. Im Alltagsbetrieb werden Sie gar nicht bemerken, mit welchem der im Folgenden aufgezählten Dateisystemtypen Sie arbeiten. Elementare Kommandos wie ls oder cp, die Verwaltung der Zugriffsrechte etc. – all das funktioniert unabhängig vom Dateisystem.
Die Dateisysteme unterscheiden sich durch Merkmale, die überwiegend für fortgeschrittene Anwender bzw. für den Server-Einsatz interessant sind: Geschwindigkeit beim Umgang mit sehr großen oder mit sehr vielen eher kleinen Dateien, Effizienz bei Schreib- und Lese-Operationen, CPU-Belastung, Journaling-Funktion (Verhalten nach einem Absturz), Quota-Funktion (die Möglichkeit, den maximalen Speicherverbrauch pro Benutzer einzuschränken), Verwaltungs-Overhead, Snapshot-Funktionen, Verschlüsselungs- und Komprimierfunktionen, TRIM-Unterstützung für SSDs etc.
-
ext: ext2 (Extended Filesystem, Version 2) war in den Anfangszeiten von Linux das dominierende Linux-Dateisystem. 2002 hat ext3 seine Nachfolge angetreten, Ende 2008 wurde ext4 vorgestellt. Die maximale Dateisystemgröße beträgt nun ein Exabyte (1.048.576 TByte), was für eine Weile reichen sollte ...
-
btrfs: Wenn es nach dem Willen namhafter Kernelentwickler geht, ist btrfs das Linux-Dateisystem der Zukunft. Das mit der Unterstützung von Oracle von Grund auf neu entwickelte Dateisystem beinhaltet Device-Mapper-, Snapshot- und RAID-Funktionen und ist am ehesten mit Suns ZFS zu vergleichen. Leider ist btrfs noch nicht vollständig ausgereift.
-
xfs: xfs kam ursprünglich als Dateisystem auf den Workstations der Firma SGI unter dem Betriebssystem IRIX zum Einsatz. xfs wird in aktuellen SUSE- und Red-Hat-Distributionen standardmäßig verwendet. Im Vergleich zu ext4 gilt xfs für sehr große Dateisysteme mit mehr als 16 TByte als besonders ausgereift. Dieses Argument ist primär bei großen Server-Installationen relevant.
Welches ist das beste Linux-Dateisystem?
Das »beste« oder »schnellste« Dateisystem gibt es nicht – jede Wertung hängt vom Verwendungszweck ab. Meine Empfehlung geht in Richtung ext4 sowohl für Desktop- als auch für Server-Installationen. ext4 ist ein vergleichsweise simples, dafür aber sehr robustes Dateisystem.
Wenn Sie an Benchmark-Tests interessiert sind, sollten Sie einen Blick auf die Webseite http://www.phoronix.com werfen. Deren Team führt immer wieder umfassende Vergleiche zwischen den verschiedenen Dateisystemen durch.
ZFS gilt momentan als Maßstab, an dem sich alle Dateisysteme messen müssen. ZFS wurde von Sun für Solaris entwickelt und gehört nun Oracle. Da der ZFS-Code nicht GPL-kompatibel ist, kann er nicht in den Linux-Kernel integriert werden. Es ist aber nicht schwierig, den Treiber als binäres Modul oder als Quellcode zu installieren. Weitere Informationen finden Sie hier:
Die folgenden Dateisysteme helfen beim Datenaustausch mit DOS-, Windows- und Macintosh-Systemen:
-
fat32 und vfat: Dieses Dateisystem, genau genommen eine Kombination aus fat32 und vfat, wird auf den meisten SD-Karten und USB-Sticks verwendet. Ursprünglich kam es auch als Dateisystem für Windows 9x/ME zum Einsatz. Linux kann derartige Dateisysteme lesen und schreiben.
-
exfat: Diese Weiterentwicklung des vfat-Dateisystems ist besonders für große Flash-Datenträger geeignet. Es gibt Treiber für Linux, diese müssen aber in der Regel extra installiert werden.
-
ntfs: Dieses Dateisystem kommt unter allen aktuellen Windows-Versionen ab Windows NT zum Einsatz. Linux kann Dateien lesen und schreiben.
-
hfs und hfsplus: Diese Dateisysteme werden auf Apple-Rechnern eingesetzt. Linux kann derartige Dateisysteme lesen und schreiben. Das Schreiben funktioniert allerdings nur, wenn die Dateisysteme unter OS X ohne Journaling-Funktionen eingerichtet wurden. Das ist in der Praxis freilich die Ausnahme und nur für den Datenaustausch zwischen OS X und Linux zweckmäßig.
Auf Daten-CDs und DVDs werden üblicherweise eigene Dateisysteme verwendet:
-
iso9660: Das Dateisystem für CD-ROMs wird durch die ISO-9660-Norm definiert. Diese Norm sieht allerdings nur kurze Dateinamen vor. Lange Dateinamen werden je nach Betriebssystem durch unterschiedliche Erweiterungen unterstützt (Rockridge, Joliet).
-
udf: Als Nachfolger zu ISO 9660 hat sich das Universal Disk Format etabliert. Es kommt häufig bei DVDs zum Einsatz.
Dateisysteme müssen sich nicht auf der lokalen Festplatte befinden – sie können auch über ein Netzwerk eingebunden werden. Der Linux-Kernel unterstützt diverse Netzwerkdateisysteme, von denen die folgenden fünf am häufigsten zum Einsatz kommen:
-
nfs: Das Network File System (NFS) ist das unter Unix wichtigste Netzwerkdateisystem.
-
smbfs/cifs: Diese Dateisysteme ermöglichen das Einbinden von Windows- oder Samba-Netzwerkverzeichnissen in den Verzeichnisbaum.
-
sshfs: Das eher selten eingesetzte Dateisystem sshfs ermöglicht es, über SSH erreichbare Verzeichnisse in den lokalen Verzeichnisbaum einzubinden.
-
coda: Dieses Dateisystem ist am ehesten mit NFS vergleichbar. Es bietet eine Menge Zusatzfunktionen, ist aber nicht sehr verbreitet.
-
ncpfs: Dieses Dateisystem basiert auf dem Netware Core Protocol. Es wird von Novell Netware eingesetzt.
Unter Linux gibt es eine Reihe von Dateisystemen, die nicht zum Speichern von Daten auf einer Festplatte oder einem anderen Datenträger gedacht sind, sondern lediglich zum Informationsaustausch zwischen dem Kernel und Anwendungsprogrammen. In /proc/filesystems sind diese Dateisysteme mit dem Begriff nodev gekennzeichnet. Im Folgenden werden nur die wichtigsten derartigen Dateisysteme kurz vorgestellt.
-
devpts: Dieses Dateisystem ermöglicht via /dev/pts/* den Zugriff auf Pseudo-Terminals (kurz PTYs) gemäß der Unix-98-Spezifikation. Pseudo-Terminals emulieren eine serielle Schnittstelle und werden z.B. in Terminal-Fenstern eingesetzt.
-
proc und sysfs: Das proc-Dateisystem dient zur Abbildung von Verwaltungsinformationen des Kernels bzw. der Prozessverwaltung. Ergänzend dazu bildet das sysfs-Dateisystem die Zusammenhänge zwischen dem Kernel und der Hardware ab. Die beiden Dateisysteme sind an den Positionen /proc und /sys eingebunden.
-
tmpfs: Dieses temporäre Dateisystem ermöglicht einen effizienten Datenaustausch zwischen Programmen. Diverse /run/xxx-Verzeichnisse werden damit realisiert. In diesen Verzeichnissen gespeicherte Daten gehen beim Neustarten des Rechners verloren.
-
devtmpfs: Das devtmpfs-Dateisystem bildet die Device-Dateien im /dev-Verzeichnis ab.
Abschließend folgen hier noch einige Dateisysteme bzw. Schlüsselwörter, die sich in die obigen Gruppen nicht einordnen lassen:
-
auto: Es gibt kein auto-Dateisystem. auto darf aber in /etc/fstab bzw. bei mount zur Angabe des Dateisystems verwendet werden. Linux versucht dann, das Dateisystem selbst zu erkennen. Das funktioniert für die meisten wichtigen Dateisysteme.
-
autofs, autofs4: Auch autofs und die neuere Variante autofs4 sind keine eigenen Dateisysteme, sondern Kernelerweiterungen, die für die gerade benötigten Dateisysteme automatisch mount ausführen. Wird das Dateisystem eine Weile nicht mehr verwendet, wird ebenfalls automatisch umount ausgeführt. Dieses Verfahren bietet sich vor allem dann an, wenn von zahlreichen NFS-Verzeichnissen immer nur einige wenige aktiv genutzt werden.
Intern wird dazu beim Systemstart das Programm automount gestartet. Das Programm ist beispielsweise bei Red Hat und Fedora standardmäßig installiert. autofs wird allerdings erst nach einer Konfiguration von /etc/auto.master bzw. /etc/auto.misc aktiv. Weitere Details finden Sie hier:
-
cgroup: Die sogenannten Control Groups ermöglichen es, die Nutzung von Ressourcen durch einzelne Prozesse zu steuern bzw. zu limitieren. Das virtuelle Cgroup Filesystem hilft dabei, die aktuellen Cgroup-Einstellungen auszulesen oder zu verändern. Die Grundlagen der Control Groups sind hier dokumentiert:
-
cramfs und squashfs: Das Cram Filesystem und das Squash Filesystem sind Read-Only-Dateisysteme. Sie dienen dazu, möglichst viele Daten in komprimierter Form in ein Flash Memory bzw. in ein ROM (Read Only Memory) zu packen.
-
fuse: Das Filesystem in Userspace (FUSE) ermöglicht es, Dateisystemtreiber außerhalb des Kernels zu entwickeln und zu nutzen. FUSE wird also immer zusammen mit einem externen Dateisystemtreiber eingesetzt. FUSE wird beispielsweise vom NTFS-Treiber ntfs verwendet.
-
gfs und ocfs: Das Global File System (GFS) und das Oracle Cluster File System (OCFS) ermöglichen den Aufbau riesiger, vernetzter Dateisysteme, auf die mehrere Rechner parallel zugreifen.
-
loop: Das Loopback-Device ist ein Adapter, der eine gewöhnliche Datei wie ein Block-Device ansprechen kann. Damit können Sie in einer normalen Datei ein beliebiges Dateisystem unterbringen und mit mount in den Verzeichnisbaum einbinden. Die dazugehörige Kernelfunktion Loopback Device Support ist im Modul loop realisiert. Das Loopback-Device wird z.B. für die Erstellung einer Initial-RAM-Disk für GRUB, für die Realisierung von verschlüsselten Dateisystemen oder zum Testen von ISO-Images verwendet.
-
none: Naturgemäß ist auch none kein Dateisystem. Es besteht aber die selten genutzte Möglichkeit, ein lokales Verzeichnis an einem anderen Ort in den Verzeichnisbaum einzubinden. Dabei geben Sie bei mount bzw. in /etc/fstab als Dateisystemtyp none und als zusätzliche Option bind an. Die Wirkung ist ähnlich wie bei einem symbolischen Link, die interne Realisierung aber vollkommen anders. Diese Vorgehensweise ist z.B. bei der Konfiguration eines NFS4-Servers zweckmäßig.
-
unionfs/aufs/mhddfs: Das Konzept von unionfs bzw. dessen Variante aufs ermöglicht es, mehrere Dateisysteme quasi übereinanderzulegen, wobei das oberste Dateisystem Vorrang hat. unionfs und aufs kommen bei manchen Live-Systemen zur Anwendung: Linux startet direkt von der DVD. Dem Read-Only-Dateisystem der DVD wird ein RAM-Disk-Dateisystem übergestülpt, in dem Änderungen durchgeführt werden können. Nach außen hin ist nur ein Dateisystem sichtbar, das sich aus der Grundstruktur der CD/DVD und den in der RAM-Disk durchgeführten Änderungen ergibt.
Auch das Dateisystem mhddfs fügt Dateien aus mehreren physikalischen Dateisystemen zu einem virtuellen Dateisystem zusammen. Beim Erstellen neuer Dateien werden die physikalischen Dateisysteme der Reihe nach gefüllt. Neue Dateien werden also zuerst im ersten Dateisystem gespeichert, bis dieses einen vorgegebenen Grenzwert erreicht, dann auf dem zweiten Dateisystem etc.
-
Verschlüsselte Dateisysteme: Linux kennt verschiedene Verfahren, um den Inhalt von Dateisystemen zu verschlüsseln. Einige dieser Verfahren basieren direkt auf eigenen Dateisystemen (z.B. CryptoFS oder eCryptfs). Verbreiteter ist allerdings die Kombination von LVM und Verschlüsselung. Seit Kernel 4.1 enthält das ext4-Dateisystem eingebaute Verschlüsselungsfunktionen.
Welche Dateisysteme direkt in den laufenden Kernel integriert bzw. zurzeit als Modul geladen sind, können Sie der Datei /proc/filesystems entnehmen. Welche Kernelmodule für weitere Dateisysteme darüber hinaus noch zur Verfügung stehen, sehen Sie im Verzeichnis /lib/modules/n/kernel/fs/.