Dateisystemtypen

Administration des Linux-Dateisystems

10.01.2005 von Michael Kofler
Das Linux-Dateisystem dient als Basis jeder Installation. Unsere neue Reihe führt in die Administration des Dateisystems ein und erläutert im ersten Teil die wichtigsten Dateisystemtypen, die Linux anbietet.

Unsere neue Linux-Serie beschreibt die verschiedenen Facetten der Administration des Dateisystems. Mit Ausnahme der ersten beiden Abschnitte richtet sich das Kapitel explizit an Linux-Profis. Die achtteilige Serie behandelt dabei folgende Themen:

Die Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration, Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch in unserem Buchshop bestellen oder als eBook herunterladen.

Serie: Administration des Linux-Dateisystems

Teil 1

Dateisystemtypen

Teil 2

mount und fstab

Teil 3

CD-ROMs, Disketten, externe Massenspeicher

Teil 4

ext3 und reiserfs

Teil 5

Partitionierung der Festplatte

Teil 6

RAID mit Linux

Teil 7

LVM, Logical Volume Manager

Teil 8

DMA mit IDE-Festplatten

Dateisystemtypen

Mit "Linux-Dateisystemen" sind Dateisystemtypen gemeint, in denen ein laufendes Linux-System seine eigenen Dateien und Verzeichnisse speichert. Im Alltagsbetrieb werden Sie gar nicht bemerken, mit welchem Dateisystem Sie arbeiten. Elementare Kommandos wie ls oder cp, die Verwaltung der Zugriffsrechte etc. - all das funktioniert unabhängig vom Dateisystem. (Welchen bzw. welche Dateisystemtypen Sie zurzeit verwenden, können Sie übrigens ganz leicht mit dem Kommando df -T feststellen.)

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, CPU-Belastung, Journaling-Funktion (Verhalten nach einem Absturz), Quota-Funktion (die Möglichkeit, den maximalen Speicherverbrauch pro Benutzer einzuschränken), NFS-Kompatibilität, Verwaltungs-Overhead, Unterstützung zusätzlicher Zugriffsrechte (ACL) etc. Insofern gibt es also kein Dateisystem, das einfach das beste ist - die Wertung hängt vom Verwendungszweck ab.

In der Vergangenheit tauchte immer wieder die Frage auf, wie groß Dateien maximal sein dürfen. Die Antwort hängt davon ab, welchen Kernel, welche CPU-Architektur, welche glibc-Bibliothek und welches Dateisystem Sie verwenden. Aktuelle Distributionen unterstützen durchweg die LFS-Erweiterungen (Large Filesystem Support.) in der glibc-Bibliothek. Daher ist die maximale Dateigröße in den meisten Fällen unbegrenzt (2^63 Byte, also mehr, als auf Festplatten jemals wird gespeichert werden können).

Linux Dateisysteme

ext2: ext2 (extended filesystem, Version 2) war für viele Jahre das dominierende Linux-Dateisystem. Es ist außerordentlich stabil und sicher. Als einziges der hier genannten Dateisysteme unterstützt es kein so genanntes Journaling. Nach einem Rechnerabsturz muss daher eine zeitaufwändige Überprüfung des gesamten Dateisystems durchgeführt werden.

ext3: Seit ca. 2002 hat ext3 die Nachfolge von ext2 angetreten. Es ist zu diesem weitgehend kompatibel, unterstützt aber Journaling-Funktionen und ab Kernel 2.6 auch ACLs.

reiserfs: Das Reiser-Dateisystem, dessen Name sich von seinem Initiator Hans Reiser ableitet, war das erste Dateisystem mit Journaling-Funktionen, das den Eingang in den Linux-Kernel schaffte (Version 2.4.1). Gegenüber ext2 bzw. ext3 bietet das Reiser-Dateisystem eine höhere Geschwindigkeit vor allem beim Umgang mit vielen kleinen Dateien. Tipps zur Verwendung eines Reiser-Dateisystems geben Teil 4 unserer Serie und www.namesys.com.

