In un file system Linux, cosè un Superblock?


Migliore risposta

In breve

Ogni file system ha un superblocco, che contiene informazioni sul file system come:

  • Tipo di file system
  • Dimensioni
  • Stato
  • Informazioni su altre strutture di metadati

In dettaglio

Il superblocco è una struttura che rappresenta un file system. Include le informazioni necessarie per gestire il file system durante il funzionamento. Include il nome del file system (come ext4), la dimensione del file system e il suo stato, un riferimento al dispositivo a blocchi e informazioni sui metadati (come elenchi gratuiti e così via). Il superblocco è tipicamente memorizzato sul supporto di memorizzazione ma può essere creato in tempo reale se non ne esiste uno. Puoi trovare la struttura del superblocco in ./linux/include/linux/fs.h.

Uno elemento importante del superblocco è una definizione delle operazioni del superblocco. Questa struttura definisce linsieme di funzioni per la gestione degli inode allinterno del file system. Ad esempio, gli inode possono essere allocati con alloc\_inode o eliminati con destroy\_inode. Puoi leggere e scrivere inode con read\_inode e write\_inode o sincronizzare il file sistema con sync\_fs. Puoi trovare la struttura super\_operations in ./linux/include/linux/fs.h. Ogni file system fornisce il proprio propri metodi inode, che implementano le operazioni e forniscono lastrazione comune al livello VFS.

Struttura fisica

La struttura fisica dei filesystem Ext2 è stata fortemente influenzata dal layout del filesystem BSD. Un filesystem è costituito da gruppi di blocchi. I gruppi di blocchi sono analoghi ai gruppi di cilindri di BSD FFS. Tuttavia, i gruppi di blocchi non sono legati alla disposizione fisica dei blocchi sul disco, poiché le unità moderne tendono ad essere ottimizzate per laccesso sequenziale e nascondono la loro geometria fisica al sistema operativo.

,---------+---------+---------+---------+---------,

| Boot | Block | Block | ... | Block |

| sector | group 1 | group 2 | | group n |

`---------+---------+---------+---------+---------"

Ogni gruppo di blocchi contiene una copia ridondante delle informazioni cruciali per il controllo del filesystem (superblock e il filesystem descrittori) e contiene anche una parte del filesystem (una bitmap di blocco, una bitmap di inode, una parte della tabella di inode e blocchi di dati). La struttura di un gruppo di blocchi è rappresentata in questa tabella:

,---------+---------+---------+---------+---------+---------,

| Super | FS | Block | Inode | Inode | Data |

| block | desc. | bitmap | bitmap | table | blocks |

`---------+---------+---------+---------+---------+---------"

Lutilizzo di gruppi di blocchi è una grande vittoria in termini di affidabilità: poiché le strutture di controllo sono replicate in ogni gruppo di blocchi, è e asy per ripristinare da un filesystem in cui il superblocco è stato danneggiato. Questa struttura aiuta anche ad ottenere buone prestazioni: riducendo la distanza tra la tabella degli inode ei blocchi di dati, è possibile ridurre le ricerche della testina del disco durante lI / O sui file.

Riferimento: – File system estesi (Ext, Ext2, Ext3)

Risposta

I file system in Linux funzionano a diversi livelli: A) a insieme di routine primitive per interagire con il dispositivo (cioè il driver), B) un insieme di record sul disco corrispondente a ciò che chiamiamo file, e C) informazioni sui metadati su ogni file che sono denominati inode, vi è 1 inode per ogni file. Questi inode tengono traccia di cose come quali sono i tuoi attributi di file, come sono definiti lettura / scrittura sui tuoi file, ecc.

Risulta che questa è solo unimmagine incompleta. Cioè prima che ogni tipo di file system possa scegliere di organizzare i propri inode nel modo che preferisce sul disco. Anche la rappresentazione degli inode su disco può variare tra i diversi file system – ciò che conta è solo che il visualizza il VFS è fornito con le strutture degli inode concordano. Quindi Linux non sa di per sé come si possa accedere ai singoli file / inode in un file system.

Il problema viene gestito in modo ordinato utilizzando la struct file\_system e la struct tipi di super\_block . Questultimo vive sul disco mentre il primo vive solo nella memoria. Quando monti un filesystem usando diciamo,

mount -t ext4 / dev / usb1 / mnt / usb1

loggetto file\_system che definisce il tipo ext4 contiene un mount () routine che specifica come leggere loggetto superblocco dal disco. Questo oggetto superblocco specifica tutto ciò di cui hai bisogno per accedere (allocare, cancellare, leggere, correggere, sincronizzare tra dispositivo e memoria, ecc.) Agli inode nel dispositivo.Una volta che questo oggetto superblocco è stato scaricato in memoria, usiamo le sue operazioni lookup () per leggere gli inode dal disco in memoria. Quindi, usiamo questi inode a turno per accedere ai file system. È gerarchico, davvero, e abbastanza pulito!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *