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


125

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 superblocco , inode , dentatura e file . Anche se il resto del paragrafo spiega quanto sopra, non ero così a mio agio con quella spiegazione.

Qualcuno potrebbe spiegarmi questi termini?

Risposte:


136

Prima di tutto, e mi rendo conto che non era uno dei termini della tua domanda, devi capire i 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.

Il superblocco è essenzialmente metadati del file system e definisce il tipo, la dimensione, lo stato e le informazioni del file system 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 evento, è necessario eseguirefsckche 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 di superblock con il comando dumpe2fs /dev/foo | grep -i superblockche è utile in caso di un tentativo di recupero manuale. Supponiamo che il comando dumpe2fs emetta la linea Backup superblock at 163840, Group descriptors at 163841-163841. Siamo in grado di utilizzare queste informazioni, e ulteriori conoscenze sulla struttura del file system, per tentare di utilizzare questo backup 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.

Esiste un inode in o su un file system e rappresenta i metadati relativi a 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.

Una dentatura è 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 quello che gli umani pensano in genere 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.


@Tok: eseguirà il dump in questo modo (come mostrato nella risposta): backup superblocco a 163840, descrittori di gruppo a 163841-163841 o in questo modo: backup superblocco a 163840, descrittori di gruppo a 163841-163842? È stato un errore di battitura? :-)
Sen

@TOK: backup superblock a 163840, descrittori di gruppo a 163841-163842, quali informazioni comunicano i descrittori di gruppo?
Sen

@Sen - teoricamente i descrittori di gruppo potrebbero estendersi su più blocchi, ma per la maggior parte dei sistemi desktop li vedrai prendere solo un singolo blocco e fare riferimento a $ ((BackupBlock + 1)) - $ ((BackupBlock + 1))
Tok

@TOK: ok nel mio sistema lo vedo come $ ((BackupBlock + 1)) - $ ((BackupBlock + 2))
Sen

@Sen - Il descrittore di gruppo descrive un gruppo di blocchi. Cosa significa? Più metadati. In sostanza un descrittore di gruppo contiene una bitmap di blocchi (numero di blocco della bitmap di allocazione di blocco), una bitmap di inode (uguale ma per inode), una tabella di inode (numero di blocco del blocco iniziale per la tabella di inode), conteggi di blocchi e inode gratuiti, e un conteggio delle directory usate. Tutto questo è basato su un file system ext2. I descrittori di gruppo sono molto importanti per il corretto funzionamento del file system e sono duplicati insieme al superblocco.
Tok

49

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.

superblocco

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.


11

superblock , il nodo indice (o inode ), la voce della directory (o dentry ) e, infine, l' oggetto file fanno parte del file system virtuale (VFS) o del commutatore del 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 dei principali oggetti nel VFS

inserisci qui la descrizione dell'immagine


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 di 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 cache delle directory che, idealmente, tiene a portata di mano i file più utilizzati per un accesso più rapido.

fonte


5

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 Linux, è erroneamente chiamato come molti altri (ad esempio struct address_space) e non è un'astrazione di un vero "file" (ad esempio / etc / passwd). Indica un "file" o una directory aperti. struct fileviene creato sys_opennel kernel, quindi un processo può avere molti struct files per lo stesso file.

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


4

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 superblocco e gli inode degli 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.


Spero che tu possa leggere questo commento dopo tanto tempo. Ho letto che VFS ha inode e superblocchi non correlati agli inode e ai superblocchi di EXT2. Quindi, solo per non fraintendere quello che hai detto, in virtù di ogni Linux che ha un VFS, dovrebbero usare tutti gli inode e il superblocco, giusto?
CuriousKimchi il

1
@CuriousKimchi Nonostante qui abbiano lo stesso nome, non dovresti confondere le informazioni memorizzate sul disco (superblock / inode) e le strutture usate dal kernel per accedere a un file system e ai suoi file. Ogni file system ha alcuni metadati su disco che descrivono le caratteristiche del file system, questi metadati vengono utilizzati per popolare la struttura del superblocco VFS di Linux. Allo stesso modo, i file hanno una struttura di inode nel kernel sotto VFS. Quando ai file system sottostanti manca la nozione di inode, questa struttura contiene un falso numero di inode creato al volo dal sistema operativo.
jlliagre,
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.