informatica

1.1.2000


per commenti
osservazioni
critiche
e ringraziamenti
relativi a questa
domanda:
scrivi all'autore

Se hai altre curiosita' piu' o meno
inerenti al tema:

formula qui
la tua domanda
 
Chiedi all'esperto -  Home
ViaLattea home

Quali sono le principali caratteristiche e differenze tra i file system ext2 e FAT?

(risponde Luca Fini)


Vedi anche una risposta sulla deframmentazione dell'hard disk.

Nelle pagine seguenti vengono descritti i file system (ovvero le strutture di memorizzazione dei dati sui dischi magnetici) ext2 e FAT.

Il file system ext2

Il file system ext2 è stato introdotto con il sistema operativo Linux ed è in pratica una versione modificata dei filesystem utilizzati su gran parte dei sistemi Unix preesistenti.

Il filesystem viene creato al momento della formattazione del disco, o meglio, della partizione, e la suddivide in gruppi (zone). Una tabella principale contiene le informazioni globali relative alla partizione:

  • superblock: contiene informazioni complessive sulla partizione quali il numero di blocchi complessivo, il numero di inode (vedi sotto), il numero di blocchi liberi, un'indicazione di quando è avvenuta l'ultima verifica della struttura, etc. L'informazione contenuta nel superblock è cosí importante che viene duplicata in varie zone del disco in modo che possa più facilmente essere recuperata in caso di errore.

All'interno di ciascun gruppo vengono create le seguenti cinque tabelle:

  • block bitmap: tabella in cui ad ogni bit è associato un blocco di dati. Lo stato del bit indica se il relativo blocco è libero o allocato ad un file.

  • inode bitmap: tabella in cui ciascun bit è associato ad un "inode" (vedi sotto). Lo stato del bit indica se il corrispondente inode è libero o in uso.

  • inode table: tabella degli "inode". Ogni elemento di questa tabella corrisponde ad un singolo file. L'inode contiene tutte le informazioni relative ad un file e principalmente quelle necessarie a reperire i dati effettivamente contenuti nel file.

  • data blocks: la porzione di disco dove sono effettivamente memorizzati i dati. Ogni blocco di dati (blocco logico) ha una dimensione multipla della dimensione del blocco fisico secondo una potenza di due. La dimensione del blocco logico viene stabilita al momento della formattazione. Allo scopo di ottimizzare l'allocazione dello spazio disco il filesystem ext2 è in grado di gestire "frammenti" di blocco nella parte finale del file, ovvero ogni file è costituito da 0 o più blocchi logici e da un frammento finale.

  • directory: tabella che associa nomi arbitrari agli inode.

L'inode costituisce il tramite per l'accesso ai dati di ciascun file memorizzati nei "data blocks"; la sua struttura è tale da conciliare due esigenze opposte: garantire un accesso veloce ai dati e consentire la gestione di files di dimensioni estremamante variabili. A tale scopo ogni inode contiene una tabella di 15 puntatori, i primi 12 sono i puntatori "diretti", ciascuno di essi contiene l'indirizzo di un blocco di dati appartenente al file. Ciò non significa che i files possono essere al massimo costituiti da 12 blocchi, infatti il 13o puntatore, è il puntatore indiretto di primo livello, ovvero esso punta ad un blocco di puntatori, ciascuno dei quali a sua volta contiene l'indirizzo di un blocco di dati. Il 14o puntatore è il puntatore indiretto di secondo livello, ovvero punta ad un blocco che contiene puntatori ad altri blocchi che a loro volta contengono gli indirizzi dei blocchi di dati. Il 15o puntatore, infine, realizza un ulteriore livello ovvero punta ad un blocco contenente una tabella di blocchi che contengono puntatori ad una lista di blocchi di puntatori ai dati.

Figura 1: struttura dell'inode

In tal modo se un file è composto da non più di 13 blocchi, l'accesso ai dati richiede una sola operazione, files di maggiori dimensioni richiedono due operazioni, etc.

Oltre alla tabella descritta l'inode contiene altre informazioni relative alla gestione del file, quali ad esempio: la data di creazione, la data di ultimo accesso, l'identificatore di proprietà, etc.

