Mit ein paar einfachen Shell-Befehlen legen Sie die Grundlage für jede moderne Linux-Distribution: das Dateisystem.
Linux unterstützt ein breites Spektrum an Dateisystemen, darunter viele aus dem Umfeld anderer Betriebssysteme. Für Festplatten kommen jedoch nach wie vor am ehesten die nativen Linux-Dateisysteme Ext2, Ext3 und Ext4 (den Nachfolgern von Ext2) sowie XFS infrage. Aus Kompatibilitätsgründen ist es darüber hinaus wichtig, das VFAT-Dateisystem zu lesen und auf diesem Daten zu schreiben, da es standardmäßig auf vielen Medien zum Einsatz kommt, darunter USB-Sticks und Flash-Laufwerke. Darüber dienen einige Tools, die beim Verwalten von normalen Dateisystemen helfen, auch zum Verwalten von Swap-Partitionen. Solche Swap-Partitionen setzt der Linux-Kernel als virtuellen Speicher ein, wenn nicht genug Arbeitsspeicher bereit steht.
Dateisysteme anlegen
Mit dem Befehl mkfs (Abbildung 1) richten Sie ein neues Dateisystem auf einem ausgewählten Block-Gerät ein, beispielsweise in einer Partition auf der Festplatte. Die grundsätzliche Aufrufform lautet:
# mkfs -t Typ Gerät

