Diminuire la frammentazione di un volume NTFS

 

Con l’aumentare della capacità dei dischi fissi aumenta di conseguenza anche la frammentazione dei files che ci costringe a deframmentare spesso il disco per non incorrere in rallentamenti del sistema. Per migliorare la situazione possiamo sfruttare il parametro ContigFileAllocSize nel Registro di Windows.

Per capire il funzionamento di questo parametro introduciamo alcuni concetti fondamentali.

Un disco per poter contenere dei dati deve essere formattato, operazione che consiste nella creazione di una struttura logica destinata a contenere i dati.

In fase di formattazione il disco viene diviso in tracce concentriche e ogni traccia viene poi suddivisa in settori. Più settori contigui vengono raggruppati per formare un cluster.

Il cluster è la più piccola unità logica che può essere allocata per contenere un file.

La dimensione di un cluster, espessa in KB, varia a seconda del tipo di partizione (FAT, FAT32, NTFS) e della dimensione della partizione. In condizioni normali, cioè per partizioni NTFS fino a 16 TB, la dimensione standard per un cluster è 4 KB.

Per un dettaglio delle dimensioni predefinite dei cluster potete consultare questo link.

Quando un file viene scritto su disco vengono usati un numero intero di cluster. Se la lunghezza del file è un multiplo esatto della dimensione del cluster lo spazio usato sarà esattamente pari alla dimensione del file viceversa l’ultimo cluster occupato non sarà pieno e la parte vuota comporterà una perdita di spazio non recuperabile. Più la dimensione del cluster è grande maggiore sarà lo spazio sprecato.

Per questo motivo la scelta della dimensione del cluster è funzione del tipo di files che verranno salvati nella partizione. Ad esempio per un volume destinato a contenere solo le immagini di macchine virtualizzate conviene scegliere la dimensione del cluster più grande possibile mentre se il volume è destinato a contenere file piccolissimi allora conviene utilizzare cluster piccoli.

Detto questo introduciamo il concetto di frammentazione. Quando un file viene scritto in uno spazio vuoto sufficientemente grande per contenerlo tutto vengono utilizzati cluster contigui, ma se lo spazio non è sufficientemente grande o il file viene successivamente modificato verrà scritto su più cluster non contigui.

Questo fenomeno da origine alla frammentazione e conseguentemente a un degrado delle prestazioni essendo necessari più spostamenti della testina del disco per accedere ai files.

Il modo più semplice per risolvere questo problema è quello di deframmentare il disco, operazione che consente di spostare i dati in modo che ogni files sia salvato in un gruppo contiguo di cluster.

Un altro metodo per diminuire il livello di frammentazione è quello di modificare un parametro nel Registro di sistema che indica la dimensione minima, di un gruppo di cluster contigui vuoti, che Windows cerca ogni volta che deve scrivere un nuovo files.

La chiave in questione si chiama ContigFileAllocSize e si trova all’interno del percorso:

HKLM/System/CurrentControlSet/Control/Session Manager/Memory Management

 

Se non esiste dovete crearla di tipo DWORD e impostarne il valore, in decimale, a 512, 1024, 2048, 4096 a seconda dell’utilizzo che ne fate del disco. Un valore medio è 2.048 KB.

Una volta impostato il valore riavviate la macchina e lanciate una deframmentazione del disco. Operazione che risulterà sicuramente più veloce del normale.

Impostando il parametro a 2.048 KB ad esempio, Windows cercerà un blocco contiguo di spazio libero di almeno 2 MB ogni volta che dovrà scrivere un file.

L’effetto collaterale di questa modifica potrebbe essere quello che Windows non riesce a trovare un blocco contiguo libero della dimensione impostata e conseguentemente restituirà un errore di spazio su disco insufficiente. Con le dimensioni attuali dei dischi rigidi questo evento è comunque molto improbabile.

Una risposta a “Diminuire la frammentazione di un volume NTFS”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *