Inodes
100%

Das Dateisystem · Lektion 11

Inodes

Lerne, wie Inode-Nummern Verzeichnisnamen mit Metadaten und Daten von Dateisystemobjekten verbinden.

In Inode-basierten Unix-Dateisystemen ordnet ein Verzeichnis jeden Eintragsnamen einer Inode-Nummer zu. Der Inode stellt das Dateisystemobjekt dar und zeichnet Metadaten auf, die zum Auffinden und Interpretieren seiner Daten nötig sind. Der Pfadname ist daher nicht als primäre Identität des Objekts selbst gespeichert.

Mit einem Inode gespeicherte Metadaten

Zu den häufig mit einem Inode verbundenen Metadaten gehören:

  • Objekttyp und Berechtigungsmodus
  • Benutzer- und Gruppeneigentümerschaft
  • logische Größe und Buchhaltung zugewiesener Blöcke
  • Anzahl der Hardlinks
  • Zeitstempel für Zugriff, Änderung und Statusänderung
  • Verweise auf Dateidaten oder dateisystemspezifische Extent-Strukturen

Der Inode speichert normalerweise nicht den Namen des Verzeichniseintrags. Ein Dateisystem kann außerdem erweiterte Attribute, Zugriffskontrolllisten, Geburtszeit, Inline-Daten oder weitere Informationen in formatspezifischen Strukturen speichern.

ctime ist der Zeitpunkt der Inode-Statusänderung und nicht zwangsläufig die Erstellungszeit der Datei. Ein getrennter Geburts- oder Erstellungszeitstempel ist optional und möglicherweise nicht verfügbar.

Wo ist die Pfadnamenkomponente einer gewöhnlichen Datei normalerweise mit ihrer Inode-Nummer verknüpft?

Inode-Nummern und Dateisystemumfang

Zeige Inode-Nummern an:

$ ls -li

Das erste Feld ist die Inode-Nummer. Untersuche ein Objekt ausführlicher:

$ stat path

Eine Inode-Nummer ist nur innerhalb eines Dateisystems zu einem bestimmten Zeitpunkt eindeutig. Dieselbe Nummer kann in einem anderen Dateisystem vorkommen und nach der Freigabe eines Inodes erneut verwendet werden. Identifiziere ein Objekt zuverlässig durch Dateisystemidentität und Inode-Nummer gemeinsam, nicht allein anhand der Inode-Nummer.

In welchem Umfang ist eine Inode-Nummer eine Objektkennung?

Hardlinks und offene Referenzen

Mehrere Verzeichniseinträge können auf denselben Inode verweisen; dies sind Hardlinks. Das Erstellen eines weiteren Hardlinks erhöht die Linkanzahl des Objekts. Wird ein Name entfernt, sinkt die Anzahl, ohne die Daten zu löschen, solange ein anderer Link vorhanden ist.

Auch nach dem Entfernen des letzten Verzeichniseintrags bleibt eine geöffnete Datei zugewiesen, bis die letzte Prozessreferenz geschlossen wird. Ihre Linkanzahl kann null sein, während ein Dateideskriptor weiterhin darauf zugreift. Das erklärt, warum das Löschen eines großen geöffneten Protokolls die von df gemeldete Belegung nicht sofort verringern muss.

Wann werden die Ressourcen einer nicht mehr verlinkten Datei normalerweise freigegeben?

Inode-Kapazität

In Dateisystemen mit einem endlichen oder gemeldeten Inode-Pool können Millionen kleiner Dateien die Metadatenkapazität erschöpfen, bevor die Datenblöcke voll sind. Untersuche die Inode-Buchhaltung eingehängter Dateisysteme:

$ df -i

Sind keine freien Inodes vorhanden, kann das Erstellen einer weiteren Datei fehlschlagen, obwohl df -h freie Blöcke meldet. Zuweisungsstrategien unterscheiden sich: Manche Dateisysteme reservieren Inode-Strukturen bei ihrer Erstellung, andere verwalten Metadaten dynamisch und können Inode-Kapazität anders melden.

Was meldet df -i, wenn das Dateisystem eine Inode-Buchhaltung bereitstellt?

Dateisystemspezifische Datenzuordnung

Gehe nicht davon aus, dass jeder Inode genau zwölf direkte sowie drei indirekte Zeiger besitzt. Das beschreibt einige klassische Dateisystemstrukturen sinnvoll, doch modernes ext4 kann Extents verwenden, während XFS, Btrfs und andere Dateisysteme andere Strukturen einsetzen. Inline-Daten und komprimierte oder Copy-on-Write-Extents verändern die Beziehung zusätzlich.

Verwende dateisystemspezifische Diagnosewerkzeuge nur in schreibgeschützten oder dokumentierten Modi, wenn die interne Zuordnung wichtig ist. Für die gewöhnliche Administration bieten stat, find -inum, df -i und linkbewusste Werkzeuge sicherere Abstraktionen.

Warum solltest du nicht für jeden Inode eine feste Zeigerstruktur voraussetzen?

Lektion abgeschlossen

Sie haben Inodes abgeschlossen

Du kannst Pfadnamen, Inodes, Links und Dateisystemkapazität nun miteinander in Beziehung setzen.

  • Behandle Verzeichniseinträge als Zuordnungen von Namen zu Inode-Nummern.

  • Lies Metadaten und Zeitstempel, ohne ctime mit der Erstellung zu verwechseln.

  • Begrenze Inode-Nummern auf ein Dateisystem und einen Zeitpunkt.

  • Berücksichtige sowohl Hardlinks als auch offene Dateideskriptoren.

  • Verwende dateisystemspezifische Modelle statt einer universellen Zeigerstruktur.

Lernfortschritt speichern

Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.

Kostenloses Konto erstellen
Nächste Lektion
Zurück zu Das Dateisystem