GNU/Linux >> Linux Esercitazione >  >> Linux

Introduzione al file system Linux

Introduzione

Un file system è un insieme di processi che controlla come, dove e quando i dati vengono archiviati e recuperati da un dispositivo di archiviazione. Un file system efficiente è essenziale per i processi di sistema quotidiani.

Il kernel Linux supporta vari file system, ma il più comunemente usato è il file system ext4.

In questo articolo imparerai di più sullo sviluppo dei file system Linux e sulle caratteristiche principali del sistema ext4.

Evoluzione del file system Linux

Diamo un'occhiata più da vicino all'evoluzione del file system Linux:

File system MINIX

Il file Minix sistema supportava il sistema operativo Minix. È stato introdotto per la prima volta nel 1987 da Andrew S. Tanenbaum.

Il sistema operativo Minix e il suo file system sono stati utilizzati principalmente per scopi di codifica didattici. Le prestazioni del file system non erano all'altezza degli standard in quel momento. Le lunghezze dei nomi dei file erano limitate a quattordici caratteri e le partizioni erano limitate a 64 MB. All'epoca, i dischi rigidi supportavano partizioni fino a 140 MB.

Nel 1992 Minix era per lo più fuori uso a causa della mancanza di prestazioni e dello sviluppo del file system ext .

File system esterno

Il file system ext sta per "File System esteso". È stato il primo file system progettato per supportare il kernel Linux.

File system virtuale (VFS) è stato utilizzato per il file system ext. Il suo scopo principale era consentire al kernel Linux di accedere al file system ext. Il file system ext limitava la lunghezza dei nomi dei file a 255 caratteri e supportava le partizioni fino a 2 GB.

Sebbene sia riuscito a risolvere i problemi del file system Minix, aveva un grosso difetto:il timestamp. A differenza di oggi, dove ogni file Linux ha tre timestamp (timestamp di accesso, timestamp modificato e timestamp modificato), il file system ext consentiva un solo timestamp per file.

Nel gennaio 1993 è stato introdotto il file system ext2. Col tempo, tutti gli utenti sono passati da ext a ext2.

File system ext2

Remi Card ha progettato il file system ext2 e lo ha rilasciato nel gennaio 1993, meno di un anno dopo l'introduzione del file system ext.

Il file system ext2 ha consentito il mantenimento della struttura interna mentre le funzionalità del file system sono state estese. I dati dei file sono stati conservati in blocchi di dati della stessa lunghezza. Il file system ext2 supportava la dimensione massima del file di 2TiB. Le lunghezze dei nomi di file non erano limitate in caratteri, ma in byte:255 byte. Non supportava l'inserimento nel diario.

Sebbene questo file system fosse ampiamente utilizzato, presentava ancora due problemi principali:

  • Corruzione dei file – Questo fenomeno si verificherebbe se i dati venissero scritti sul disco al momento di un'interruzione dell'alimentazione o di un arresto anomalo del sistema.
  • Perdita di prestazioni – La frammentazione del disco si verifica quando un singolo file viene suddiviso in pezzi e distribuito su più posizioni del disco. Di conseguenza, la lettura e la scrittura dei file richiedono più tempo, il che porta a un degrado delle prestazioni.

Il sistema ext2 è stato utilizzato principalmente fino all'inizio degli anni 2000, quando è stato introdotto il file system ext3. Oggi è usato occasionalmente per i dispositivi USB perché non supporta il sistema di journaling.

File system ext3

Stephen Tweedie ha progettato il file system ext3 (Terzo file system esteso). È stato lanciato nel novembre 2001 con il kernel Linux 2.4.15. È ancora in uso oggi.

Il file system ext3 è una versione migliorata del file system ext2. Supporta una dimensione massima del file di 2TiB e limita la lunghezza massima del nome del file a 255 byte, come il file system ext2. Il miglioramento si riflette nell'inserimento nel diario.

