Was ist eine Inode? Funktion und Verwendung erklärt

Bei Inodes handelt es sich um eine Verwaltungsstruktur von Dateisystemen unixoider Betriebssysteme. Inodes stehen in diesem Zusammenhang für Datenköpfe in Inode-Listen oder ähnlichen Datenstrukturen, die Metadaten zu gespeicherten Dateien enthalten. Bei diesen Metadaten handelt es sich u. a. um Informationen wie Zugriffsrechte, Speicherort, Gruppe, Benutzernummer oder Zeitpunkte von Änderungen und Zugriffen.

Was ist eine Inode?

Inode steht für „index node“. Dabei handelt es sich um eine Form der Dateiverwaltung, die seit Einführung des Unix-Betriebssystems und darauf basierender Systeme wie Linux oder macOS eine wichtige Rolle spielt. Die Hauptfunktion von Inodes für Dateisysteme besteht im Referenzieren, Verwalten und Ausfindigmachen bestimmter Dateien im System durch eindeutige und unverwechselbare Inode-Nummern. Als definierte Datenstrukturen beschreiben und verwalten Inodes spezifische Dateien anhand von Metadaten. Um welche Metadaten es sich dabei handelt, hängt vom jeweiligen Dateisystem ab.

Obwohl sie keine Informationen zum Dateinamen selbst enthalten, umfassen Inodes in der Regel folgende Informationen zu Dateien und Dateiblöcken :

  • Typ und Zugriffsrechte
  • Anzahl der Hardlinks
  • Benutzernummer (UID)
  • Gruppennummer (GID) oder GUI (GruppenID)
  • Größe der Datei in Bytes
  • Datum der letzten Veränderung (mtime)
  • Datum der letzten Statusänderung (ctime)
  • Datum des letzten Zugriffs (atime)
  • Adresse von Datenblöcken
  • Adresse des Indirektionsblocks
  • Anzahl der Links
  • Versionsnummer

Wie funktionieren Inodes?

Unix-Systeme verwalten die Sektoren von Festplattenpartitionen nicht durch Clustering, sondern in Form von Datenblöcken. Hierbei werden im Gegensatz zu DOS-Systemen statt FAT-Tabellen Inodes zum Verwalten und Referenzieren der Verzeichnisdaten angelegt. Werden Daten auf der Festplatte in festen Datenblöcken gespeichert, kann es schnell vorkommen, dass eine Datei die Speichergröße des Blocks überschreitet. Das System findet dann einen weiteren verfügbaren Block, um den Rest der Datei zu speichern. Genau hier kommen Inodes ins Spiel.

Inodes sorgen dafür, dass sich im System gespeicherte Daten anhand von Referenz- und Verzeichnisdaten und ihren Inodes samt einzigartiger Inode-Nummer finden lassen. Ein großer Vorteil ist hierbei, dass sie nicht vom Dateinamen abhängen. Wird eine Datei kopiert und umbenannt, lässt sich diese problemlos über dieselbe Inode-Nummer finden wie die Originaldatei. Das ist bei Hardlinks der Fall, die Nutzerinnen und Nutzer mit dem Linux-ln-Befehl erstellen. Diese Form der internen Buchführung bietet den Vorteil, dass Inodes sowohl auf Originaldateien als auch zugehörige Backups verweisen, ohne zusätzlichen Speicher zu belegen.

Da Inodes je nach System fest angelegt werden, kann es dazu kommen, dass eine Datei die Größe der verfügbaren Inodes überschreitet. In diesem Fall verweist die Original-Inode auf eine weitere Inode, auch Indirektionsblock genannt, die den Rest der Metadaten enthält.

Hinweis

Da Sie den Umfang der Inodes je nach System von Anfang an festlegen, können die verfügbaren Inodes für eine große Zahl an Dateien unter Umständen nicht reichen. In diesem Fall muss das Dateisystem mit einer größeren Anzahl an Inodes neu strukturiert werden.

Wo kommen Inodes zum Einsatz?

Inodes dienen zum Verwalten und Strukturieren von Dateisystemen und finden sowohl in privaten Linux-Systemen als auch in Managend-Service-Lösungen Anwendung. Nutzerinnen und Nutzer sowie Unternehmen, die Cloud-Lösungen für Server mit unixoiden Betriebssystemen suchen, können somit auf Inodes-Datenstrukturen zurückgreifen. Dabei kann es sich wie bei den meisten Cloud-Diensten je nach individuellem Bedarf um eine Public Cloud oder um eine Private Cloud handeln.

