Bei der Betrachtung von Dateisystemen denken die Meisten an Ordner und Dateien. Dahinter stehen jedoch die sogenannten Inodes, die für die Funktionsweise dieser Strukturen verantwortlich sind. Diese „Indexknoten“ werden von UNIX- und Linux -Dateisystemen verwendet um gewisse Informationen zur Datei getrennt vom Inhalt zu speichern.
Was sind Inodes?
Ein Inode ist ein Datenblock innerhalb eines Dateisystems, der wichtige Informationen über eine Datei oder ein Verzeichnis enthält. Dabei handelt es sich nicht um die eigentlichen Daten der Datei, sondern um Metadaten, die beschreiben, wie und wo die Datei gespeichert ist.
Ein Inode enthält unter anderem folgende Informationen:
- Dateigröße: Die Gesamtgröße einer Datei wird in Bytes angegeben.
- Zeitstempel (Erstellung, letzte Änderung, letzter Zugriff)
- Zugriffsrechte
- Besitzer (Benutzer -ID (UID) und Gruppen -ID (GID))
- Anzahl der Links (Verweise auf die Datei)
- Speicherorte der Datenblöcke
Jede Datei und jedes Verzeichnis wird durch einen Inode repräsentiert.
Funktionsweise einer Inode
Für eine groben Vergleich dient die einer Bibliothek: Jede Datei ist ein Buch, und der Inode ist der Bibliothekskatalog, der beschreibt, wo sich das Buch befindet, wie viele Seiten es hat und wer es ausgeliehen hat. Öffnet ein Nutzer eine Datei, greift das Betriebssystem zunächst auf den Inode zu, um die nötigen Informationen für den Zugriff auf die Daten zu erhalten.
Wenn eine Datei erstellt wird, wird ein neuer Inode generiert und im Dateisystem gespeichert. Der Inode-Nummer wird automatisch eine Referenz zugeordnet, die im Verzeichnis gespeichert wird.
Diese Vorteile bieten Inodes
Daten werden auf einem Linux-Dateisystem in zwei Formaten gespeichert: Speicherblöcke und Inodes. Diese Trennung von Metadaten von den tatsächlichen Dateidaten bringt eine Vielzahl an Vorteilen mit sich, die ein effizienteres Dateisystem ermöglichen:
Eindeutige Datenidentifikation
Die Dateiidentifikation erfolgt schnell und eindeutig. So können auch mehrere Dateien den selben Namen haben, solang sie in verschiedenen Verzeichnissen liegen.
Hierarchische Verzeichnisstruktur
Inodes ermöglichen eine hierarchische Verzeichnisstruktur. Verzeichnisse sind Dateien, die eine Liste von Dateinamen und ihre entsprechenden Inode-Nummern enthalten. Diese Liste ermöglicht die Organisation von Dateien in eine strukturierte Hierarchie.
Inodes und Speicherbeschränkungen
Die Anzahl der Inodes eines Dateisystems ist begrenzt - so auch die Anzahl der Dateien, die dort gespeichert werden können. Bei der Formatierung eines Dateisystems wird die Anzahl von Inodes festgelegt. Dies kann nicht ohne weiteres verändert werden. Es ist also möglich, dass auf einem Laufwerk kein Speicherplatz mehr verfügbar ist, obwohl der physische Speicher nicht ganz ausgereizt ist. Das ist der Fall, wenn alle Inodes belegt sind. Auf Servern kann dies beispielsweise durch ganz viele kleine Cache-Dateien verursacht werden.
Befehle für die Überwachung der Inodes
ls -i
Zeigt die Inode-Nummer einer Datei an.
df -i
Zeigt die Anzahl der verwendeten und freien Inodes im Dateisystem an.
du - -inodes
Zeigt die Anzahl der von jedem Verzeichnis und dessen Unterverzeichnis verwendeten Inodes.
Fazit
Inodes sind ein wesentlicher Bestandteil moderner Dateisysteme. Sie gewährleisten eine organisierte, sichere und effiziente Speicherung von Dateien und Verzeichnissen. Obwohl sie für die meisten Benutzer unsichtbar bleiben, spielen sie eine entscheidende Rolle im Hintergrund. Das Verständnis der Funktionsweise von Inodes ist daher von entscheidender Bedeutung, um die Arbeit von Dateisystemen nachvollziehen und Probleme wie inode-basierte Speicherengpässe identifizieren und lösen zu können.