Wie funktionieren Linux-Inodes?

Bg1 Resize

Wenn Sie Linux lange genug verwendet haben, haben Sie den Begriff “Inodes” schon einmal gesehen. Es ist etwas, das gelegentlich auftaucht, aber nicht beeinflusst, was Sie tun. Hier erklären wir, was Inodes sind und wie sie funktionieren.

Was sind Inodes?

In einer Bibliothek sind alle Bücher nach Genre, Autorennamen oder Altersgruppe organisiert. Wenn Sie einen Thriller von “Bobby Daniels” finden möchten, würden Sie direkt zur Thriller-Abteilung gehen und beginnen, Autorennamen zu suchen, die mit “B” beginnen. Genau wie in einer Bibliothek sind alle Dateien in einem Linux-System organisiert, um eine effiziente Abfrage und Nutzung zu ermöglichen. Ein Inode ist eine Entität, die bei der Anordnung von Dateien innerhalb eines Linux-Systems hilft.

Was ist Dateimetadaten?

Angenommen, wir haben eine Datei namens “sample.txt”, die die Daten “hello” enthält.

Diese Datei hat einige Daten und Informationen, die für sie relevant sind, wie Dateigröße, Berechtigungen, Benutzer- und Gruppenbesitz, Erstellungs-/Zugriffs-/Änderungszeitstempel, Linkanzahl usw. All diese Informationen werden zusammenfassend als Dateimetadaten bezeichnet.

was ist Inode - Dateimetadaten

Was sind Dateisysteme?

Auf einem Speichermedium wie einer Festplatte wird eine Partition als Dateisystem formatiert, bevor sie zur Dateispeicherung verwendet wird. Ein Dateisystem ist der Bibliothekar für die Festplatte. Formell ist es eine Menge von Datenstrukturen und Algorithmen, die zusammenarbeiten, um Dateien systematisch auf der Partition zu speichern.

Partitionen auf Linux-Systemen sind häufig mit EXT4 formatiert. Andere Dateisysteme wie B-Tree-Dateisystem (BTRFS), Reiser-Dateisystem, ZFS usw. sind ebenfalls verfügbar.

Alles zusammenführen

Ein Inode ist eine Datenstruktur auf Ext4, die alle Metadaten für eine Datei enthält.

Inode im Detail

Natürlich gibt es zahlreiche Dateien in einem Dateisystem. Wie Sie sich denken können, hat jede Datei ihren eigenen Inode. Um die Inodes eindeutig zu identifizieren, ist jeder Inode nummeriert.

Wie sieht die Inode-Nummerierung aus?

Inode-Nummern in einem Dateisystem beginnen bei 1. Die ersten zehn Inodes sind für Systemzwecke reserviert. Benutzerdateien haben ihre Metadaten ab Inode 11 gespeichert. Alle Inodes sind ordentlich in einer Inode-Tabelle gestapelt.

Ein Eintrag in der Inode-Tabelle wäre 256 Bytes groß. Für eine Datei organisiert Linux intelligent alle Metadaten innerhalb von 256 Bytes! Darüber hinaus würde ein Inode für eine Datei auch Informationen darüber enthalten, wo sich die Daten der Datei im Dateisystem befinden. Denken Sie daran – nur die Metadaten der Datei werden im Inode gespeichert.

Die Gesamtzahl der Inodes in einem Dateisystem hängt vom verfügbaren Speicherplatz und der Anzahl der Dateien ab, die auf der Partition gespeichert werden können.

Wie werden Inodes zugewiesen und freigegeben?

Wenn der Benutzer Dateien zu einem frisch formatierten Dateisystem hinzufügt, werden Inodes ab 11 zugewiesen, um die Dateimetadaten zu halten.

Es gibt eine andere Datenstruktur namens “Inode Bitmap”, um den Zuweisungsstatus eines Inodes zu verfolgen. Es ist eine Sammlung von Bits, die als Karte fungiert.

Lassen Sie uns acht Bits im Inode-Bitmap betrachten, um den Zuweisungsstatus der Inodes 11 bis 18 darzustellen, wie in der Tabelle unten gezeigt. Ein Wert von 1 im Bitmap bedeutet, dass der Inode zugewiesen ist, d.h. verwendet wird, um die Metadaten für eine Datei zu halten. Ein Wert von 0 im Bitmap bedeutet, dass der Inode derzeit nicht verwendet wird. Hier sehen wir, dass Inode 17 in Verwendung ist.

Inode-Bitmap

Falls die Datei, deren Metadaten im Inode 17 gespeichert sind, gelöscht wird, würde der entsprechende Bitmap-Status auf 0 wechseln, was anzeigt, dass er von einer anderen Datei verwendet werden kann.

Inode-Bitmap-Tabelle

Wie sieht die Inode-Nummer für eine Datei aus?

Es gibt zwei Möglichkeiten, dies zu tun.

Die erste ist die Verwendung des ls-Befehls mit dem -i-Schalter, gefolgt vom Namen einer Datei. Das erste Feld in der Ausgabe ist die Inode-Nummer, die die Metadaten von “sample.txt” enthält.

Die gleichen Informationen können mit dem stat-Befehl gefolgt vom Dateinamen abgerufen werden.

Inode 8

Um die Gesamtzahl der für eine Partition verfügbaren Inodes anzuzeigen, kann der df-Befehl mit dem -i-Schalter verwendet werden.

In der Partition “/dev/sda4” sind 404754480 Inodes verfügbar, von denen nur 359044 Inodes verwendet werden.

Fazit

Von Natur aus stapelt die Inode-Tabelle die Metadaten aller Dateien sorgfältig in Inodes, zusammen mit Informationen über den Speicherort der Dateidaten. Alles, was wir über Linux-Inodes besprochen haben, ist nur die Spitze des Eisbergs. Für weitere Informationen über die inneren Abläufe können Sie sich diesen Link ansehen.