GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial di base sul file system Linux:ext2, ext3, ext4, JFS e XFS

Il sistema Linux originale utilizzava un semplice file system che imitava la funzionalità del file system Unix. In questo tutorial, discuteremo del file system di base utilizzato in Linux.

Il file system ext

Il file system originale introdotto con il sistema operativo Linux è chiamato file system esteso (o semplicemente ext in breve). Fornisce un file system di base simile a Unix per Linux, utilizzando directory virtuali per gestire i dispositivi fisici e archiviando i dati in blocchi di lunghezza fissa sui dispositivi fisici.

Il file system ext utilizza un sistema chiamato inodes per tenere traccia delle informazioni sui file archiviati nella directory virtuale. Il sistema di inode crea una tabella separata su ciascun dispositivo fisico, chiamata tabella di inode, per memorizzare le informazioni sul file. Ciascun file memorizzato nella directory virtuale ha una voce nella tabella degli inode. La parte estesa del nome deriva dai dati aggiuntivi che tiene traccia su ogni file, che consiste in:

  • Il nome del file
  • La dimensione del file
  • Il proprietario del file
  • Il gruppo a cui appartiene il file
  • Autorizzazioni di accesso per il file
  • Puntatori a ciascun blocco del disco che contiene dati dal file

Linux fa riferimento a ciascun inode nella tabella degli inode utilizzando un numero univoco (chiamato numero inode), assegnato dal file system quando vengono creati i file di dati. Il file system utilizza il numero di inode per identificare il file invece di dover utilizzare il nome e il percorso completi del file.

Il file system ext2

Il file system ext originale aveva alcune limitazioni, come la limitazione dei file a soli 2 GB di dimensione. Non molto tempo dopo la prima introduzione di Linux, il file system ext è stato aggiornato per creare il secondo file system esteso, chiamato ext2. Come puoi immaginare, il file system ext2 è un'espansione delle capacità di base del file system ext ma mantiene la stessa struttura. Il file system ext2 espande il formato della tabella degli inode per tenere traccia di informazioni aggiuntive su ciascun file sul sistema.

La tabella degli inode ext2 aggiunge i valori temporali creati, modificati e a cui è stato effettuato l'ultimo accesso per i file per aiutare gli amministratori di sistema a tenere traccia dell'accesso ai file nel sistema. Il file system ext2 aumenta anche la dimensione massima consentita del file a 2 TB (quindi nelle versioni successive di ext2, che è stata aumentata a 32 TB) per aiutare a contenere i file di grandi dimensioni che si trovano comunemente nei server di database.

Oltre ad espandere la tabella degli inode, il file system ext2 ha anche modificato il modo in cui i file vengono archiviati nei blocchi di dati. Un problema comune con il file system ext era che quando un file viene scritto sul dispositivo fisico, i blocchi utilizzati per archiviare i dati tendono a essere sparsi in tutto il dispositivo (chiamato frammentazione). La frammentazione dei blocchi di dati può ridurre le prestazioni del file system, poiché la ricerca nel dispositivo di archiviazione richiede più tempo per accedere a tutti i blocchi per un file specifico.

Il file system ext2 aiuta a ridurre la frammentazione allocando i blocchi del disco in gruppi quando si salva un file. Raggruppando i blocchi di dati per un file, il file system non deve cercare in tutto il dispositivo fisico i blocchi di dati per leggere il file. Il file system ext2 è stato il file system predefinito utilizzato nelle distribuzioni Linux per molti anni, ma anch'esso aveva i suoi limiti. La tabella degli inode, sebbene sia una bella funzionalità che consente al file system di tenere traccia di informazioni aggiuntive sui file, può causare problemi che possono essere fatali per il sistema. Ogni volta che il file system memorizza o aggiorna un file, deve modificare la tabella degli inode con le nuove informazioni. Il problema è che questa non è sempre un'azione fluida.

Se dovesse succedere qualcosa al sistema informatico tra il file archiviato e l'aggiornamento della tabella degli inode, i due non sarebbero sincronizzati. Il file system ext2 è noto per essere facilmente danneggiato a causa di arresti anomali del sistema e interruzioni di corrente. Anche se i dati del file sono archiviati correttamente sul dispositivo fisico, se la voce della tabella degli inode non è stata completata, il file system ext2 non saprebbe nemmeno che il file esiste! Non passò molto tempo prima che gli sviluppatori esplorassero una strada diversa per i file system Linux.