-f und -F sorgen dafür, das mkfs das Dateisystem selbst dann erstellt, wenn bereits ein Dateisystem vorhanden ist.” width=”300″ height=”196″ />
-f und -F sorgen dafür, das mkfs das Dateisystem selbst dann erstellt, wenn bereits ein Dateisystem vorhanden ist. Dabei bezeichnet Typ eines der von Linux unterstützten Dateisysteme, wie zum Beispiel Ext2 oder XFS, und Gerät legt die Partition auf der Festplatte fest, wie zum Beispiel /dev/hda1 oder /dev/sdc3. Darüber hinaus dürfen Sie neben dem Dateisystemtyp weitere Parameter angeben, die je nach Dateisystem unterschiedlich ausfallen.
Das Programm mkfs überlässt das eigentliche Erstellen des Dateisystems einem von mehreren Spezialwerkzeugen, wie etwa mkfs.ext2, mkfs.xfs oder mkfs.vfat. Da sich Dateisysteme stark voneinander unterscheiden, pflegen die Experten des jeweiligen System die Tools selbst. Das trägt dazu bei, dass deren Code äußerst stabil läuft.
Die meisten der Programme nutzen die selben Optionen, obwohl es in Einzelfällen Unterschiede gibt – abhängig von den Funktionen, die das jeweilige Dateisystemen kennt. Es empfiehlt sich daher, stets den Befehl mkfs zu nutzen, um ein Dateisystem zu erstellen, selbst wenn dieser dann andere Tools aufruft – verwenden Sie die spezifischen Helfer also nicht direkt.
Trotz der Unterschiede gibt es ein paar Standard-Optionen, die allen Hilfsprogrammen gemeinsam sind. Benutzen Sie den Parameter -c, so prüft das Programm das angegebene Gerät auf defekte Blöcke, die es dann während des eigentlichen Erstellens überspringt. Die Parameter -v und -V bewirken die Ausgabe von ausführlichen beziehungsweise sehr ausführlichen Meldungen.
Optionen
Sämtliche Tools für Ext-Dateisysteme sowie XFS unterstützen Optionen, mit denen Sie die Einstellungen für das Dateisystem anpassen, darunter die Blockgröße, die Anzahl und Größe der Inodes, die Größe der Fragmente oder den Speicherplatz, der für Prozesse reserviert bleibt, die der Administrator ausführt. Darüber hinaus gibt es Optionen, um die Deskriptortabelle für Blockgruppen zu vergrößern, falls sich die Dateisystemgröße einmal verändert, sowie zum Anpassen der Einstellungen für Stripe, Stride und andere Informationen, die Sie benötigen, wenn das Dateisystem in einen RAID-Verbund einbinden. Erfreulicherweise existieren Standardeinstellungen für all diese Parameter, die Sie auch nutzen sollten, falls es nicht gute Gründe gibt, davon abzuweichen. Nichtsdestoweniger sollten Sie sich für den Fall, dass es irgendwann einmal zu Problemen kommt, mit den Grundlagen der Optionen vertraut machen.
Über Blockgröße geben Sie die Größe der Chunks an, die ein Dateisystem benutzt, um Daten zu speichern – gewissermaßen die Granularität der Teile, in es eine Datei aufspaltet, wenn Sie diese auf ein entsprechendes Medium speichern. Ext-Dateisysteme verstehen sich auf Blöcke in den Größen 1024, 2048 oder 4096 Byte. Größere Blöcke erhöhen einerseits den Durchsatz, da die Platte pro Zeiteinheit mehr Daten liest und schreibt, bevor der Treiber eine neue Position ansteuert. Andererseits verschwenden sie dann viel Platz, wenn Sie eine Vielzahl kleiner Dateien speichern, da jedes Fragment immer einen kompletten Block verbraucht, selbst wenn die Daten nur ein kleinen Teil davon belegen. Für alle vier Linux-Dateisysteme stellen Sie die Blockgröße mittels des Parameters -b ein. Die nach dem Parameter erforderliche Syntax weist jedoch Unterschiede auf, weswegen Sie die Einzelheiten in der Manpage für die jeweilige Option nachlesen sollten.
Ext3, Ext4 und XFS unterstützen Journaling, mit dem sie Fehlern bei Abstürzen vorbeugen. Das geschieht mittels eines Änderungsberichts bezüglich der Dateien und Verzeichnisse, des sogenannten Journals. Die Größe dieses Journals geben Sie entweder in Blöcken oder Bytes an. Außerdem legen Sie fest, ob das Journal auf demselben Gerät wie das Dateisystem liegen soll oder Sie es getrennt speichern möchten. Wiederum gilt: Die genaue Syntax unterscheidet sich je nach Dateisystem. Beachten Sie daher die Dokumentation, bevor Sie zum nächsten Schritt übergehen.
VFAT-Dateisysteme unterscheiden sich in vieler Hinsicht von den nativen Dateisystemen, die bei Linux und Unix-ähnlichen Betriebssystemen zum Einsatz kommen. Da FAT sehr einfacher gestrickt ist, müssen Sie sich um Inodes, Fragmentgrößen oder RAID-Einstellungen hier keine Gedanken machen. Sie haben die Möglichkeit, die Anzahl der reservierten Sektoren, Sektoren pro Cluster und die Sektorengröße einzustellen – Parameter, die den Blockeinstellungen der nativen Dateisysteme unter Unix ähneln. In beinahe allen Fällen sind die Standardeinstellungen ausreichend.
Der Befehl mkswap erzeugt einen Swap-Bereich auf einer Partition – analog zu mkfs, der ein Dateisystem erstellt. Die Syntax gleicht sich ebenfalls: Sie lautet mkswap Gerät, wobei der optionale Parameter -c bewirkt, dass das Programm die Partition auf defekte Blöcke hin überprüft, bevor es den entsprechenden Bereich einrichtet. Genauso wie Sie ein neues Dateisystem mithilfe des Befehls mount in den Verzeichnisbaum einhängen, bevor es zum Einsatz bereit steht, gilt es, eine neue Swap-Partition mit dem Befehl swapon -L Gerät zu aktivieren.
Beispiele
Mit folgender Zeile formatieren Sie die erste Partition des ersten SATA-Laufwerks in einem System mit Ext3:
# mkfs -t ext3 /dev/sda1
In diesem Beispiel kommen die Standardeinstellungen für Blockgröße, Inode-Parameter sowie alle anderen Optionen zum Einsatz – wobei das Programm einige davon tatsächlich erst während der Laufzeit ermittelt, während mkfs die Geometrie der Festplatten-Partition analysiert. Der folgende Befehl erzeugt ebenfalls ein Ext3-Dateisystem auf /dev/sda1, erzwingt aber eine Blockgröße von 4096 Byte:
# mkfs -t ext3 -b 4096 /dev/sda1
Ein weiterer Befehl erzeugt dasselbe Dateisystem wie die vorherige Befehlszeile, legt aber zusätzlich eine Journal-Datei auf einer separaten Partition an (/dev/sdb1).
# mkfs -t ext3 -b 4096 -J device=/dev/sdb1 /dev/sda1
Mit folgendem Befehl legen Sie eine XFS-Partition auf /dev/sda1 an:
# mkfs -t xfs /dev/sda1
Folgende Eingabe ist erforderlich, um für dieses Dateisystem eine Blockgröße von 4096 Byte einzustellen:
# mkfs -t xfs -b size=4096 /dev/sda1
Die Syntax unterscheidet sich von der bei Ext3. Daher sollten Sie sich mithilfe der Dokumentation genau darüber informieren, was die Dateisystem-spezifischen Parameter bei mkfs bewirken.
Wartung
Obwohl die Speicherkapazität der Festplatten jedes Jahr zunimmt, scheint es, als füllten sich die Platten noch schnell, als man sie nachkaufen kann. Wahrscheinlich kommt dieses Problem auch von Zeit zu Zeit auf Sie zu. Zu wenig Speicherplatz auf der Platte ist aus verschiedenen Gründe unangenehm: Beispielsweise erstellt das Betriebssystem eine ganze Reihe temporärer Dateien, was dazu führen kann, dass ein Root-Dateisystem auf einer vollen oder fast vollen Partition die Performance des Rechners beeinträchtigt.
Bei Bedarf prüfen Sie den Speicherplatz mit dem Befehl df (“disk free”). Falls Sie keine Parameter setzen, gibt Df eine Tabelle zurück, in der das Programm den Speicherplatzverbrauch aller eingebundenen Dateisysteme darstellt, und zwar in KByte sowie als Prozentsatz der Gesamtgröße jedes Dateisystems. Geben Sie den Parameter -a an, bezieht Df virtuelle Dateisysteme wie /proc in die Auswertung mit ein (Abbildung 2).

