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.
Das Dateisystem · Lektion 11
Inodes
Lerne, wie Inode-Nummern Verzeichnisnamen mit Metadaten und Daten von Dateisystemobjekten verbinden.
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?
Nutze das Lab Dateien und Verzeichnisse unter Linux verwalten, um Inode-Nummern und Linkanzahlen an entbehrlichen Dateien zu vergleichen.
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