File system di journaling

I file system di journaling forniscono un nuovo livello di sicurezza al sistema Linux. Invece di scrivere i dati direttamente sul dispositivo di archiviazione e quindi aggiornare la tabella degli inode, i file system di journaling scrivono prima le modifiche ai file in un file temporaneo (denominato journal). Dopo che i dati sono stati scritti correttamente nel dispositivo di archiviazione e nella tabella degli inode, la voce di giornale viene eliminata.

Se il sistema dovesse arrestarsi in modo anomalo o subire un'interruzione di corrente prima che i dati possano essere scritti sul dispositivo di archiviazione, il file system di journaling legge semplicemente il file journal ed elabora tutti i dati non salvati rimasti. Esistono tre diversi metodi di journaling comunemente usati in Linux, ciascuno con diversi livelli di protezione. Questi sono mostrati sotto nella tabella.

Metodi del file system di journaling:

Metodo Descrizione
Modalità dati Sia l'inode che i dati del file vengono registrati nel journal. Basso rischio di perdita di dati, ma scarso rendimento.
Modalità ordinata Solo i dati dell'inode scritti nel journal, ma non rimossi finché i dati del file non vengono scritti correttamente. Buon compromesso tra prestazioni e sicurezza.
Modalità di riscrittura Solo i dati dell'inode scritti sul giornale, nessun controllo su quando i dati del file vengono scritti. Rischio maggiore di perdere dati, ma comunque meglio che non utilizzare il journaling.

Limitazione

Il metodo di journaling in modalità dati è di gran lunga il più sicuro per la protezione dei dati, ma è anche il più lento. Tutti i dati scritti su un dispositivo di archiviazione devono essere scritti due volte, una volta sul giornale, quindi di nuovo sul dispositivo di archiviazione effettivo. Ciò può causare scarse prestazioni, soprattutto per i sistemi che eseguono molte scritture di dati. Nel corso degli anni, in Linux sono apparsi diversi file system di journaling. Le sezioni seguenti descrivono i popolari file system di journaling Linux disponibili.

I filesystem di journaling Linux estesi

Lo stesso gruppo che ha sviluppato i file system ext ed ext2 come parte del progetto Linux ha anche creato versioni journaling dei file system. Questi file system di journaling sono compatibili con il file system ext2 ed è facile convertirli avanti e indietro. Attualmente esistono due file system di journaling separati basati sul file system ext2.

Il file system ext3

Il file system ext3 è stato aggiunto al kernel Linux nel 2001 e fino a poco tempo fa era il file system predefinito utilizzato da quasi tutte le distribuzioni Linux. Utilizza la stessa struttura della tabella degli inode del filesystem ext2, ma aggiunge un file journal a ciascun dispositivo di archiviazione per inserire nel journal i dati scritti sul dispositivo di archiviazione.

Per impostazione predefinita, il file system ext3 utilizza il metodo di inserimento nel journal in modalità ordinata, scrivendo solo le informazioni sull'inode nel file journal, ma non rimuovendole fino a quando i blocchi di dati non sono stati scritti correttamente sul dispositivo di archiviazione. Puoi modificare il metodo di journaling utilizzato nel file system ext3 in modalità dati o writeback con una semplice opzione della riga di comando durante la creazione del file system.

Sebbene il file system ext3 aggiungesse il journaling di base al file system Linux, c'erano ancora alcune cose che mancavano. Ad esempio, il file system ext3 non fornisce alcun ripristino dall'eliminazione accidentale di file, non è disponibile la compressione dei dati incorporata (sebbene sia disponibile una patch che può essere installata separatamente che fornisce questa funzionalità) e il file system ext3 non non supporta la crittografia dei file. Per questi motivi, gli sviluppatori del progetto Linux scelgono di continuare a lavorare per migliorare il file system ext3.

Il file system ext4

Il risultato dell'espansione del file system ext3 è stato (come probabilmente hai intuito) il file system ext4. Il file system ext4 è stato ufficialmente supportato nel kernel Linux nel 2008 e ora è il file system predefinito utilizzato nelle distribuzioni Linux più popolari, come Fedora e Ubuntu.

