I-Nodes und Superblöcke
Festplatten und Dateisysteme
Dateisystem erzeugen
Für das Erzeugen von Dateisystemen stehen unter Linux mkfs-Programme zur Verfügung. Um ein einheitliches Namensschema zu bieten, wird der Name des jeweiligen Programms aus dem Präfix mkfs. und dem zu erzeugenden Dateisystem gebildet, beispielsweise mkfs.ext3 für das Ext3-Dateisystem.
Auf einem Linux-Rechner wird meistens das "Third Extended Filesystem" (Ext3) oder das Reiser-Dateisystem (ReiserFS) verwendet. Über verschiedene Parameter lässt sich einstellen, wie das jeweilige Programm das Dateisytem erzeugen soll. Dies betrifft insbesondere die Anzahl der I-Nodes, die die maximale Anzahl von erzeugbaren Dateien und Verzeichnissen auf diesem Dateisystem bestimmt.
Der Parameter -b legt die Größe der Blöcke im Dateisystem fest. Ohne besondere Einstellungen werden 1024 Byte große Datenblöcke verwendet. (Der Wert kann auf neueren Systemen abweichen.) Es werden also jeweils zwei physikalische Blöcke auf der Festplatte zu einem logischen Datenblock zusammengefasst. Mit dem Parameter -b kann diese Einstellung jedoch geändert werden. Allerdings dürfen nur Vielfache von 1024 angegeben werden, und zwar nur 1024, 2048 und 4096.
Auf Dateisytemen mit vielen großen Dateien kann eine größere Blockgröße sinnvoll sein. Zugriffe können somit beschleunigt werden. Allerdings ist der Verschnitt auch größer, denn es können immer nur ganze Blöcke pro Datei zugewiesen werden. Eine 5000 Byte große Datei würde somit in unserem Beispiel 3192 Bytes im zweiten logischen Block verschwenden.
Eine weitere interessante Option beschreibt den für root reservierten Bereich. Normalerweise sind fünf Prozent des Dateisystems für den Superuser reserviert. Dies stellt sicher, dass das System auch dann weiterläuft, wenn das Dateisystem fast voll ist. Unter root ausgeführte Programme können dann weiterhin auf das Dateisystem schreiben.
Diese Einstellung wird mit -m überschrieben. Auf Dateisystemen, die nur für Benutzerdaten und nicht für Systemdaten gedacht sind, wie z. B. /home oder /var/spool/news, kann es sinnvoll sein, auf diesen Sicherheitsbereich vollständig zu verzichten.
Der Parameter -i bestimmt, in welchem Verhältnis zu den Nutzdaten I-Nodes erzeugt werden sollen. Wenn auf dem Dateisystem hauptsächlich große Dateien erzeugt werden, ergibt es wenig Sinn, für je 4 KB einen I-Node vorzusehen. Da wären 10 KB oder gar 100 KB pro I-Node vielleicht sinnvoller.
Anders herum ist es nicht sinnvoll, auf einem Dateisystem mit sehr vielen kleinen Dateien (beispielsweise News-Artikel) erst alle 4 Kilobyte einen I-Node vorzusehen. Dort kann für jeweils 2048 Bytes ein I-Node erzeugt werden. Im laufenden Betrieb lässt sich die Anzahl der I-Nodes nicht mehr ändern.
Erzeugt man ein Dateisystem mit Journal, also Ext3 statt Ext2, wird der Parameter -j verwendet, um dies festzulegen. Da die Dateistyseme Ext2 und Ext3 zueinander kompatibel sind, kann ein Ext2-Dateisystem auch nachträglich in ein Ext3-Dateisytem mit Journal umgewandelt werden. Das erledigt der Befehl tune2fs.
Dateisystem untersuchen
Normalerweise erhält man keinen Einblick in das Dateisytem und wie es funktioniert. Unter Linux besteht jedoch die Möglichkeit, zumindest einen Blick in die aktuelle Konfiguration des Dateisystems zu werfen, auch im laufenden Betrieb. Für diese Funktion steht das Programm dumpe2fs zur Verfügung. Dabei werden hauptsächlich die im Superblock gespeicherten Informationen angezeigt. Bei einem funktionierenden Superblock wird auch die Position der Kopie des Superblocks angezeigt.
Wie aus der Ausgabe von dumpe2fs eines aktuellen Dateisystems erkennbar ist, wird, die Kopie des Superblocks nicht im Block 8193, sondern in Block 32768 gespeichert. Das liegt an unterschiedlichen Einstellungen des Dateisystems.



