Desktop fileLa verità sulla deframmentazione

Wes Miller

La frammentazione del disco esiste da quando sono nati i dischi rigidi. Se si è preoccupati per il proprio sistema, è opportuno deframmentarlo regolarmente. Ciò probabilmente ricorda la tipica conversazione annuale con il dentista sull'uso del filo interdentale: bene, la deframmentazione è altrettanto importante.

A meno che non si tenga il computer sempre spento in un angolo, la frammentazione aumenta giorno per giorno. Fra un attimo si vedrà perché, ma prima è opportuno esaminare rapidamente la storia della deframmentazione.

Deframmentazione e Windows NT

Windows NT® non includeva un'utilità di deframmentazione incorporata che peraltro, secondo l'opinione del periodo, non era ritenuta necessaria. Dopotutto, NTFS era stato creato nell'obiettivo dell'ottimizzazione e non era vulnerabile alla frammentazione nella stessa misura di un volume FAT paragonabile. Ma, con il tempo, anche le prestazioni di NTFS possono risentire del posizionamento non ottimale dei file. Da questa situazione si è sviluppato un mercato fiorente di strumenti di deframmentazione di terze parti. Uno dei prodotti più popolari fra i professionisti IT era Diskeeper di Executive Software (oggi Diskeeper Corporation). Quando Windows 2000 ha integrato la funzionalità di deframmentazione, Microsoft ha ottenuto in licenza la tecnologia di Executive Software. In Windows® 2000 la funzionalità di deframmentazione era disponibile nello snap-in integrato Microsoft® Management Console (dfrg.msc), che poteva essere richiamato facendo clic su un volume o eseguendo manualmente defrag.exe dalla riga di comando. Benché non esistesse alcuna pianificazione e si potesse utilizzare solo una riga di comando con vincoli, molti professionisti IT hanno creato script funzionali per automatizzare la deframmentazione ricorrendo a tale versione incorporata. Defrag.exe in Windows XP e Windows Server® 2003 ha apportato un certo miglioramento alla versione precedente, ma offriva solo un'automazione limitata: era ancora necessario creare degli script.

Alcuni fornitori, incluso Winternals Software (il mio datore di lavoro precedente), producevano software per lo spazio di deframmentazione delle aziende. La maggior parte di questi prodotti funziona allo stesso modo, con una console centralizzata, un agente di qualche genere che risiede sui sistemi client (a volte in permanenza, altre volte solo su richiesta) e una struttura per determinare quando e come eseguire un'attività di deframmentazione.

Windows Vista® tende a continuare la tendenza di deframmentazione dei sistemi singoli, pur ottimizzando l'utilità e aggiungendo opzioni quali la deframmentazione dei piccoli frammenti dei file (di 64 MB o meno), che accelera il processo ma lascia molti frammenti di file più grandi sparsi sul disco. Lo stesso motore di deframmentazione è più potente in Windows Vista e Windows Server 2008 che nelle precedenti versioni di Windows. Inoltre viene eseguito automaticamente e non richiede pianificazione manuale. Ma se si gestisce una grande organizzazione e si desidera ottimizzare i sistemi in modalità diverse da quelle predefinite, può ancora essere necessario ottenere la licenza di software di terze parti. E, come nelle versioni precedenti, può risultare difficile deframmentare un volume in cui la compressione NTFS è abilitata e largamente utilizzata. Anche in questo scenario, potrebbe essere utile uno strumento di terze parti.

Come mai si verifica la frammentazione?

La frammentazione è dovuta al fatto che i file tendono a cambiare nel tempo. In linea di principio, i file di Windows di per sé non cambiano. O almeno non cambiano molto spesso: in effetti, ciò accade solo con le installazioni dei service pack e degli aggiornamenti software. Altrimenti i file di sistema rimangono abbastanza costanti. Dopo un aggiornamento di grandi proporzioni, come ad esempio l'installazione di un service pack, la frammentazione si verifica naturalmente, poiché i file che vengono aggiornati di solito non possono essere sovrascritti nelle posizioni che occupano sul disco (e potrebbe essere necessario un riavvio per aggiornali), il che determina un'ulteriore frammentazione.

D'altra parte i file e i dati dell'utente (nonché il Registro di sistema di Windows) sono soggetti a modifica costante. Operazioni continue di lettura, scrittura, modifica, copia ed eliminazione di file causano una notevole frammentazione, soprattutto quando la capacità dell'unità è esaurita.