Allo scopo di consentire l'identificazione dei files mediante nomi scelti arbitrariamente, vengono create le directory, ovvero tabelle che associano una stringa alfanumerica (ovvero un "nome") ad ogni inode. Le directory sono memorizzate in normali files allocati con le stesse tecniche dei files di dati. In ogni directory vengono creati automaticamente due nomi di files speciali: '.', associato all'inode del file che contiene la directory stessa; '..', associato all'inode della directory che contiene il nome della directory stessa (padre).

Una conseguenza della struttura delle directory descritta e che costituisce una caratteristica peculiare dei file system dei sistemi Unix è che un inode può essere associato a più di un nome in directory diverse, ovvero ciascun file può essere accessibile con più nomi e path diversi. Per questo motivo la cancellazione di un file non necessariamente corrisponde alla deallocazione del relativo inoide e dei blocchi di dati, in quanto quest'ultima avviene solo quando viene cancellato l'ultimo riferimento al file.

Il filesystem FAT

La struttura del filesystem classico dei sistemi DOS, che permane anche nei sistemi Windows 95/98/NT (ma windows NT supporta anche un diverso tipo di filesystem: NTFS) viene chiamata FAT dal nome della sua componente principale. La FAT32 costituisce una variante a 32 bit introdotta con la release 2 di Windows 95 con lo scopo principale di consentire la gestione di partizioni di dimensioni maggiori di 2 Gbytes.

Il filesystem è costituito da quattro componenti:

  • FAT: File Allocation Table o Tabella di allocazione dei blocchi (vedi sotto).

  • Root directory: La directory di livello gerarchico più elevato (radice).

  • Clusters: i blocchi contenenti i dati dei files.

  • Sottodirectory: Le directory di livello inferiore alla radice.

La FAT è la struttura principale che consente l'accesso ai dati relativi a ciascun file. È costituita da una tabella utilizzata come lista (linked list): la posizione di ogni elemento nella tabella identifica il cluster di dati corrispondente, mentre il valore contenuto nell'elemento è l'indice dell'elemento successivo facente parte dello stesso file. Due valori particolari indicano il cluster libero e l'ultimo cluster di ogni file.

Figura 2: File Allocation Table

Nell'esempio di Figura 2, il file File A è composto, nell'ordine, dai cluster 3, 7, 4, 2 mentre il file File B dai cluster 5, 9, 10. Le directory nel filesystem FAT sono memorizzate in files (tranne la radice che viene memorizzata nella struttura del filesystem insieme alla FAT). Ogni directory è in sostanza una tabella contenente le seguenti informazioni:

    • Nome del file (11 caratteri)
    • Attributi
    • Data e ora
    • Puntatore al primo elemento nella FAT
    • Dimensione del file

Nei sistemi Windows 95/98/NT vengono inoltre utilizzate ulteriori elementi della tabella per memorizzare le versioni estese dei nomi dei files (nomi lunghi).

Limitazioni del filesystem FAT

Poiché gli elementi della FAT sono di lunghezza fissa, pari a 16 bits, non è possibile indirizzare più di 65535 clusters e poiché un cluster non può essere maggiore di 32768 bytes, il filesystem ha un limite massimo superiore di 2 Gbytes per la dimensione della partizione. La dimensione del cluster (che deve essere un multiplo intero della dimensione del blocco fisico con moltiplicatore pari ad una potenza di due) viene scelta pari alla minima dimensione che consenta un numero di cluster non superiore a 65535 ed è fissata al momento della formattazione.

Quindi, poiché il filesystem non è in grado di gestire la frammentazione di clusters, come invece abvviene nel filesystem ext2, all'aumentare della dimensione delle partizioni corrisponde una dimensione del cluster maggiore e di conseguenza una sempre minore efficienza di uso dello spazio, in quanto l'ultimo cluster di ogni file è in genere solo parzialmente utilizzato (in media resta inutilizzato uno spazio pari alla metà della dimensione del cluster per ogni file).

Le due limitazioni citate hanno portato all'introduzione, a partire dalla seconda release del sistema operativo Windows 95 (e in quelli successivi), della versione a 32 bit della FAT (FAT32) che sostanzialmente mantiene la stessa struttura, ma utilizza elementi a 32 bit, anziché a 16, consentendo di definire cluster non superiori a 4 Kbytes anche per dischi di grandi dimensioni.