Warum haben die Verzeichnisse / home, / usr, / var usw. alle dieselbe Inode-Nummer (2)?

31

Ich finde, dass es unter meinem Stammverzeichnis einige Verzeichnisse gibt, die dieselbe Inode-Nummer haben:

$ ls -aid */ .*/

2 home/ 2 tmp/ 2 usr/ 2 var/ 2 ./ 2 ../ 1 sys/ 1 proc/

Ich weiß nur, dass die Namen der Verzeichnisse im übergeordneten Verzeichnis und ihre Daten im Inode der Verzeichnisse selbst gespeichert sind.

Ich bin hier verwirrt.

Dies ist, was ich denke, wenn ich den Pfadnamen / home / user1 verfolge.

  • Zuerst komme ich zu Inode 2, dem Stammverzeichnis, in dem sich die Verzeichnislisten befinden.
  • Dann finde ich den Namen home gepaart mit inode 2.
  • Also gehe ich zurück auf die Festplatte, um Inode 2 zu finden?
  • Und ich bekomme den Namen user1 hier?
youxiao
quelle
2
Siehe auch: grymoire.com/Unix/Inodes.html
Richard Neumann

Antworten:

39

Sie sind auf verschiedenen Geräten.

Wenn wir uns die Ausgabe von ansehen stat, können wir auch das Gerät sehen, auf dem sich die Datei befindet:

# stat / | grep Inode
Device: 801h/2049d      Inode: 2           Links: 24
# stat /opt | grep Inode
Device: 803h/2051d      Inode: 2           Links: 5

Diese beiden befinden sich also auf separaten Geräten / Dateisystemen. Inode-Nummern sind nur innerhalb eines Dateisystems eindeutig, daher gibt es hier nichts Ungewöhnliches. Inode 2 ist auf ext2 / 3/4 auch immer das Stammverzeichnis , sodass wir wissen, dass es sich um die Stammverzeichnisse der jeweiligen Dateisysteme handelt.

Die Kombination von Gerätenummer + Inode ist wahrscheinlich systemweit eindeutig. (Es gibt Dateisysteme, die keine Inodes im herkömmlichen Sinne haben, aber ich denke, sie müssen trotzdem eine Art eindeutigen Bezeichner an ihrer Stelle vortäuschen.)

Die Gerätenummern dort scheinen mit denen auf den Geräteknoten übereinzustimmen, daher /dev/sda1enthält das Dateisystem Folgendes /:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1
ilkkachu
quelle
Danke, jetzt bekomme ich stat, nützlich für mich, ich werde lernen, es zu benutzen.
Youxiao
1
Für den Datensatz haben alle Dateisysteme ein Äquivalent, auch wenn sie Inodes dynamisch zuweisen. Bei BTRFS (das im Gegensatz zu den statischen Inode-Tabellen von ext2 / 3/4 eine dynamische Inode-Zuweisung durchführt) wird beispielsweise ein Inode-Wert von 256 verwendet (weil alles Niedrigere für spezielle Einträge in den Metadatenbäumen reserviert ist). .
Austin Hemmelgarn
1
@AustinHemmelgarn, einige Dateisysteme wie FAT oder ISO9660 haben keine Inodes im eigentlichen Sinne. Der Dateisystemtreiber tut etwas Handarbeit, damit es für den Rest des Systems so aussieht, wie sie es tun.
Mark
@Mark: Der einzige "sinnvolle Sinn des Wortes" gemäß dem Standard, der dies definiert, ist die "Dateiseriennummer [innerhalb des Geräts eindeutig]". Das Beharren darauf, Inodes als eine bestimmte Datenstruktur auf der Festplatte zu betrachten, ist ungefähr so ​​rückständig wie das Denken an Tytys als mechanische Teletypen.
R ..
1
@R .., ich nehme an, dass das FAT-Dateisystem nach dieser Definition Inodes hat, aber die "Dateiseriennummer" für eine bestimmte Datei in einem FAT-Dateisystem ist nicht über die Mounts hinweg oder sogar über die Zeit auf einem einzelnen Mount stabil: wenn Speicherdruck besteht Wenn eine synthetisierte Inode-Struktur aus dem Cache entfernt wird, erhält die Datei beim nächsten Anfordern der Inode-Daten eine neue Nummer.
Mark
24

Die Inode-Nummer einer Datei ist für das Dateisystem eindeutig, jedoch nicht unbedingt für alle auf einem bestimmten Host bereitgestellten Dateisysteme. Wenn Sie über mehrere Dateisysteme verfügen, werden zwischen den Dateisystemen doppelte Inode-Nummern angezeigt. Dies ist normal.

John
quelle