Dove sono memorizzati i nomi dei file su un filesystem?


44

Dove sono memorizzati i nomi dei file su un filesystem?

Non è inode o con il contenuto del file effettivo poiché abbiamo un collegamento reale che due nomi di file possono puntare allo stesso inode.


4
A rigor di termini, ciò dipende interamente da quale filesystem stai parlando. Non tutti hanno inode (o persino directory).
Michael Borgwardt,

NTFS o FAT12 / 16/32 e molti altri filesystem non hanno alcun inode
phuclv,

Molti file hanno più di un nome in più di una directory. Tutti i file di tipo directory hanno almeno 2 nomi, uno dei quali è .in se stesso.
Stéphane Chazelas,

@ LưuVĩnhPhúc, ntfs sì .. lo chiama semplicemente un record MFT, ma è praticamente un inode.
psusi

Risposte:


61

Non ho trovato un duplicato adatto, quindi ecco una risposta alla tua domanda.

Nomi e directory dei file

estratto

Nomi dei file e implicazioni sulla directory:

  • gli inode non contengono nomi di file, ma solo altri metadati di file.
  • Le directory Unix sono elenchi di strutture associative, ognuna delle quali contiene un nome file e un numero di inode.
  • Il driver del file system deve cercare una directory alla ricerca di un determinato nome file e quindi convertire il nome file nel numero di inode corrispondente corretto.

Fonte: pagina Wikipedia su Inode

Quindi il nome del file è memorizzato nella struttura delle informazioni delle directory. Per esempio:

                         ss di fs

Struttura della directory

estratto

Nel file system EXT2, le directory sono file speciali utilizzati per creare e conservare percorsi di accesso ai file nel file system. La Figura 9.3 mostra il layout di una voce della directory in memoria.

Un file di directory è un elenco di voci di directory, ognuna contenente le seguenti informazioni:

  • inode : l'inode per questa voce della directory. Questo è un indice nella matrice di inode contenuta nella tabella Inode del gruppo di blocchi. Nella figura 9.3, la voce della directory per il file chiamato file ha un riferimento al numero di inode i1,
  • nome lunghezza - La lunghezza di questa voce della directory in byte,
  • name - Il nome di questa voce della directory.

Le prime due voci per ogni directory sono sempre lo standard .e le ..voci che significano rispettivamente "questa directory" e "la directory principale".

Ecco i riferimenti della Figura 9.3 sopra:

                 ss # 2

Fonte: The Linux Documentation Project: Filesystem

Riferimenti


9

Il nome del file è memorizzato nella rispettiva directory ("file di directory"). Questa voce punta a un inode.


1
Non riesco a vedere come gli obiettivi del collegamento simbolico potrebbero finire nelle voci della directory. Il target del collegamento simbolico può essere trovato nell'inode del collegamento simbolico, ma non nella (qualsiasi delle) voci della directory a cui è collegato il collegamento simbolico, ciò non avrebbe senso.
Stéphane Chazelas,

@ StéphaneChazelas, il link simbolico stesso contiene semplicemente un altro nome che dovrebbe essere aperto invece. La ricerca del nome ricomincia dal nuovo nome, che (se esiste) è una voce della directory da qualche parte.
psusi,

1

Il nome file è memorizzato nella struttura dati "directory" che ha "(stringa) nome file" e il corrispondente "(int) inode". la directory è responsabile della mappatura del nome file -> inode. e in ode è responsabile della mappatura dell'inode -> settore su disco.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.