it-swarm.it

Che cos'è un Superblock, Inode, Dentry e un file?

Dall'articolo Anatomia del file system Linux di M. Tim Jones, ho letto che Linux visualizza tutti i file system dalla prospettiva di un insieme comune di oggetti e questi oggetti sono superblock, inode, dentry e file. Anche se il resto del paragrafo spiega quanto sopra, non ero a mio agio con questa spiegazione.

Qualcuno potrebbe spiegarmi questi termini?

132
Sen

Innanzitutto, e mi rendo conto che non era uno dei termini della tua domanda, devi capire metadati . In breve, e rubati da Wikipedia, i metadati sono dati sui dati. Vale a dire che i metadati contengono informazioni su un dato. Ad esempio, se possiedo un'auto, ho una serie di informazioni sull'auto ma che non fa parte dell'auto stessa. Informazioni quali numero di registrazione, marca, modello, anno di produzione, informazioni sull'assicurazione e così via. Tutte queste informazioni sono denominate collettivamente metadati. Nei file system Linux e UNIX i metadati esistono a più livelli dell'organizzazione, come vedrai.

superblock è essenzialmente metadati del file system e definisce il tipo di file system, le dimensioni, lo stato e le informazioni su altre strutture di metadati (metadati di metadati). Il superblocco è molto critico per il file system e pertanto viene archiviato in più copie ridondanti per ciascun file system. Il superblocco è una struttura di metadati molto "di alto livello" per il file system. Ad esempio, se il superblocco di una partizione,/var, diventa corrotto, il file system in questione (/ var) non può essere montato dal sistema operativo. Comunemente in questo caso, è necessario eseguire fsck che selezionerà automaticamente una copia alternativa di backup del superblocco e tenterà di ripristinare il file system. Le copie di backup stesse sono archiviate in gruppi di blocchi sparsi nel file system con il primo archiviato con un offset di 1 blocco dall'inizio della partizione. Ciò è importante nel caso in cui sia necessario un ripristino manuale. È possibile visualizzare informazioni sui backup del superblocco ext2/ext3/ext4 con il comando dumpe2fs /dev/foo | grep -i superblock utile in caso di tentativo di recupero manuale. Supponiamo che il comando dumpe2fs produca la riga Backup superblock at 163840, Group descriptors at 163841-163841. Possiamo usare queste informazioni e ulteriori conoscenze sulla struttura del file system per tentare di utilizzare questo backup di superblocco: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo. Si noti che per questo esempio ho assunto una dimensione di blocco di 1024 byte.

Un inode esiste in o su un file system e rappresenta metadati su un file. Per chiarezza, tutti gli oggetti in un sistema Linux o UNIX sono file; file, directory, dispositivi e così via. Si noti che, tra i metadati contenuti in un inode, non esiste un nome file come gli umani lo pensano, questo sarà importante in seguito. Un inode contiene essenzialmente informazioni sulla proprietà (utente, gruppo), modalità di accesso (lettura, scrittura, autorizzazioni di esecuzione) e tipo di file.

A dentry è la colla che tiene insieme inode e file mettendo in relazione i numeri di inode con i nomi dei file. Anche i dentry svolgono un ruolo nella memorizzazione nella directory che, idealmente, tiene a portata di mano i file più utilizzati per un accesso più rapido. La traversata del file system è un altro aspetto dell'odontoiatria poiché mantiene una relazione tra le directory e i loro file.

Un file, oltre ad essere ciò che gli umani in genere pensano quando viene presentato con la Parola, è in realtà solo un blocco di dati arbitrari logicamente correlati. Comparativamente molto noioso considerando tutto il lavoro svolto (sopra) per tenerne traccia.

Mi rendo pienamente conto che alcune frasi non forniscono una spiegazione completa di nessuno di questi concetti, quindi non esitate a chiedere ulteriori dettagli quando e dove necessario.

144
Tok

File

Un file significa solo un mucchio di byte disposti in un certo ordine. È ciò che la gente normale chiama il contenuto di un file. Quando Linux apre un file, crea anche un oggetto file, che contiene i dati su dove è archiviato il file e su quali processi lo stanno utilizzando. L'oggetto file (ma non i dati del file stesso) viene eliminato quando il file viene chiuso.