xfs: xfs ist seit Jahren als Dateisystem auf Workstations der Firma SGI unter dem Betriebssystem IRIX im Einsatz. Es eignet sich insbesondere für die Verwaltung sehr großer Datenbestände (bis hinein in den TByte-Bereich). Es unterstützt Quotas und erweiterte Attribute (ACLs). Das Dateisystem kann im laufenden Betrieb (ohne umount) vergrößert werden, was insbesondere in Kombination mit LVM (siehe Teil 7) sehr praktisch ist. Auch die I-Nodes-Anzahl kann im laufenden Betrieb verändert werden. Mehr dazu finden Sie unter http://oss.sgi.com/projects/xfs/

jfs: jfs steht für journaled file system. Es wurde ursprünglich von IBM entwickelt und später auf Linux portiert. Details finden Sie hier: http://oss.software.ibm.com/developerworks/opensource/jfs/

Journaling

Wie aus der obigen Aufzählung hervorgeht, gibt es momentan vier verschiedene Linux-Dateisysteme mit Journaling-Funktionen. Was bedeutet das aber? Journaling bedeutet in seiner einfachsten Form, dass der Beginn und das Ende jeder Dateioperation in einer speziellen Datei mitprotokolliert werden. Dank des Protokolls kann später geprüft werden, ob eine bestimmte Dateioperation vollständig ausgeführt wurde.

Wenn das nicht der Fall ist, kann die Operation widerrufen werden. In der Datenbankwelt spricht man hier von Transaktionen. Bei fortgeschrittenen Journaling-Systemen besteht auch die Möglichkeit, die eigentlichen Änderungen an den Dateien im Journal zu protokollieren. Das verlangsamt den gewöhnlichen Betrieb, gibt aber mehr Möglichkeiten zur späteren Rekonstruktion.

Wenn nun eine Dateioperation beispielsweise wegen eines Stromausfalls nicht vollständig abgeschlossen werden kann, geht dies aus dem Protokoll hervor. Wenn nur ein einfaches Journaling aktiv war, sind die Änderungen zwar verloren (versprechen Sie sich also keine Wunder von der Journaling-Funktion!), der bisherige Zustand der Datei steht aber zumeist noch zur Verfügung.

Der große Vorteil der Journaling-Funktionen besteht darin, dass das Dateisystem beim nächsten Rechnerstart sehr rasch wieder in einen konsistenten Zustand gebracht und beinahe sofort wieder genutzt werden kann. Das ist ein großer Unterschied im Vergleich zu früher, wo nach einem Absturz oder Stromausfall das gesamte Dateisystem systematisch nach eventuellen Fehlern durchsucht werden musste. Das dauerte mehrere Minuten, bei sehr großen Festplatten eventuell sogar Stunden.

Unix-, Windows-, OS/2- und Macintosh-Dateisysteme

Falls Sie auf Ihrem Rechner ein zweites Unix-ähnliches Betriebssystem installiert haben, erlauben die hier aufgezählten Dateisysteme einen einfachen Datenaustausch. Linux kann unter anderem auf folgende Dateisysteme zugreifen:

efs: Das efs-Dateisystem ist auf älteren SGI-Rechnern (IRIX-Versionen vor 6.0) im Einsatz. Auch manche SGI-CD-ROMs verwenden dieses Format. Linux kann efs-Dateisysteme nur lesen, nicht aber verändern.

sysv: Dieses Dateisystem wird von SCO-, Xenix- und Coherent-Systemen eingesetzt.

ufs: Dieses Dateisystem wird von FreeBSD, NetBSD, NextStep und SunOS verwendet. Linux kann derartige Dateisysteme nur lesen, aber nicht verändern. Zum Zugriff auf BSD-Partitionen ist zusätzlich die BSD-disklabel-Erweiterung erforderlich. Eine analoge Erweiterung existiert auch für Sun-OS-Partitionstabellen.

