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?
linux
filesystems
inode
youxiao
quelle
quelle
Antworten:
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: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/sda1
enthält das Dateisystem Folgendes/
:quelle
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.
quelle