Il giornalismo il sistema tiene un "diario" di tutte le modifiche nella struttura dei dati che devono ancora essere confermate. In caso di interruzione dell'alimentazione o di arresto anomalo del sistema, i registri archiviati tramite il sistema di journaling restituiscono i dati in pochi secondi, riducendo il rischio di danneggiamento o perdita di dati. Il sistema scrive i dati nelle aree corrette del file system quando il registro viene aggiornato.

Il kernel Linux supporta tre livelli di journaling:

  • Diario – Consiste nella scrittura di metadati e contenuti di file in un diario prima che vengano apportate modifiche al file system principale. Ciò consente di salvare i dati in caso di interruzione dell'alimentazione o arresto anomalo del sistema. Lo svantaggio di questo livello di journaling è che le prestazioni del sistema diminuiscono.
  • Ordinato – Questo livello di journaling scrive i metadati nel journal, mentre il contenuto del file viene automaticamente archiviato nel file system principale. Il processo viene eseguito in un ordine specifico. Innanzitutto, i metadati vengono scritti nel diario. Quindi, il contenuto del file viene scritto nel file system principale. Alla fine, i metadati si connettono al file system principale. Pertanto, il file system principale non viene danneggiato in caso di arresto anomalo del sistema. Solo i file in fase di scrittura durante un arresto anomalo possono essere danneggiati.
  • Ritorno – Questo livello di inserimento nel journal scrive solo i metadati nel journal. Il contenuto del file viene scritto nel file system principale solo dopo l'aggiornamento del journal. A causa della mancanza di sincronizzazione dei metadati e del contenuto dei file, è probabile che il file system venga danneggiato in caso di arresto anomalo del sistema.

File system ext4

Il file system ext4 è il file system predefinito dell'attuale kernel Linux. È stato introdotto nell'ottobre 2008 con il kernel Linux 2.6.28.

Il file system ext4 supporta la dimensione massima del file di 16TiB e limita la lunghezza massima dei nomi di file a 255 byte.

Caratteristiche del file system ext4

Diamo un'occhiata alle caratteristiche principali del file system ext4.

Compatibilità con le versioni precedenti

Il file system ext4 supporta la compatibilità con le versioni precedenti con i file system ext3 ed ext2. Un'ulteriore funzionalità è il montaggio automatico del file system ext3 in modalità ext3 utilizzando un driver ext4.

Miglioramenti allocazione

Il file system ext4 alloca i blocchi di archiviazione in modo più efficiente prima di scriverli sul disco. Ciò migliora le prestazioni di lettura e scrittura.

Miglioramenti al timestamp

Il file system ext4 aggiunge altri 408 anni al timestamp e supporta date fino al 10 maggio 2446. Anche i timestamp vengono misurati più velocemente, in nanosecondi.

Estensioni

Le versioni obsolete del file system ext mappano tutti i blocchi correlati a ciascun file. Il processo non funziona quando si tratta di file di grandi dimensioni che richiedono un numero elevato di blocchi. Le estensioni hanno risolto il problema nel file system ext4.

Estensioni ridurre la quantità di metadati necessari per mappare i blocchi di ciascun file. Il sistema salva l'indirizzo del primo e dell'ultimo blocco corrispondente al file grande.

Miglioramenti all'allocazione multiblocco

Un allocatore di blocchi cerca blocchi liberi che possono essere utilizzati per scrivere dati sul disco. Il file system ext4 utilizza allocazioni multiple che consentono l'assegnazione di più blocchi per chiamata. Ciò riduce la frammentazione del disco.

Assegnazione ritardata

L'allocazione ritardata funzione alloca i blocchi solo quando il file viene scritto sul disco. Con questa funzione, la memoria cache non viene riempita di dati non necessari e le prestazioni del sistema aumentano.

Numero illimitato di sottodirectory

La versione 2.6.23 del kernel Linux supporta un numero illimitato di sottodirectory. Il file system ext4 ha introdotto la struttura dati Htree per evitare cali di prestazioni. La struttura dati HTree rappresenta una versione specializzata del B-tree.

Checksum del diario

Il file system ext4 utilizza il checksum opzione. Questa opzione è stata introdotta per ridurre il rischio di danneggiamento dei file.

