Inodes gibt es in Unix-/[[Linux]]-Dateisystemen, um Dateien und Verzeichnisse zu verwalten. Sie sind ein zentrales Konzept, das beschreibt was eine Datei ist, unabhängig davon, wie sie heißt oder wo sie liegt. Es beinhaltet z.B * Dateigröße * Besitzer (UID, GID) * Rechte (rwx) * Zeitstempel (ctime, mtime, atime) * Link-Anzahl * Speicherort der Datenblöcke auf dem Datenträger Der Inhalt eines Verzeichnisses (die Datenblöcke, auf die sein Inode zeigt) besteht aus Directory Entries (Verzeichniseinträgen). =====Pfadauflösung===== Angenommen der Benutzer admin legt eine Datei in seinem Homeverzeichnis ab. /home/admin/test.txt Der Startpunkt ist immer das Root-Verzeichnis /.Das Root-Verzeichnis selbst hat einen fest definierten Inode (z. B. immer Inode 2 auf ext-basierten Dateisystemen). Der Kernel kennt den Inode von / bereits, weil er beim Mounten geladen wurde. Dieser Inode ist ein Verzeichnis-Inode -> er zeigt auf Datenblöcke, die sogenannte **Directory Entries** enthalten. Der Inhalt des Root-Verzeichnisses enthält Directory Entries wie: ^Name^Inode^ |.|2| |..|2| |home|128| |bin|543| |etc|900| |usr|2310| Hier findet der Kernel den Eintrag: home -> 128. Wir befinden uns also in /home. Dieser Inode zeigt wiederum auf Datenblöcke, die enthalten: ^Name^Inode^ |.|128| |..|2| |user|5012| Hier findet der Kernel: user -> 5012. Auch hier wieder das gleiche Prinzip. ^Name^Inode^ |test.txt|88001| Jetzt erst kennt das System die Metadaten der Datei test.txt und kann deren Datenblöcke lesen. Der Dateiname ist immer in einem DirectoryEntry gespeichert, nicht im Inode.