Master File Table
La Master File Table (nota in sigla come MFT) è probabilmente la più importante delle chiavi (metadati) che definiscono un volume NTFS.
Il Master File Table o MFT è il luogo in cui sono registrate le informazioni su ogni file e directory di un volume formattato come NTFS. La MFT è, in sostanza, un database relazionale, contenente vari attributi relativi ai vari file. Agisce come "punto di partenza" e funziona come il gestore centrale di un volume NTFS, una sorta di "tavola dei contenuti" per il volume. È analogo al 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 dell'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 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 l'attuale sistema DIR su file system FAT vecchio MS-DOS (FAT12, FAT16 o FAT32). C'è un record nella MFT per ogni file sul disco, 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 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 di 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 1111111.