Per visualizzare questa situazione, si pensi a un disco perfettamente ordinato, nel quale i file occupano lo spazio in modo contiguo, senza vuoti fra loro. Si supponga di aprire un file e modificarlo, quindi di cercare di salvarlo. Se le dimensioni del file sono aumentate, Windows deve salvare il file nel suo complesso in un'altra posizione del disco (ad esempio dopo il file N) oppure memorizzare i dati più recenti dopo il file N. Ciò significa che il file 2 ora è frammentato. Se a questo punto il file 1 viene modificato, si avranno due file frammentati. Ripetendo tali operazioni nel tempo, alla fine il sistema diventa molto frammentato, al punto che l'unità deve eseguire ricerche in varie posizioni per accedere a un file singolo. Con i grandi file di database, i file estesi dei dischi rigidi per le tecnologie di elaborazione virtuali e le abbondanti quantità di contenuti audio e video memorizzati su dischi di medie dimensioni, la frammentazione è abbastanza comune. Ovviamente, le dimensioni sempre maggiori dei dischi rigidi attuali rendono la frammentazione un problema meno importante, ma non lo risolvono. Inoltre i computer portatili meno recenti con dischi rigidi più piccoli perdono progressivamente sensibilità, diventano più lenti da avviare e richiedono più tempo per l'apertura e il salvataggio dei file.

L'aspetto chiave non è necessariamente il grado di frammentazione del sistema, ma quello dei singoli file. Da quando le prime utilità di deframmentazione si sono presentate sulla scena con elementi visivi multicolori, gli utenti li hanno esaminati e hanno pensato: "Voglio una barra di un solo colore". Ma in realtà questa è l'ultima cosa da desiderare. Alcuni prodotti cercano di mostrare i dischi come due blocchi: uno colorato (dati dei file) e l'altro solitamente bianco (spazio libero). Purtroppo, imporre una divisione di questo tipo è la cosa peggiore per un disco, se l'intenzione è ridurre al minimo la frequenza e il costo della deframmentazione. Se tutti i file dei dati sono stati compressi in modo aggressivo nella zona anteriore del disco, rimuovendo gran parte dello spazio libero, quando si modifica ulteriormente un file, le modifiche vengono scritte alla fine dei dati del file. Pertanto una deframmentazione di questo tipo in realtà è causa di frammentazione, a partire dalla successiva modifica del file. Anziché due blocchi di dati dei file organizzati con ordine, una buona deframmentazione crea un'immagine non necessariamente perfetta. Per un esempio, vedere la Figura 1 per il sistema di prova, prima della deframmentazione. Osservare quindi la Figura 2, in cui viene illustrato lo stesso sistema dopo che la deframmentazione di Windows è stata completata.

Figura 1 L'unità prima della deframmentazione

Figura 1** L'unità prima della deframmentazione **(Fare clic sull'immagine per ingrandirla)

Figura 2 L'unità dopo la deframmentazione

Figura 2** L'unità dopo la deframmentazione **(Fare clic sull'immagine per ingrandirla)

È importante notare che in Windows non ci si concentra sulla frammentazione dei file attraverso il disco, ma su quella dei file singoli (vedere la Figura 3 per la sezione del rapporto di deframmentazione sui file più frammentati, prima che il sistema venisse deframmentato).

Figura 3 Rapporto di deframmentazione

Figura 3** Rapporto di deframmentazione **

Di conseguenza, anche dopo la deframmentazione, in Windows non sarà visibile una serie completamente compattata di dati dei file, nella zona anteriore del disco. Si noti inoltre l'ampia sezione di dati verdi nelle Figure 1 e 2. Si tratta del file di paging di Windows, che verrà descritto fra breve. Se nel sistema Windows in uso è abilitata la sospensione, il file di paging avrà un aspetto analogo in una deframmentazione.

Una deframmentazione regolare è essenziale

Come nel caso della pulizia dei denti con il filo interdentale, è determinante ricordarsi di procedere alla deframmentazione con periodicità. Diventa anche più importante eseguire la deframmentazione frequentemente nei sistemi a utilizzo intensivo come i server, poiché se si attende, il processo potrebbe richiedere troppo tempo e lasciare il server non disponibile o impossibilitato a rispondere (in quanto può essere necessario molto tempo e certe fasi, inoltre, potrebbero imporre un carico di elaborazione elevato sulla CPU).

Persino le migliori utilità di deframmentazione in linea non sono in grado di deframmentare tutto. Ad esempio, non è sempre possibile deframmentare i file aperti o bloccati (ad esempio il file di paging o quelli del Registro di sistema) ed è necessario aggirare il file di sospensione, se esistente (che presenta dimensioni equivalenti a quelle della RAM in uso nel sistema). Per sapere come ottimizzare i file bloccati, vedere la sezione successiva sui trucchi di deframmentazione.