Die im Folgenden aufgezählten Dateisysteme helfen beim Datenaustausch zwischen Linux-und DOS-, Windows-, OS/2-und Macintosh-Betriebssystemen.

vfat: Dieses Dateisystem wird von Windows 9x/ME verwendet. Linux kann derartige Partitionen lesen und schreiben. Der vfat-Dateisystemtreiber kann auch mit alten DOS-Dateisystemen umgehen (8+3 Zeichen).

ntfs: Dieses Dateisystem kommt unter Windows NT 4, 2000 und XP zum Einsatz. Linux kann Dateien nur lesen, aber nicht verändern.

hpfs: hpfs ist das Dateisystem von OS/2. Linux kann derartige Dateisysteme lesen und schreiben.

hfs und hfsplus: Diese Dateisysteme werden auf Apple-Rechnern eingesetzt. Linux kann derartige Dateisysteme lesen und schreiben.

CD-ROM- und Netzwerk-Dateisysteme

Auf Daten-CD-ROMs 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 und zueinander inkompatible Erweiterungen unterstützt. Linux kommt sowohl mit der unter Unix üblichen Rockridge-Erweiterung zurecht als auch mit der von Microsoft eingeführten Joliet-Erweiterung. Derartige CDs werden automatisch richtig erkannt.

udf: Als Nachfolger zu ISO 9660 beginnt sich allmählich das Universal Disk Format zu etablieren. Es kommt bei DVDs zum Einsatz (auch bei Daten-DVDs, wenn das so genannte packet writing verwendet wurde).

Netzwerkdateisysteme

Dateisysteme müssen sich nicht auf der lokalen Festplatte befinden - sie können auch über ein Netzwerk eingebunden werden. Der Linux-Kernel unterstützt zurzeit folgende Netzwerkdateisysteme:

nfs: Das Network File System ist das unter Unix wichtigste Netzwerkdateisystem.

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.

smbfs: Hierbei handelt es sich um das Netzwerk-Dateisystem von Microsoft. Es kommt unter Linux im Zusammenspiel mit Samba zur Anwendung.

cifs: Das Common Internet File System ist eine Weiterentwicklung des gerade erwähnten Netzwerk-Dateisystems von Microsoft. Weitere Informationen zum cifs-Dateisystem finden Sie unter http://www.samba.org/samba/Linux_CIFS_client.html

Virtuelle Dateisysteme

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. Sie werden Unix/Linux-intern beispielsweise von Terminal-Emulatoren wie xterm eingesetzt. Dabei kommen traditionell Devices wie /dev/ttypn zum Einsatz. Die Unix-98-Spezifikation definiert stattdessen neue Devices. Weitere Details finden Sie im Text-Terminal-HOWTO.

proc: Das proc-Dateisystem dient zur Abbildung von Verwaltungsinformationen des Kernels bzw. der Prozessverwaltung. Das Dateisystem ist an der Position /proc eingebunden.

sysfs: Seit Kernel 2.6 bietet das sysfs eine Alternative zum proc-Dateisystem. sysfs ist viel besser konzipiert als das proc-Dateisystem, es bleibt aber abzuwarten, ob es dieses wirklich ersetzen wird. Sehr viele Programme verlassen sich auf die schon seit vielen Kernelversionen verfügbaren Informationen im /proc-Verzeichnis. Wenn Sie den Kernelcode installiert haben, gibt die folgende Datei weitere Informationen: /usr/src/linux/Documentation/filesystems/sysfs.txt

Um das Dateisystem manuell einzubinden, führen Sie die folgenden Kommandos aus:

root# mkdir /sys
root# mount -t sysfs sysfs /sys

tmpfs: Dieses Dateisystem ist die Basis für shared memory gemäß System V. Es wird zumeist an der Position /dev/shm eingebunden und ermöglicht einen effizienten Datenaustausch zwischen zwei Programmen.

