# Master File Table

La Master File Table (nota in sigla come MFT) è un importante componente del file system NTFS, contenente le chiavi (metadati) che definiscono un volume NTFS.
Essa è il luogo in cui sono registrate le informazioni su ogni file e directory di un volume formattato come NTFS.

## Caratteristiche

In modo analogo alle tabelle di un database relazionale, la MFT contiene in sostanza vari attributi relativi ai vari file. Essa agisce come "punto di partenza" e funziona come il gestore centrale di un volume NTFS, una sorta di "indice" del volume. È analoga alla File Allocation Table dei file in una partizione FAT, ma è molto più di un semplice elenco dei cluster usati e disponibili.
I primi 16 record della MFT sono sempre riservati per i metadati del volume stesso.
La MFT è l'elemento principale di una partizione NTFS, (il nome esatto è "$MFT"), e contiene, come abbiamo detto, l'elenco di tutti i file memorizzati su disco. Questo elenco viene memorizzato in forma di una serie di registrazioni, alla maniera di un database. Quando un file viene eliminato, il record che lo descrive è contrassegnato come libero, può quindi essere riutilizzato quando si crea un nuovo file, ma il record eliminato nella tabella non elimina a livello fisico il file su disco. Pertanto, il file MFT continua a crescere come e quanto l'utilizzo del disco.
MFT (in combinazione con il file $Bitmap, vedere sotto) sostituisce il precedente sistema DIR su file system FAT del vecchio MS-DOS (FAT12, FAT16 o FAT32). C'è un record nella MFT per ogni file sul disco, in cui troviamo le seguenti informazioni:
* Nome lungo del file.
* Nome in formato 8.3.
* Index (numero del file).
* Dimensioni dei file.
* Data e ora di creazione / modifica / accesso.
* Gli attributi del file.
* I diritti di accesso (vedi Access Control List)
* Elenco dei blocchi (cluster) contenente il file.
File di piccole dimensioni (da 700 a 800 byte, a seconda della lunghezza del nome), sono direttamente memorizzati nella MFT piuttosto che in un settore del disco, utilizzando il segnaposto per la lista dei blocchi. Questo limita la perdita di spazio su disco per file di piccole dimensioni.
Un blocco del disco di 4 KB contiene 4 record MFT.
C'è una copia della MFT per consentire il ripristino di una partizione il cui MFT è danneggiato (il nome del file è $MFTMirr).
La MFT è usata in coordinamento con il file $Bitmap che contiene indicatori di occupazione di ogni blocco della partizione.

## File $BitMap

$BitMap è un file speciale contenuto all'interno di NTFS. Questo file tiene traccia di tutti cluster usati e non, all'interno del volume formattato con NTFS. Quando un file occupa spazio nel volume NTFS la posizione occupata (in termini di spazio non di coordinate) è segnata all'interno di questo file.
Il metodo utilizzato da $BitMap per tenere traccia dei cluster allocati da un file è molto semplice. Ciascun bit all'interno del file $BitMap rappresenta un cluster. Se il bit ha valore "1" allora il cluster è in uso. Esempio: se un byte in $BitMap è segnato "F" (hex), significa che 4 cluster sono in uso F (hex) = 1111 binario.
Quando un file è eliminato il/i cluster ritornano non-allocati e di conseguenza il/i bit corrispondenti ritornano a valore "0". Se per esempio abbiamo 8 cluster consecutivi occupati da diversi files, FF, e uno di questi file, che occupava solo un cluster, viene eliminato, il file $BitMap si aggiornerà da FF a 7F che corrisponderà al valore binario 01111111.