È sicuramente importante distinguere i miti dai fatti associati alla deframmentazione. La Figura 4 e la Figura 5 elencano alcuni argomenti comuni nelle discussioni sulla deframmentazione e spiegano le possibilità concrete che si verifichino tali problemi.

Figure 5 Miti sulla deframmentazione

Mito Probabilità
I sistemi si arresteranno. Improbabile: l'arresto del sistema normalmente avviene a causa di problemi hardware o dei driver (danneggiamento della memoria, problemi di surriscaldamento che provocano il riavvio, guasto del disco dovuto ad abuso termico).
Le applicazioni si arresteranno. Improbabile: come nel caso di un intero sistema, un'applicazione progettata correttamente non dovrebbe arrestarsi per effetto della frammentazione; pertanto, a meno che non si stabilisca con certezza che la frammentazione è la causa del malfunzionamento, si dovrebbero evitare supposizioni in tal senso.
Il Registro di sistema verrà danneggiato. Improbabile (vedere sopra): la frammentazione non causa o conduce al danneggiamento del Registro di sistema.
La deframmentazione, una volta completata, dovrebbe corrispondere a una barra uniforme in qualsiasi rappresentazione visiva del disco. Improbabile: è preferibile non raggruppare troppo tutti i file nel sistema, a meno che non si stia pianificando specificamente di creare un'immagine del sistema con un apposito strumento, basato sui settori, che non esclude lo spazio libero o riduce o divide le partizioni. È necessario spostare i file nella zona anteriore del disco; in caso contrario, un consolidamento del file aggressivo crea soltanto un'ulteriore frammentazione.
   

Figure 4 Comuni preoccupazioni sulla deframmentazione

Preoccupazione Probabilità
Le prestazioni del sistema risultano compromesse. Elevata: dipende specificamente dall'uso del sistema.
Potrebbe diventare difficile o impossibile ripristinare i file eliminati involontariamente. Elevata: la maggior parte degli strumenti di ripristino dipende dall'euristica (per stabilire il tipo di dati) e dalla prossimità dei cluster di file. I file dispersi rendono le operazioni di ripristino più complesse o impossibili.
Deframmentare il sistema sarà costoso. Media: esiste una correlazione diretta fra quanto il sistema viene utilizzato e quanto cambiano i file nel sistema, nel tempo. Se gli utenti apportano numerose modifiche ai file ma li salvano solo nelle condivisioni del server, ad esempio, non si verifica una notevole degradazione nel tempo.
Si vericheranno guasti del disco. Bassa: non realmente probabile. Di nuovo, la probabilità aumenta in caso di abuso del sistema (se lo si lascia acceso con i dischi sempre alimentati e vengono modificati o eliminati file di continuo). Tuttavia, con l'hardware attuale, ciò non dovrebbe accadere se ci si limita a modificare i file.
   

Deframmentazione come parte dell'infrastruttura

È opportuno considerare seriamente l'esecuzione di un'utilità di deframmentazione a intervalli regolari su tutti i sistemi utilizzati. È possibile scegliere se ricorrere all'utilità di deframmentazione integrata in Windows oppure cercare opzioni di terze parti. Il criterio di scelta è fondamentalmente l'entità del lavoro preparatorio che si è disposti a sostenere. In Windows XP e nelle versioni successive è possibile semplicemente aggiungere defrag.exe come attività pianificata. Per ulteriori informazioni sulla procedura, vedere l'articolo della Knowledge Base all'indirizzo support.microsoft.com/kb/555098. Si noti che la deframmentazione dei computer portatili implica alcune considerazioni particolari. Ad esempio, si supponga di voler deframmentare il sistema di un utente mentre è acceso, preferibilmente tramite l'alimentazione CA, ma senza impegnare cicli del disco o della CPU quando un utente mobile cerca di lavorare. Purtroppo, tuttavia, quando un utente mobile non lavora, è probabile che il sistema sia scollegato dall'alimentazione CA e si trovi in modalità stand-by o sospensione (ovvero sia spento, dal punto di vista del risparmio energia e delle attività pianificate). A Winternals (come probabilmente ovunque), è stato dedicato molto tempo al tentativo di progettare lo scenario ideale per gli utenti mobili. Windows Vista, una soluzione che presenta un'utilità di deframmentazione integrata, ricorre alle attività pianificate ed è molto più attenta al consumo delle versioni precedenti, sembra una scelta più che soddisfacente. In caso contrario, potrebbe essere necessaria una soluzione di terze parti concepita per i sistemi mobili. Alcuni di questi prodotti avviano effettivamente un'attività di deframmentazione, informano gli utenti sul fatto che è stata eseguita, quando (e con quale frequenza) e quanto tempo ha richiesto.

