¿Por qué los directorios / home, / usr, / var, etc. tienen el mismo número de inodo (2)?

31

Encuentro que debajo de mi directorio raíz, hay algunos directorios que tienen el mismo número de inodo:

$ ls -aid */ .*/

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

Solo sé que los nombres de los directorios se mantienen en el directorio principal, y sus datos se guardan en el inodo de los directorios mismos.

Estoy confundido aquí

Esto es lo que pienso cuando trazo el nombre de ruta / inicio / usuario1.

  • Primero me meto en el inodo 2, que es el directorio raíz que contiene las listas de directorios.
  • Luego encuentro el nombre de la casa emparejado con el inodo 2.
  • ¿Entonces vuelvo al disco para encontrar el inodo 2?
  • ¿Y obtengo el nombre user1 aquí?
youxiao
fuente
2
Ver también: grymoire.com/Unix/Inodes.html
Richard Neumann

Respuestas:

39

Están en diferentes dispositivos.

Si miramos la salida de stat, también podemos ver el dispositivo en el que se encuentra el archivo:

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

Entonces esos dos están en dispositivos / sistemas de archivos separados. Los números de inodo solo son únicos dentro de un sistema de archivos, por lo que no hay nada inusual aquí. En ext2 / 3/4, inode 2 también es siempre el directorio raíz , por lo que sabemos que son las raíces de sus respectivos sistemas de archivos.

Es probable que la combinación de número de dispositivo + inodo sea única en todo el sistema. (Hay sistemas de archivos que no tienen inodos en el sentido tradicional, pero creo que de todos modos todavía tienen que falsificar algún tipo de identificador único en su lugar).

Los números de dispositivo allí parecen ser los mismos que se muestran en los nodos del dispositivo, por lo que /dev/sda1contiene el sistema de archivos donde /está encendido:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1
ilkkachu
fuente
Gracias, ahora obtengo estadísticas, útiles para mí, aprenderé a usarlas.
youxiao
1
Para el registro, todos los sistemas de archivos tienen algún equivalente, incluso cuando asignan dinámicamente inodos. Por ejemplo, en BTRFS (que realiza la asignación dinámica de inodo, en contraste con las tablas de inodo estático ext2 / 3/4), el valor de inodo particular que se usa de esta manera es 256 (porque todo lo más bajo está reservado para entradas especiales en los árboles de metadatos) .
Austin Hemmelgarn
1
@AustinHemmelgarn, algunos sistemas de archivos como FAT o ISO9660 no tienen inodos en ningún sentido significativo de la palabra. El controlador del sistema de archivos hace un poco de mano para que se vea en el resto del sistema que lo hace.
Mark
@Mark: El único "sentido significativo de la palabra" según el estándar que lo define es "número de serie del archivo [único dentro del dispositivo]". Insistir en pensar en los inodes como una estructura de datos en el disco particular es casi tan atrasado como pensar en ttys como teletipos mecánicos.
R ..
1
@R .., supongo que según esa definición, el sistema de archivos FAT tiene inodos, pero el "número de serie del archivo" para un archivo dado en un sistema de archivos FAT no es estable en los montajes, o incluso con el tiempo en un solo montaje: si la presión de memoria hace que una estructura de inodo sintetizado sea expulsada del caché, el archivo obtiene un nuevo número la próxima vez que algo solicita sus datos de inodo.
Mark
24

El número de inodo de cualquier archivo dado es único para el sistema de archivos, pero no necesariamente exclusivo para todos los sistemas de archivos montados en un host dado. Cuando tiene varios sistemas de archivos, verá números de inodo duplicados entre sistemas de archivos, esto es normal.

John
fuente