Inode

Un inode (abbreviazione di "nodo indice") è un insieme di attributi relativi a un file archiviato da Linux. C'è un inode per ogni file (anche se con alcuni filesystem, Linux deve creare i suoi inode perché le informazioni sono diffuse nel filesystem). L'inode memorizza informazioni come chi possiede il file, quanto è grande il file e chi è autorizzato ad aprire il file. Ogni inode contiene anche un numero univoco per la partizione del filesystem; è come un numero seriale per il file descritto da quell'inode.

Dentry

Un dentry (abbreviazione di "entry directory") è ciò che il kernel Linux usa per tenere traccia della gerarchia dei file nelle directory. Ogni dentista associa un numero di inode a un nome file e una directory padre.

Superblock

Il superblocco è una struttura di dati unica in un filesystem (sebbene esistano più copie per proteggersi dalla corruzione). Il superblocco contiene metadati relativi al filesystem, ad esempio quale inode è la directory di livello superiore e il tipo di filesystem utilizzato.

50
pingswept

superblock , il nodo indice (o inode ), la voce della directory ( o dentry ) e infine l'oggetto file fanno parte di file system virtuale (VFS) o switch di file system virtuale . Lo scopo di un VFS è consentire alle applicazioni client di accedere a diversi tipi di file system concreti in modo uniforme.

Relazioni degli oggetti principali nel VFS

enter image description here


Un Inode è una struttura di dati su un file system Unix/Linux. Un inode memorizza i metadati relativi a un normale file, directory o altro oggetto del file system. Inode funge da interfaccia tra file e dati. Un inode può fare riferimento a un file o una directory o un collegamento simbolico a un altro oggetto. Contiene un numero univoco (il numero i), gli attributi del file, inclusi nome, data, dimensioni e autorizzazioni di lettura/scrittura e un puntatore alla posizione del file. È la controparte della tabella FAT nel mondo DOS/Windows.

Programmi, servizi, testi, immagini e così via, sono tutti file . I dispositivi di input e output, e generalmente tutti i dispositivi, sono considerati file , secondo il sistema.

Il superblocco è il contenitore per metadati di alto livello su un file system. Il superblocco è una struttura esistente sul disco (in realtà, più posizioni sul disco per ridondanza) e anche in memoria. Fornisce la base per gestire il file system su disco, in quanto definisce i parametri di gestione del file system (ad esempio, numero totale di blocchi, blocchi liberi, nodo indice radice).

Dentry è l'interfaccia tra file e Inodes. Anche i dentry svolgono un ruolo nella memorizzazione nella directory che, idealmente, tiene a portata di mano i file più utilizzati per un accesso più rapido.

Source

14
Premraj

Nella semplicità, l'odontoiatria e l'inode sono la stessa cosa, un'astrazione di file o directory. Le differenze tra odontoiatria e inode sono che l'odontoiatria viene utilizzata per facilitare operazioni specifiche della directory, inode è solo una raccolta di metadati su file o directory. Il superblocco è l'astrazione del filesystem.

struct file, nel kernel di Linux, è erroneamente chiamato come molti altri (ad esempio struct address_space) e non è un'astrazione di un "file" reale (ad es./etc/passwd). Indica un "file" o una directory aperti. struct file è creato da sys_open nel kernel, quindi un processo può avere molti struct files per lo stesso file.

Perché abbiamo bisogno dell'odontoiatria? È usato per velocizzare la traduzione dal nome del percorso (es./Etc/passwd) all'inode. Il kernel Linux usa inode per manipolare "file" o directory, non il loro nome.

5
firo

Nota che questi termini non sono specifici di Linux ma specifici del file system. La maggior parte dei filesystem utilizzati dagli attuali sistemi Unix e Unix sono derivati ​​o ispirati dal filesystem Unix originale che ha definito il linguaggio superbo e inode. Linux può anche montare diversi filesystem con i quali non esiste alcuna nozione di superblock e/o inode, il più comune dei quali è FAT. Un altro, ZFS, non usa superblocchi ma überblocks.

4
jlliagre