Inoltre, per supportare la compressione e la crittografia, il file system ext4 supporta anche una funzione chiamata extent. Le estensioni allocano spazio su un dispositivo di archiviazione in blocchi e archiviano solo la posizione del blocco iniziale nella tabella degli inode. Questo aiuta a risparmiare spazio nella tabella degli inode non dovendo elencare tutti i blocchi di dati utilizzati per memorizzare i dati dal file.

Il file system ext4 incorpora anche la pre-allocazione dei blocchi. Se vuoi riservare spazio su un dispositivo di archiviazione per un file che sai aumenterà di dimensioni, con il file system ext4 è possibile allocare tutti i blocchi previsti per il file, non solo i blocchi che esistono fisicamente. Il file system ext4 riempie i blocchi di dati riservati con zeri e sa di non assegnarli a nessun altro file.

Il file system reiser

Nel 2001, Hans Reiser ha creato il primo file system di journaling per Linux, chiamato ReiserFS. Il file system ReiserFS supporta solo la modalità di inserimento nel journal di writeback, scrivendo solo i dati della tabella degli inode nel file journal. Poiché scrive solo i dati della tabella degli inode nel journal, il file system ReiserFS è uno dei file system di journaling più veloci in Linux.

Due caratteristiche interessanti incorporate nel file system ReiserFS sono che puoi ridimensionare un file system esistente mentre è ancora attivo e che utilizza una tecnica chiamata tailpacking, che inserisce i dati da un file nello spazio vuoto in un blocco di dati da un altro file. La funzione di ridimensionamento del file system attivo è ottima se devi espandere un file system già creato per ospitare più dati.

Il file system journal (JFS)

Probabilmente uno dei più antichi file system di journaling in circolazione, il Journaled File System (JFS) è stato sviluppato da IBM nel 1990 per la versione AIX di Unix. Tuttavia, è stato solo con la sua seconda versione che è stato portato nell'ambiente Linux.

Nota – Il nome IBM ufficiale della seconda versione del file system JFS è JFS2, ma la maggior parte dei sistemi Linux si riferisce ad esso solo come JFS.

Il file system JFS utilizza il metodo di journaling ordinato, memorizzando solo i dati della tabella degli inode nel journal, ma non rimuovendoli fino a quando i dati del file effettivo non vengono scritti sul dispositivo di archiviazione. Questo metodo è un compromesso tra la velocità di ReiserFS e l'integrità del metodo di journaling in modalità dati.

Il file system JFS utilizza l'allocazione dei file basata sull'estensione, allocando un gruppo di blocchi per ogni file scritto sul dispositivo di archiviazione. Questo metodo prevede una minore frammentazione sul dispositivo di archiviazione. Al di fuori delle offerte IBM Linux, il file system JFS non è comunemente usato, ma potresti incontrarlo nel tuo viaggio con Linux.

Il file system xfs

Il file system di journaling XFS è un altro file system originariamente creato per un sistema Unix commerciale che si è fatto strada nel mondo Linux. La Silicon Graphics Incorporated (SGI) ha originariamente creato XFS nel 1994 per il suo sistema commerciale IRIX Unix. È stato rilasciato nell'ambiente Linux per uso comune nel 2002.

Il file system XFS utilizza la modalità writeback del journaling, che fornisce prestazioni elevate ma introduce una quantità di rischio perché i dati effettivi non sono archiviati nel file journal. Il file system XFS consente anche il ridimensionamento online del file system, in modo simile al file system ReiserFS, con l'eccezione che i file system XFS possono essere solo espansi e non ridotti.


Linux
  1. Come modificare i nomi delle etichette delle partizioni Linux su EXT4 / EXT3 / EXT2 e Swap

  2. 7 modi per determinare il tipo di file system in Linux (Ext2, Ext3 o Ext4)

  3. File system Linux:Ext2 vs Ext3 vs Ext4

  4. 5 metodi per identificare il tipo di file system Linux (Ext2 o Ext3 o Ext4)

  5. Che cos'è Soft Links e Hard Links nel file system Linux

Come creare un nuovo file system Ext4 (partizione) in Linux

Crea ed estendi il filesystem XFS basato su LVM

Come eseguire il backup di file system Ext2, Ext3 o Ext4 in Linux

Come controllare e riparare un file system in RHEL Linux

Tutorial Tripwire:Sistema di rilevamento delle intrusioni basato su host Linux

Comprendere le autorizzazioni di base dei file e la proprietà in Linux