Il sistema di journaling è la parte più utilizzata del disco. Quando si verifica un errore hardware, i blocchi diventano inutilizzabili e si verifica il danneggiamento dei file. L'opzione checksum controlla costantemente se un blocco è danneggiato. Questo processo migliora anche le prestazioni perché riduce il tempo di inserimento nel journal.

Verifiche del file system più rapide

In un file system ext4, i gruppi non distribuiti di blocchi e le tabelle di inode sono contrassegnati. Il tempo necessario per eseguire fsck comando è notevolmente ridotto perché i gruppi contrassegnati vengono saltati. Migliora le prestazioni complessive.

Deframmentazione in linea

La frammentazione del disco porta a un degrado delle prestazioni, che era un problema significativo con i file system ext2 ed ext3. Il file system ext4 supporta e4defrag strumento che consente agli utenti di deframmentare singoli file o l'intero file system.

Limitazioni del file system ext4

Sebbene il file system ext4 sia considerato il miglior file system per le distribuzioni Linux, ci sono alcune limitazioni che dovrebbero essere considerate nell'ulteriore sviluppo del sistema:

  • Recupero dati danneggiato – Il file system ext4 non è in grado di rilevare o recuperare i dati danneggiati già scritti sul disco.
  • Dimensione massima del volume – La dimensione massima del volume è impostata su 1 EiB. Tuttavia, il file system non può gestire più di 100 TiB di dati senza una significativa perdita di prestazioni e una maggiore frammentazione del disco.

File system Linux alternativi

Esistono diverse alternative al file system ext4. Il kernel Linux supporta tutte le alternative elencate di seguito.

XFS

XFS è un file system a 64 bit introdotto per la prima volta nel 1994 e integrato nel kernel Linux dal 2001. È il file system predefinito per RedHat Linux.

XFS supporta una dimensione massima del file di 8 EiB e limita la lunghezza del nome del file a 255 byte. Supporta il journaling e, come ext4, salva le modifiche in un journal prima che le modifiche vengano salvate nel file system principale. Ciò riduce la possibilità di danneggiamento dei file.

I dati sono strutturati in alberi B+ , che fornisce un'allocazione efficiente dello spazio e quindi prestazioni migliori.

Il principale svantaggio di questo sistema si riflette nel difficile processo di ridimensionamento di un file system XFS esistente.

OpenZFS

OpenZFS è una piattaforma che combina file system con gestori di volumi. È stato introdotto per la prima volta nel 2013.

OpenZFS supporta una dimensione massima del file di 16 EiB e limita la lunghezza massima del nome del file a 255 caratteri. Alcune delle funzionalità di questo sistema sono la protezione contro il danneggiamento dei dati, la crittografia, il supporto per capacità di archiviazione elevate, copia su scrittura e RAID-Z.

Il principale svantaggio di OpenZFS è l'incompatibilità legale tra le licenze CDDL (OpenZFS) e GPL (kernel Linux). Ciò viene risolto compilando e caricando il codice ZFS nel kernel Linux.

BtrFS

Oracle ha progettato BtrFS (sta per "file system B-tree") e lo ha rilasciato nel 2009 con il kernel Linux 2.6.29.

BtrFS supporta una dimensione massima del file di 16 EiB e limita la lunghezza massima del nome del file a 255 caratteri. Alcune delle funzionalità di BtrFS sono la deframmentazione online, l'aggiunta e la rimozione di dispositivi a blocchi online, il supporto RAID, la compressione configurabile per file o volume, la clonazione dei file, i checksum e la capacità di gestire i file di scambio e le partizioni di scambio.


Linux
  1. Copia i file nel terminale Linux

  2. Rinominare un file nel terminale Linux

  3. Sposta i file nel terminale Linux

  4. Introduzione al comando chown di Linux

  5. Comprendere il file system Btrfs in Fedora Linux

Arch Linux – Personalizzazione del sistema

Introduzione di un amministratore di sistema Linux a cgroups

Il file host su Linux

Scegli il miglior file system per il tuo Linux

Tutto ciò che devi sapere sul file system Linux

Comprendere il file /etc/fstab in Linux