Oltre agli scenari mobili, può essere importante considerare la frammentazione del file system. Di solito questo aspetto non richiede attenzione nei sistemi desktop o mobili, ma con i server, Microsoft Exchange, SQL ServerTM o altri archivi dati potrebbe essere necessario procedere alla deframmentazione. In tali casi si dovrà decidere se effettuarla prima o dopo aver deframmentato il file system.

Se si ricorre a un'utilità di deframmentazione di terze parti, è consigliabile assicurarsi che venga utilizzata l'API di deframmentazione di Windows. A partire da Windows NT 4.0, nel sistema operativo è inclusa un'API di deframmentazione, al fine di prevenire la perdita improvvisa dei dati. Ad esempio, se durante il trasferimento di un file il computer si blocca per un'interruzione di alimentazione, è essenziale evitare uno spostamento dei frammenti incompleto, che potrebbe causare la perdita di dati e persino rendere impossibile l'avvio del sistema.

Infine, se si utilizza una tecnologia di elaborazione virtuale, è opportuno considerare come gestire anche la deframmentazione dei dischi virtuali. Questi ultimi sono soggetti alla frammentazione proprio come i dischi fisici, anzi in molti casi anche in misura maggiore, a causa dei vincoli dimensionali. Inoltre, se la soluzione di virtualizzazione in uso consente di ridurre dischi o partizioni, per liberare spazio può essere necessario eseguire una deframmentazione preliminare (o, come minimo, limitare il tempo richiesto da un'operazione di riduzione).

Strumenti aggiuntivi

A questo punto, è evidente che la deframmentazione è una funzione utile e importante. Anche se non si ricorre a un'utilità di terze parti per la deframmentazione vera e propria, può essere opportuno considerare uno strumento di Mark Russinovich denominato PageDefrag, disponibile presso il sito degli strumenti Sysinternals di Microsoft (vedere microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx). Come si è detto in precedenza, non è possibile deframmentare il file di paging di Windows mentre il sistema operativo è in linea. In realtà, ciò riguarda anche i file del Registro di sistema di Windows e i registri eventi. PageDefrag consente di deframmentare questi file prima che Windows abbia completato l'avvio e li abbia bloccati, grazie a un piccolo driver. Per utilizzarlo, è sufficiente eseguire PageDefrag e impostarlo per l'esecuzione al riavvio successivo o ad ogni riavvio. Quando il sistema si riavvia (nel punto del processo di avvio in cui in precedenza si potrebbe aver notato l'esecuzione di una verifica del disco), i file specificati nell'elenco vengono deframmentati (vedere la Figura 6).

Figura 6 File da deframmentare in PageDefrag

Figura 6** File da deframmentare in PageDefrag **

Quando PageDefrag ha completato l'operazione, il processo di avvio viene concluso normalmente dal sistema. Se si desiderano ulteriori informazioni su PageDefrag, Lance Whitney ne ha parlato nell'installazione di settembre di Utilità in primo piano (vedere technetmagazine.com/issues/2007/09/UtilitySpotlight). Si noti che PageDefrag è supportato in Windows NT 4.0, Windows 2000, Windows XP e Windows Server 2003, ma attualmente non in Windows Vista.

Oltre a PageDefrag, è disponibile un altro strumento di Sysinternals, denominato Contig, che consente di deframmentare manualmente un file specifico (vedere microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx). Contig può essere utile se non è stato possibile deframmentare un file specifico mediante una normale attività di deframmentazione oppure se un file è diventato frammentato in un momento successivo (ma la parte rimanente del volume non è altrettanto frammentata).

Inoltre Contig è in grado di deframmentare un'intera directory o varie sottodirectory, se si utilizzano caratteri jolly. Il codice seguente permette di deframmentare tutti i file nella directory di Windows, indipendentemente dalla loro posizione.

Contig –s c:\Windows\*.*

Applicando l'opzione -v la procedura viene riportata in modo dettagliato, con l'opzione -q l'esecuzione si mantiene sullo sfondo.

Wes Miller è un responsabile dello sviluppo presso Pluck (www.pluck.com), Austin (Texas). In precedenza, ha lavorato per Winternals Software ad Austin e in Microsoft come Program Manager e Product Manager di Windows. È possibile contattarlo all'indirizzo technet@getwired.com.

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.