Welche Dateisysteme unterstützen Inodes?

Alle unixartigen Betriebssysteme wie Linux oder macOS verwenden Inodes. Je nach unterstütztem Dateisystem kann sich die Struktur und der Aufbau von Inodes jedoch unterscheiden. So kommen sie in ext2/ext3/ext4-Systemen in Form von Inode-Listen bzw. -Tabellen als beschreibende Datenköpfe zum Einsatz. Die Inode-Liste wird hier bereits beim Anlegen des Systems eindeutig erstellt und lässt sich nachträglich nicht ändern. Zudem belegen ext4-Inodes mit 256 Bytes festen Speicherplatz, der sich nicht mehr anderweitig nutzen lässt. Eine Inode beschreibt in diesen Datensystemen jeweils eine Datei bzw. ein Verzeichnis im System anhand der zugehörigen Metadaten.

Dem gegenüber stehen komplexere Dateisysteme wie xfs oder btrfs , in denen Inodes erst erzeugt werden, wenn sie zum Ausfindigmachen von Dateien benötigt werden. In diesem Fall kommen keine Listen oder Tabellen mit Inodes zum Einsatz. Weitere Unterschiede in der Funktionsweise finden sich zudem bei Inodes auf Festplatten (Disk Inode) und Inodes, die zur Bearbeitung des Linux-Speichers dienen (In-Core-Inode).

Wichtige Inode-Befehle im Überblick

Da es für die verfügbaren Inodes je nach Dateisystem ein Limit gibt, sollten Sie wissen, wie sich die belegten Inodes bzw. die von Inodes belegten Stellen im System anzeigen lassen. Das ist etwa dann erforderlich, wenn nicht mehr genug Inodes für weitere Dateien zur Verfügung stehen.

Befehl zum Anzeigen belegter Stellen im Dateisystem

Möchten Sie sich anzeigen lassen, welche Stellen von Inodes im Dateisystem belegt werden, nutzen Sie diesen Befehl:


~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20

Befehl zur Übersicht der aktuellen Inode-Belegung

Um sich alle aktuell belegten Inodes im System anzeigen zu lassen, verwenden Sie:


df -ih

Eine Übersicht zur Inode-Nutzung inklusive zugehörigem Dateisystem, der Gesamtzahl an Inodes, der aktuellen Belegung und den nicht belegten Inodes bietet der Befehl:


df -i

Befehl zur Anzeige spezifischer Inodes-Nummer

Um sich die spezifische Inodes-Nummer einer Datei anzeigen zu lassen, verwenden Sie diesen Befehl:


ls -i

Befehl zur Anzeige aller Dateien eines Inodes

Möchten Sie wissen, welche Dateien (inklusive Originaldateien, Dateikopien oder Backups) ein Inode referenziert, nutzen Sie:


-inum

Tipps bei hoher Auslastung der Inodes

Nicht immer bedeutet eine hohe Auslastung von Inodes, dass sich Ihre Speicherkapazitäten dem Ende zuneigen. Oft lässt sich eine erhöhte Inodes-Nutzung auch auf überflüssige kleine Daten wie temporäre TMP-Dateien, Caches oder Sessions zurückführen. Das Problem lässt sich meist lösen, indem Sie alle Dateien, die älter als 14 Tage sind, automatisch löschen. Dazu führen Sie einen Cronjob mit folgendem Befehl aus:


03 \*\*\* /usr/bin/find /path/to/files/\* -type f – mtime +14 -delete \> /dev/null 2\>&1

Was passiert bei zu wenig Inodes?

Sollten nicht mehr genügend Inodes für weitere Dateien zur Verfügung stehen, kann sich das unter Umständen durch folgende Effekte bemerkbar machen:

  • Anwendungen stürzen ab
  • Daten gehen verloren
  • Ungeplanter Neustart
  • Prozesse stürzen ab und starten nicht neu
  • Geplante Prozesse starten nicht automatisch

Sollte die Inode-Kapazität tatsächlich bei 100 Prozent liegen, empfiehlt es sich, belegten Speicher freizugeben. Alternativ können Sie in einem relativ aufwendigen Prozess das Dateisystem neustrukturieren und so die Höchstzahl der Inodes erweitern.