usbfs bzw. usbdevfs: usbdevfs gibt in Kernel 2.4 Informationen über die angeschlossenen USB-Geräte. Es ist üblicherweise in das proc-Dateisystem eingebunden (/proc/bus/usb). Seit Kernel 2.6 wird usbdevfs durch usbfs ersetzt. usbdevfs steht aus Kompatibilitätsgründen weiterhin zur Verfügung, wird aber in Kernel 2.7 endgültig eliminiert.

Sonstige Dateisysteme

auto: Ein auto-Dateisystem gibt es in Wirklichkeit gar nicht. Allerdings darf dieses Schlüsselwort 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, unter anderem für ext2, ext3, iso9660, reiserfs, udf, vfat und xfs.

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 an, wenn von zahlreichen NFS-Verzeichnissen immer nur einige wenige aktiv genutzt werden.

Intern wird dazu beim Systemstart das Programm automount vom Script /etc/ init.d/autofs gestartet. automount wird durch /etc/auto.master konfiguriert. Die entsprechenden Programme werden beispielsweise bei Red Hat und Fedora per Default installiert. autofs wird allerdings erst nach einer Konfiguration von /etc/auto.master bzw. /etc/auto.misc aktiv. Weitere Details finden Sie im Automount-Mini-HOWTO http://tldp.org/HOWTO/Automount.html

devfs und udev: Viele Hardware-Komponenten werden unter Linux in Form von Device-Dateien angesprochen. Allerdings ist dieses System sehr inflexibel und erfordert mehrere tausend /dev/xxx-Dateien. Daher gibt es seit Kernel 2.4 das devfs-Dateisystem, das die Aufgabe der Device-Dateien übernehmen soll. Obwohl die Idee gut war, hat sich devfs nicht durchsetzen können und gilt ab Kernel 2.6 als obsolet. Es wird sich zeigen, ob sein Nachfolger udev erfolgreicher sein wird.

Loopback: Es gibt kein Loopback-Dateisystem. Es besteht aber die Möglichkeit, in einer normalen Datei ein ganzes Dateisystem unterzubringen und diese Datei mit mount als Dateisystem in den Verzeichnisbaum einzubinden. Die dazugehörige Kernelfunktion heißt loopback device support (Modul loop). Daraus wird dann oft der nicht ganz zutreffende Begriff Loopback-Dateisystem. Es gibt eine Reihe von Anwendungen für loopback devices, z. B. die Erstellung einer Initial-RAM-Disk für GRUB oder LILO, die Realisierung von verschlüsselten Dateisystemen oder das Testen von ISO-Images für CDs.

jffs und cramfs: Das Journaling Flash Filesystem und das Crama Filesystem kommen nur in so genannten embedded devices zur Anwendung. Sie dienen dazu, möglichst viele Daten in komprimierter Form in ein Flash Memory bzw. in ein ROM (ReadOnly Memory) zupacken.

Ausblick

Nachdem in diesem Teil erst einmal die wichtigsten Dateisystemtypen vorgestellt wurden, geht es in Teil 2 in die Praxis. Dort lesen Sie, wie Sie den aktuellen Zustand des Dateisystems ermitteln. Zudem erfahren Sie, wie Sie Dateisysteme manuell mit mount oder automatisch mit fstab einbinden und mit welchen Optionen Sie dabei Ihr System schon beim Mounten absichern können.

Die Artikelserie basiert auf dem Kapitel 25 des Standardwerks "Linux - Installation, Konfiguration Anwendung" von Michael Kofler aus dem Verlag Addison-Wesley. Sie können dieses über 1200 Seiten starke Buch auch versandkostenfrei in unserem Buchshop bestellen oder als eBook herunterladen. (ala)

Serie: Administration des Linux-Dateisystems

Teil 1

Dateisystemtypen

Teil 2

mount und fstab

Teil 3

CD-ROMs, Disketten, externe Massenspeicher

Teil 4

ext3 und reiserfs

Teil 5

Partitionierung der Festplatte

Teil 6

RAID mit Linux

Teil 7

LVM, Logical Volume Manager

Teil 8

DMA mit IDE-Festplatten