-a zeigt es auch virtuelle Dateisysteme wie /proc an.” width=”300″ height=”114″ />
-a zeigt es auch virtuelle Dateisysteme wie /proc an. Einen Bericht für eine bestimmte Partition erhalten Sie, indem Sie diese als Argument verwenden, wie zum Beispiel df /dev/sda1. Übergeben Sie einen Dateinamen als Argument, so analysiert Df diejenige Partition, welche die angegebene Datei enthält. Außerdem kennt Df einige weitere nützliche Parameter:
- Mit
-ilistet es die Anzahl der belegten Inodes auf, statt jene der Blocks. - Mit
-lbeschränken Sie den Bericht auf lokale Dateisysteme. - Die Optionen
--type=Typund--exclude-type=Typermöglichen es, die Ausgabe auf einen bestimmten Dateisystem-Typ zu beschränken beziehungsweise einen solchen bei der Anzeige auszuschließen. - Der Parameter
-hliefert die Ergebnisse “human-readable” in KByte, MByte, GByte oder TByte.
Stellen Sie fest, dass auf einer Partition nur noch wenig freier Speicher verbleibt, bietet sich als Erstes eine Analyse des Platzverbrauchs mittels du an. Der Aufruf du /Verzeichnis liefert eine Liste des Ordners samt aller seiner Unterverzeichnisse inklusive des jeweiligen Speicherplatzverbrauchs in KByte. Fügen Sie den Parameter -a hinzu, listet Du zusätzlich zu den Verzeichnissen noch den Speicherplatz auf, den die Dateien verbrauchen, beides rekursiv. Geben Sie Du kein Verzeichnis als Argument mit, verwendet es das aktuelle Verzeichnis als Ausgangspunkt. Die Option -c gibt zusätzlich zu den Statistiken der einzelnen Dateien und Verzeichnissen noch eine Gesamtsumme an.
Andere Optionen dienen dazu, verirrte große Dateien ausfindig zu machen, wie zum Beispiel -L, das allen symbolischen Links folgt, oder -x, mit dessen Hilfe Sie die Suche auf das aktuelle Dateisystem einschränken. Über --max-depth=N begrenzen Sie die Anzahl der Rekursionen, mit denen das Programm in Unterverzeichnisse abtaucht – eine äußerst hilfreiche Option, wenn Sie es mit einer umfangreichen Dateisammlung zu tun haben. Wie bei Df liefert auch bei Du der Parameter -h die Ergebnisse als KByte, MByte, GByte oder TByte.
Tuning
Es gibt einige Tools, die die Möglichkeit bieten, die Leistung von Dateisystemen zu verbessern. So verändern Sie beispielsweise mit dem Programm tune2fs viele Einstellungen von Ext-Dateisystemen. Mit tune2fs -c N legen Sie beispielsweise die Anzahl der Mounts zwischen automatischen Integritätsüberprüfungen festlegen. Den maximalen zeitlichen Abstand zwischen Überprüfungen bestimmen Sie mit tune2fs -i Zeitraum. Dabei bezeichnen die Buchstaben d, m und w jeweils Tage, Monate und Wochen. Bei Bedarf fügen Sie mit dem Befehl tune2fs -j einem Ext3-Dateisystem ein Journal hinzu. Bei Bedarf passen Sie zudem die RAID-Parameter, Journal-Einstellungen und das Verhalten in Bezug auf die reservierten Blöcke an.
Sämtliche Tools zum Modifizieren der Größe von Dateisysteme beherrschen sowohl das Vergrößern als auch Verkleinern. Das Vergrößern eines Dateisystems setzt aber voraus, dass auf der darunter liegenden Festplattenpartition genügend Platz frei ist – schließlich können Sie das Dateisystem nicht über die Grenzen der Partition hinaus vergrößern.
Das Dateisystem XFS bringt eine eigene Palette an Tools mit, die viele der bereits genannten Optionen ebenfalls abdecken. Mit dem Befehl xfs_growfs bearbeiten Sie beispielsweise die Größe. Darüber hinaus gibt es einige weitere Aktionen, die das Programm beherrscht: Verwenden Sie die Option -m, modifizieren Sie mithilfe des Befehls xfs_growfs den Wert des Speicherplatzs, den das System für Inodes reserviert. Die Optionen -l und -L ermöglichen es, Änderungen am Journal vorzunehmen – beide Funktionen sind auch in den anderen Tools der anderen Dateisysteme enthalten. XFS stellt darüber hinaus ein Tool zum Defragmentieren namens xfs_fsr bereit – so etwas existiert für Ext-Dateisysteme nicht.
Darüber hinaus legen Sie bei Bedarf Sicherheitskopien und Dateisystem-Snapshots unter XFS an. Das Tool xfs_freeze friert das Dateisystem ein: Kein Programm darf Dateien lesen oder schreiben. xfsdump erstellt eine Sicherheitskopie eines Dateisystems (in Inode-Abfolge, was den Einsatz bei einem gemounteten Dateisystem ermöglicht). Mit xfsrestore spielen Sie eine vorher angefertigte Sicherheitskopie ein.
Fehlersuche
Linux überprüft jedes Dateisystem in regelmäßigen Abständen und beim Systemstart. Dabei sucht ein Testprogramm nach Unregelmäßigkeiten – zum Beispiel Inodes, die zu keiner Datei gehören, Abweichungen zwischen der Zahl der Inode-Referenzen und dem Inode-Referenzzähler oder Unterschieden zwischen der Zahl der verfügbaren Blöcke in einem Dateisystem und der erwarteten Anzahl, die im Superblock gespeichert ist.
Findet das Betriebssystem Diskrepanzen, interpretiert es dies als einen Hinweis darauf, dass ein Systemabsturz oder ein anderes Problem vorliegt. Das Tool, das die Prüfungen vornimmt, heißt fsck. Wenn Sie vermuten, dass etwas im Dateisystem nicht in Ordnung sein könnte, nutzen Sie folgenden Befehl, um die Prüfung manuell anzustoßen und alle nötigen Reparaturen zu erledigen:
# fsck Gerät
Geben Sie einfach nur fsck ein, ohne ein Ziel zu präzisieren, prüft das Programm alle Dateisysteme in /etc/fstab in der dort angegebenen Reihenfolge.
Die dateisystemspezifischen Programme zum Überprüfen auf Fehler – e2fsck bei Ext-Dateisystemen und fsck.vfat bei VFAT (Abbildung 3) – unterstützen größtenteils die selben Parameter, die Syntax weicht jedoch im Detail ab. Es ist daher äußerst wichtig, die Hinweise in der Dokumentation der Prüfprogramme zu beachten.

