Un file system Linux è una raccolta strutturata di file su un’unità disco o una partizione. Una partizione è un segmento di memoria e contiene alcuni dati specifici. Nella nostra macchina, ci possono essere varie partizioni della memoria. Generalmente, ogni partizione contiene un file system.
Il sistema informatico di uso generale ha bisogno di memorizzare i dati sistematicamente in modo da poter accedere facilmente ai file in meno tempo. Memorizza i dati su dischi rigidi (HDD) o su qualche tipo di memoria equivalente. Ci possono essere le seguenti ragioni per mantenere il file system:
- Primariamente il computer salva i dati nella memoria RAM; può perdere i dati se viene spento. Tuttavia, c’è la RAM non volatile (Flash RAM e SSD) che è disponibile per mantenere i dati dopo l’interruzione dell’alimentazione.
- La memorizzazione dei dati è preferita sui dischi rigidi rispetto alla RAM standard perché la RAM costa più dello spazio su disco. I costi dei dischi rigidi stanno scendendo gradualmente rispetto alla RAM.
Il file system di Linux contiene le seguenti sezioni:
- La directory principale (/)
- Un formato specifico di archiviazione dati (EXT3, EXT4, BTRFS, XFS e così via)
- Una partizione o volume logico che ha un particolare file system.
Che cos’è il file system di Linux?
Il file system di Linux è generalmente un livello incorporato in un sistema operativo Linux utilizzato per gestire la gestione dei dati dello storage. Aiuta a organizzare il file sulla memoria del disco. Gestisce il nome del file, la dimensione del file, la data di creazione e molte altre informazioni su un file.
Se abbiamo un formato di file non supportato nel nostro file system, possiamo scaricare un software per gestirlo.
Struttura del file system Linux
Il file system Linux ha una struttura gerarchica dei file in quanto contiene una directory principale e le sue sottodirectory. Tutte le altre directory sono accessibili dalla directory principale. Una partizione di solito ha un solo file system, ma può avere più di un file system.
Un file system è progettato in modo da poter gestire e fornire spazio per i dati di archiviazione non volatile. Tutti i file system richiedono un namespace che è una metodologia di denominazione e organizzazione. Lo spazio dei nomi definisce il processo di denominazione, la lunghezza del nome del file, o un sottoinsieme di caratteri che possono essere usati per il nome del file. Definisce anche la struttura logica dei file su un segmento di memoria, come l’uso di directory per organizzare i file specifici. Una volta che uno spazio dei nomi è descritto, una descrizione dei metadati deve essere definita per quel particolare file.
La struttura dei dati deve supportare una struttura gerarchica di directory; questa struttura è utilizzata per descrivere lo spazio disponibile e utilizzato su disco per un particolare blocco. Ha anche altri dettagli sui file come la dimensione del file, la data &ora di creazione, aggiornamento e ultima modifica.
Inoltre, memorizza informazioni avanzate sulla sezione del disco, come partizioni e volumi.
I dati avanzati e le strutture che rappresentano contengono le informazioni sul file system memorizzato sull’unità; è distinto e indipendente dai metadati del file system.
Il file system Linux contiene un’architettura di implementazione software del file system in due parti. Considerate l’immagine sottostante:
Il file system richiede un’API (Application programming interface) per accedere alle chiamate di funzione per interagire con i componenti del file system come i file e le directory. L’API facilita compiti come la creazione, la cancellazione e la copia dei file. Facilita un algoritmo che definisce la disposizione dei file su un file system.
Le prime due parti del file system dato insieme chiamato un file system virtuale Linux. Fornisce un unico insieme di comandi per il kernel e gli sviluppatori per accedere al file system. Questo file system virtuale richiede il driver di sistema specifico per dare un’interfaccia al file system.
Caratteristiche del file system Linux
In Linux, il file system crea una struttura ad albero. Tutti i file sono disposti come un albero e i suoi rami. La directory più in alto si chiama root (/). Tutte le altre directory in Linux sono accessibili dalla directory principale.
Alcune caratteristiche chiave del file system Linux sono le seguenti:
- Specificare i percorsi: Linux non usa il backslash (\) per separare i componenti; usa la forward slash (/) come alternativa. Per esempio, come in Windows, i dati possono essere memorizzati in C:\ My Documents\ Work, mentre, in Linux, sarebbero memorizzati in /home/ My Document/ Work.
- Partizione, directory e unità: Linux non usa lettere di unità per organizzare il disco come fa Windows. In Linux, non possiamo dire se stiamo indirizzando una partizione, un dispositivo di rete, o una directory “normale” e un’unità.
- Sensibilità alle maiuscole: Il file system di Linux è case sensitive. Distingue tra nomi di file minuscoli e maiuscoli. Ad esempio, c’è una differenza tra test.txt e Test.txt in Linux. Questa regola si applica anche alle directory e ai comandi di Linux.
- Estensioni dei file: In Linux, un file può avere l’estensione ‘.txt,’ ma non è necessario che un file abbia un’estensione. Mentre si lavora con la Shell, si creano alcuni problemi per i principianti a distinguere tra file e directory. Se usiamo il file manager grafico, esso simboleggia i file e le cartelle.
- File nascosti: Linux distingue tra file standard e file nascosti, soprattutto i file di configurazione sono nascosti nel sistema operativo Linux. Di solito, non abbiamo bisogno di accedere o leggere i file nascosti. I file nascosti in Linux sono rappresentati da un punto (.) prima del nome del file (ad esempio, .ignore). Per accedere ai file, dobbiamo cambiare la visualizzazione nel file manager o dobbiamo usare un comando specifico nella shell.
Tipi di file system Linux
Quando installiamo il sistema operativo Linux, Linux offre molti file system come Ext, Ext2, Ext3, Ext4, JFS, ReiserFS, XFS, btrfs, e swap.
Capiamo ciascuno di questi file system in dettaglio:
File system Ext, Ext2, Ext3 e Ext4
Il file system Ext sta per Extended File System. È stato sviluppato principalmente per MINIX OS. Il file system Ext è una vecchia versione, e non è più usato a causa di alcune limitazioni.
Ext2 è il primo file system Linux che permette di gestire due terabyte di dati. Ext3 è sviluppato attraverso Ext2; è una versione aggiornata di Ext2 e contiene la compatibilità all’indietro. Lo svantaggio principale di Ext3 è che non supporta i server perché questo file system non supporta il recupero dei file e lo snapshot del disco.
Il file system Ext4 è il file system più veloce tra tutti i file system Ext. È un’opzione molto compatibile con i dischi SSD (solid-state drive), ed è il file system predefinito nella distribuzione Linux.
File System JFS
JFS sta per Journaled File System, ed è sviluppato da IBM per AIX Unix. È un’alternativa al file system Ext. Può anche essere usato al posto di Ext4, dove è necessaria la stabilità con poche risorse. È un comodo file system quando la potenza della CPU è limitata.
File System ReiserFS
ReiserFS è un’alternativa al file system Ext3. Ha prestazioni migliorate e caratteristiche avanzate. In passato, ReiserFS era usato come file system predefinito in SUSE Linux, ma in seguito ha cambiato alcune politiche, così SUSE è tornata a Ext3. Questo file system supporta dinamicamente l’estensione dei file, ma ha alcuni svantaggi nelle prestazioni.
XFS File System
XFS file system è stato considerato come JFS ad alta velocità, che è sviluppato per l’elaborazione I/O parallela. La NASA usa ancora questo file system con il suo server ad alta memorizzazione (300+ Terabyte server).
Btrfs File System
Btrfs sta per B tree file system. È usato per la tolleranza d’errore, il sistema di riparazione, l’amministrazione del divertimento, la configurazione estesa dello stoccaggio e altro. Non è un buon vestito per il sistema di produzione.
Swap File System
Il file system di swap è usato per il paging della memoria nel sistema operativo Linux durante l’ibernazione del sistema. Un sistema che non va mai in stato di ibernazione deve avere uno spazio di swap pari alla sua dimensione di RAM.