Inode

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel behandelt den Inode in der Informatik; zur österreichischen Marke Inode für Breitband-Internet siehe UPC Austria.

Ein Inode (englisch index node, gesprochen „eye-node“)[1] ist die grundlegende Datenstruktur zur Verwaltung von Dateisystemen mit unixartigen Betriebssystemen. Jeder Inode wird innerhalb einer Partition eindeutig durch seine Inode-Nummer identifiziert und verweist auf genau eine Datei oder ein Verzeichnis. Umgekehrt entspricht auch jeder Datei- oder Verzeichnisname genau einem Inode, die Zuordnung ist also eineindeutig.

Auf der Programm-Ebene wird zwischen Gerätetreibern und der Eingabe von oder Ausgabe in eine Datei nicht mehr unterschieden. Durch das Inode-Konzept gilt bei den Unixvarianten alles als Datei („On UNIX systems it is reasonably safe to say that everything is a file: …“)[2] Dadurch unterscheiden sich diese Systemen von anderen wie NTFS bei Microsoft Windows, VMS oder MVS.

Aufbau[Bearbeiten]

Schon beim Erzeugen eines Dateisystems auf einer Partition wird durch den Superblock die maximale Anzahl der Inodes und die Größe der von diesen verwalteten Cluster festgelegt. Bevor das Dateisystem verwendet werden kann, findet durch das Betriebssystem (oder auch manuell) mit fsck(8) (file system check) eine Prüfung auf eventuelle Fehler statt. Beim Starten des Betriebssystem wird mindestens die root partition im Wurzelverzeichnis / (root directory) eingehängt. Für Programme und Anwender findet ab diesem Punkt jeder Dateizugriff über eine hierarchische Namensstruktur statt. Sehr viele unixähnliche System folgen inzwischen dem Filesystem Hierarchy Standard (FHS) bei der Benennung grundlegender Verzeichnisse. Die Zuordnung von Programmen wie /bin/ls oder auch Verzeichnissen wie /home/user/beispiel/ zu den entsprechenden Inodes findet durch das zum jeweiligen Dateisystem passende Kernel-Modul statt. Das Programm df(1) (display free disk space, Anzeige der Festplattenbelegung) kann auch Informationen über Inodes anzeigen.

Jedem einzelnen von einem Schrägstrich / (slash) begrenzten Namen ist genau ein Inode zugeordnet. Entsprechend speichert jeder Inode folgende Metainformationen zur Datei, aber nicht den eigentlichen Namen:

  • die numerische Kennung des Eigentümers (UID, user id) und der Gruppe (GID, group id);
  • die Zugriffsrechte für den Eigentümer (user), die Gruppe (group) und alle anderen (others);
Die klassische Benutzer- und Rechteverwaltung geschieht mit den Programmen chown(1) (change owner), chgrp(1) (change group) und chmod(1) (change mode). Durch Access Control Lists (ACL) wird eine feinere Rechtevergabe ermöglicht.
  • verschiedene Zeitpunkte der Datei: Erstellung, Zugriff (access time, atime) und letzte Änderung (modification time, mtime);
  • die Zeit letzten Status-Änderung des Inodes (status, ctime);
  • die Größe der Datei;
  • der Linkzähler auf diesen Inode: Mehrere, auch unterschiedliche, Dateinamen können auf denselben Inode verweisen. Erst mit dem Löschen des letzten Verweises (Zähler=0) gilt die Datei als tatsächlich gelöscht, und der Speicherplatz wird zum Überschreiben freigegeben.
  • einen oder mehrere Verweise auf die Cluster, in denen die eigentlichen Daten gespeichert sind.

Beim Anzeigen eines Verzeichnisses in Langform z. B. mit ls -l erscheint in der ersten Spalte ein entsprechender Kennbuchstabe.


Verzeichnisse[Bearbeiten]

Die Datenblöcke eines Verzeichnis-Inodes speichern die Zuordnung eines Namens zur Inodenuummer pärchenweise als flache Tabelle. Für jedes Verzeichnis existieren immer die Einträge . für das aktuelle und .. für das übergeordnete Verzeichnis.

Dateien[Bearbeiten]

  • reguläre Dateien
  • Harter Link
  • Symbolischer Link

Weitere Arten von Inodes[Bearbeiten]


Beispiel anhand des Dateisystems ext2[Bearbeiten]

Bei ext2 verweisen standardmäßig bis zu 12 Einträge im Inode auf je einen Cluster, in dem der Inhalt der Datei gespeichert ist. Reichen diese 12 Cluster nicht aus, zeigt ein Eintrag im Inode auf einen Cluster, der dann die Verweise zu den eigentlichen Datenclustern enthält. Ein solcher Verweis wird als einfach indirekter Block bezeichnet. Bis zu dreifach indirekte Blöcke sind möglich, so dass die maximale Dateigröße je nach Blockgröße zwischen 16 GiB und 4 TiB liegen kann.

Beispiel einer Inode-Struktur mit 12 KiB in direkt adressierten Datenblöcken und ungefähr 16 Millionen KiB + 65536 KiB + 256 KiB in indirekt adressierten Datenblöcken/Clustern mit jeweils einem KiB Größe: Die 256 Einträge in den Blöcken, auf die verwiesen wird, ergeben sich daraus, dass ein 1-KiB-Block genau 256 Adressen der Länge 4 Byte (32-Bit-Adressraum) enthalten kann.

Inode Struktur

Im Betriebssystem existiert eine Tabelle mit allen aktuellen Inodes. Ferner ist es möglich, Listen aller nichtbelegten Inodes zu erstellen.

Die Inode-Nummer einer Datei lässt sich mittels des Befehls ls -i Dateiname anzeigen.

Literatur[Bearbeiten]

Weblinks[Bearbeiten]

Anmerkungen[Bearbeiten]

  1.  Æleen Frisch: Essential System Administration. 1. Auflage. O’Reilly Verlag, 1995, ISBN 1-56592-127-5, S. 37.
  2.  Æleen Frisch: Essential System Administration. 1. Auflage. O’Reilly Verlag, 1995, ISBN 1-56592-127-5, S. 38.