fsck unter Einsatz der Standardoptionen bei einem VFAT-Dateisystem. Die Option -v bewirkt die Ausgabe ausführlicher Meldungen.” width=”300″ height=”245″ />
fsck unter Einsatz der Standardoptionen bei einem VFAT-Dateisystem. Die Option -v bewirkt die Ausgabe ausführlicher Meldungen. Bei VFAT-Dateisystemen äußern sich Fehler in Form von anderen Symptomen – defekte Cluster und Verzeichniszeiger oder sogar defekte Dateinamen. Das Tool fsck.vfat entdeckt viele dieser Probleme und kann einige davon beseitigen. Wie die anderen Tools verfügt auch dieses Programm über einen nicht interaktiven Betriebsmodus, der den Einsatz in einem Skript ermöglicht. So kennzeichnen Sie bei Bedarf automatisch defekte Cluster, damit diese in Zukunft nicht mehr zum Einsatz kamen. Der Parameter -V bewirkt, dass fsck.vfat einen zweiten Prüflauf startet, nachdem das Tool versucht hat, aufgetretene Fehler zu beheben.
XFS verfügt über getrennte Werkzeuge zum Prüfen und zur Reparatur: xfs_check und xfs_repair. Wie bei den anderen Dateisystemen mit Journaling-Funktion gibt es eine Option, mit deren Hilfe Sie das das Journal auf einer anderen Partition abspeichern.
Zwei hilfreiche Funktionen, die nur bei XFS existieren, erreichen Sie über die Parameter -f sowie -s: Ersterer ermöglicht das Überprüfen eines Dateisystem-Images, das als normale Datei vorliegt, wie zum Beispiel eine Sicherheitskopie eines Dateisystems, die Sie mit xfsdump angelegt haben. Die Option -s bewirkt, dass das Programm nur schwerwiegende Fehler meldet. Das Tool xfs_repair schafft es in den meisten Fällen, Datenfehler zu korrigieren, wie sie auch e2fsck behebt.
Expertenmodus
Wollen Sie ein fehlerhaftes Dateisystem mit flexibleren Mitteln untersuchen, greifen Sie auf andere Programme zurück. Bei Problemen mit Ext2/3/4 gestattet es das Tool debugfs, das Dateisystem interaktiv zu untersuchen und Fehler zu beheben. Dabei haben Sie die Möglichkeit, Schritt für Schritt vorzugehen.
Dabei stehen Ihnen ähnliche Befehle wie in einer herkömmlichen Linux-Shell bereit, zum Beispiel cd, open, close, pwd, mkdir und sogar chroot. Seine wirkliche Stärke zeigt das Tool, wenn es darum geht, Superblöcke, Blöcke und Inodes direkt zu untersuchen, Zuordnungen herzustellen und wieder aufzuheben, Blöcke freizugeben und sogar Referenzen zu erstellen.





