¿Dónde se almacenan los nombres de archivo en un sistema de archivos?

44

¿Dónde se almacenan los nombres de archivo en un sistema de archivos?

No está en inodo o con el contenido real del archivo, ya que tenemos un enlace duro que dos nombres de archivo pueden apuntar al mismo inodo.

yegle
fuente
44
Estrictamente hablando, eso depende completamente de qué sistema de archivos está hablando. No todos tienen inodes (o incluso directorios).
Michael Borgwardt
NTFS o FAT12 / 16/32 y muchos otros sistemas de archivos no tienen ningún inodo
phuclv
Muchos archivos tienen más de un nombre en más de un directorio. Todos los archivos de tipo directorio tienen al menos 2 nombres, uno de ellos .en sí mismos.
Stéphane Chazelas
@ LưuVĩnhPhúc, ntfs sí ... simplemente lo llama un registro MFT, pero es prácticamente un inodo.
psusi

Respuestas:

61

No estaba encontrando un duplicado adecuado, así que aquí hay una respuesta a su pregunta.

Nombres de archivo y directorios

extracto

Nombres de archivo e implicaciones de directorio:

  • Los inodes no contienen nombres de archivo, solo otros metadatos de archivo.
  • Los directorios de Unix son listas de estructuras de asociación, cada una de las cuales contiene un nombre de archivo y un número de inodo.
  • El controlador del sistema de archivos debe buscar en un directorio buscando un nombre de archivo en particular y luego convertir el nombre de archivo al número de inodo correspondiente.

Fuente: página de Wikipedia en Inode

Por lo tanto, el nombre del archivo se almacena dentro de la estructura de información de los directorios. Por ejemplo:

                         ss de fs

Estructura del directorio

extracto

En el sistema de archivos EXT2, los directorios son archivos especiales que se utilizan para crear y mantener rutas de acceso a los archivos en el sistema de archivos. La Figura 9.3 muestra el diseño de una entrada de directorio en la memoria.

Un archivo de directorio es una lista de entradas de directorio, cada una con la siguiente información:

  • inodo : el inodo para esta entrada de directorio. Este es un índice en el conjunto de inodos contenidos en la tabla de inodo del grupo de bloques. En la figura 9.3, la entrada del directorio para el archivo llamado archivo tiene una referencia al número de inodo i1,
  • longitud del nombre : la longitud de esta entrada de directorio en bytes,
  • nombre : el nombre de esta entrada de directorio.

Las dos primeras entradas para cada directorio son siempre el estándar .y las ..entradas que significan "este directorio" y "el directorio padre" respectivamente.

Aquí están las referencias de la Figura 9.3 arriba:

                 ss # 2

Fuente: Proyecto de documentación de Linux: sistema de archivos

Referencias

slm
fuente
9

El nombre del archivo se almacena en el directorio respectivo ("archivo de directorio"). Esta entrada apunta a un inodo.

Hauke ​​Laging
fuente
1
No puedo ver cómo los objetivos de enlaces simbólicos podrían terminar en entradas de directorio. El objetivo del enlace simbólico se puede encontrar en el inodo del enlace simbólico, pero no en (cualquiera de) la entrada de directorio a la que está vinculado el enlace simbólico, eso no tendría sentido.
Stéphane Chazelas
@ StéphaneChazelas, el enlace simbólico simplemente contiene otro nombre que debería abrirse en su lugar. La búsqueda de nombre comienza nuevamente en el nuevo nombre, que (si es que existe) es una entrada de directorio en alguna parte.
psusi
1

El nombre del archivo se almacena en la estructura de datos del "directorio" que tiene "(string) filename" y el correspondiente "(int) inode". El directorio es responsable de asignar el nombre del archivo -> inode. y en ode es responsable de mapear inode -> sector en disco.

Solo virtualmente
fuente