Inode
Ein Inode (auch I-Node, Kurzwort von englisch index node) ist ein Eintrag in einem Unix-Dateisystem, der Metadaten einer Datei enthält. In den meisten Unix-Betriebssystemen werden Dateien nur über ihre Inodes verwaltet.
Jeder Inode ist durch eine eindeutige Inode-Nummer gekennzeichnet und verweist auf genau eine Datei. Umgekehrt gehört zu jeder Datei auch ein einziger Inode, der Attribute der betreffenden Datei enthält, die Zuordnung ist daher eineindeutig. Namen und Inhalt werden unabhängig abgelegt: Dateinamen verweisen auf den Inode, dieser verweist auf den Speicherplatz des Datei-Inhalts, ausgenommen für sehr kleine Dateien (bis zu etwa hundert Bytes): Deren Inhalt wird von den meisten heutigen Dateisystem-Implementierungen direkt im Inode abgespeichert.
Unter Windows erfüllen im Dateisystem NTFS sogenannte File Records eine ähnliche Funktion wie Inodes.
Inhaltsverzeichnis |
Im Inode gespeicherte Informationen [Bearbeiten]
Ein Inode enthält
- die Zugriffsrechte auf die Datei (Eigentümer-, Gruppen- und sonstige Rechte)
- den Eigentümer der Datei und die bevorrechtigte Gruppe (UID, GID)
- den Dateityp (einfache Datei, Verzeichnis, Link, …)
- die Größe der Datei (in Bytes)
- einen Referenzzähler (Anzahl der Verweise auf die Datei)
- das Datum der letzten Inode-Änderung (change time, ctime), des letzten Zugriffs auf die Datei (letzte Dateiöffnung/-ausführung, access time, atime) und der letzten Änderung der Datei (modification time, mtime)
- einen oder mehrere Verweise auf die Cluster (Blöcke), in denen der Inhalt der Datei liegt.
Ein Dateiname (samt Pfad) verweist stets eindeutig auf einen Inode, ist aber nicht in diesem gespeichert. Die Speicherung des Dateinamens wiederum findet in speziellen Verzeichnisdateien des Systems statt. Diese enthalten Verweise auf die Inodes in Form einer Tabelle, welche den Dateinamen und die dazugehörigen Inode-Nummer enthält. Der Inode selbst speichert lediglich die Anzahl der Verweise. Mehrere, auch unterschiedliche, Dateinamen können auf denselben Inode verweisen (Hardlinks; das Maximum derart möglicher Verweise kann systemabhängig durch das Format des Zählers beschränkt sein). Erst mit dem Löschen des letzten Verweises (Zähler=0) wird die Datei logisch gelöscht, also der Speicherplatz zum Überschreiben freigegeben.
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.
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.