Pourquoi les répertoires / home, / usr, / var, etc. ont-ils tous le même numéro d'inode (2)?

31

Je trouve que sous mon répertoire racine, il y a des répertoires qui ont le même numéro d'inode:

$ ls -aid */ .*/

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

Je sais seulement que les noms des répertoires sont conservés dans le répertoire parent et leurs données sont conservées dans l'inode des répertoires eux-mêmes.

Je suis confus ici.

C'est ce que je pense quand je trace le chemin d'accès / home / user1.

  • Je vais d'abord dans l'inode 2 qui est le répertoire racine qui contient les listes de répertoires.
  • Ensuite, je trouve le nom home associé à l'inode 2.
  • Je reviens donc sur le disque pour trouver l'inode 2?
  • Et je reçois le nom user1 ici?
youxiao
la source
2
Voir aussi: grymoire.com/Unix/Inodes.html
Richard Neumann

Réponses:

39

Ils sont sur différents appareils.

Si nous regardons la sortie de stat, nous pouvons également voir le périphérique sur lequel se trouve le fichier:

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

Donc, ces deux sont sur des appareils / systèmes de fichiers séparés. Les numéros d'inode ne sont uniques qu'au sein d'un système de fichiers, il n'y a donc rien d'inhabituel ici. Sur ext2 / 3/4, l'inode 2 est également toujours le répertoire racine , nous savons donc que ce sont les racines de leurs systèmes de fichiers respectifs.

La combinaison numéro d'appareil + inode est susceptible d'être unique sur l'ensemble du système. (Il existe des systèmes de fichiers qui n'ont pas d'inodes au sens traditionnel du terme, mais je pense qu'ils doivent quand même simuler une sorte d'identifiant unique à leur place.)

Les numéros de périphérique semblent être les mêmes que ceux indiqués sur les nœuds de périphérique, donc /dev/sda1détient le système de fichiers où il /est activé:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1
ilkkachu
la source
Merci, maintenant je reçois des statistiques, utiles pour moi, je vais apprendre à les utiliser.
youxiao
1
Pour mémoire, tous les systèmes de fichiers ont un équivalent, même lorsqu'ils allouent dynamiquement des inodes. Par exemple, sur BTRFS (qui fait l'allocation dynamique des inodes, contrairement aux tables d'inodes statiques d'ext2 / 3/4), la valeur d'inode particulière utilisée comme ceci est 256 (car tout ce qui est inférieur est réservé aux entrées spéciales dans les arbres de métadonnées) .
Austin Hemmelgarn
1
@AustinHemmelgarn, certains systèmes de fichiers tels que FAT ou ISO9660 n'ont pas d'inodes dans le sens du terme. Le pilote du système de fichiers fait un peu de main pour le faire ressembler au reste du système qu'ils font.
Mark
@Mark: Le seul "sens significatif du mot" selon la norme qui le définit est "numéro de série du fichier [unique dans l'appareil]". Insister pour penser les inodes comme une structure de données sur disque particulière est à peu près aussi arriéré que penser aux ttys comme des télétypes mécaniques.
R ..
1
@R .., je suppose que selon cette définition, le système de fichiers FAT a des inodes, mais le "numéro de série de fichier" pour un fichier donné sur un système de fichiers FAT n'est pas stable sur plusieurs montages, ou même au fil du temps sur un seul montage: si la pression de la mémoire provoque la suppression d'une structure d'inode synthétisée du cache, le fichier obtient un nouveau numéro la prochaine fois que quelque chose demande ses données d'inode.
Mark
24

Le numéro d'inode d'un fichier donné est unique au système de fichiers, mais pas nécessairement unique à tous les systèmes de fichiers montés sur un hôte donné. Lorsque vous avez plusieurs systèmes de fichiers, vous verrez des numéros d'inode en double entre les systèmes de fichiers, c'est normal.

John
la source