Frammentazione nei sistemi Linux

11 01 2008

I moderni file system utilizzati dai sistemi GNU/Linux godono di una buona reputazione poiché gestiscono i dischi in modo ottimale minimizzando la frammentazione dei file e il rischio della loro compromissione grazie all’uso del journaling. Si dice spesso che con Linux la frammentazione sia minima anche dopo diversi anni di utilizzo del disco fisso su cui è installato il sistema operativo. Questa affermazione mi ha sempre incuriosito poiché mi chiedevo come fosse possibile che dopo qualche anno i file non si frammentassero così come avviene con Windows il cui file system predefinito, NTFS, nonostante le sue buone qualità in alcuni frangenti, è noto per le scarse performance in ambito di allocazione ottimale dei file il che costringe a frequenti deframmentazioni del disco che alleviano la pena ma non la eliminano alla radice😉

Così, dopo qualche ricerca su google (GIYF) ho trovato un piccolo programmino scritto in perl che è in grado di calcolare la frammentazione dei file residenti su una particolare partizione o directory.

Questo script utilizza il semplice comando shell filefrag che conta il numero di frammenti di cui è composto un particolare file, e la cui sintassi è la seguente (richiede i permessi di root):

$ sudo filefrag percorsoDelFile

Utilizzando all’interno di un ciclo questo comando, il programma in perl è quindi in grado di calcolare i frammenti per ogni file e alla fine della sua scansione genera un piccolo report sulla frammentazione media del partizione su cui è stato lanciato. I crediti del codice vanno attribuiti interamente all’utente _droop_ e ai suoi contributori del forum di Gentoo.
Potete vedere il codice o direttamente sul forum (link) o su pastebin dove l’ho copiato per una migliore visualizzazione.

Per utilizzarlo dovete seguire questa semplice procedura:

  1. Copia/incolla del codice su vostro editor di fiducia
  2. salvate il file con un nome autoesplicativo, tipo frag.pl (occhio all’estensione pl)
  3. cambiate i permessi al file per renderlo eseguibile
    $ chmod 750 frag.pl
  4. lanciatelo con il comando (con i permessi di root)
    $ sudo ./frag.pl parametro
    ove parametro può essere una partizione del disco od una qualsiasi directory

Ad esempio se volete sapere lo stato di frammentazione della vostra partizione home lanciate

$ sudo ./frag.pl /home/paso/

Sulla mia linux-box, configurata con kubuntu 7.04 (aggiornata dalla 6.10) e con età della partizione home di circa 16 mesi ottengo questi risultati:

15.0071326676177% non contiguous files, 2.08228245363766 average fragments.

Analizziamo il risultato. 15.00% indica la percentuale dei file sulla partizione che sono frammentati (ovvero che non consistono in un solo blocco continuo, da cui il termine non contiguous), mentre 2.08 indica mediamente di quanti frammenti è composto un file.
Interpretazione: sebbene ad una prima occhiata il valore 15% sembra alto dobbiamo dare maggior peso al secondo numero, infatti esso ci dice che nella media i miei file sono frammentati in soli 2 blocchi. Il che, se ci pensate, è un valore estremamente basso! e tenete conto che nella mia partizione home c’è di tutto, compresi file di grosse dimensioni scaricati via torrent e via p2p! si vede proprio che ext3 spacca alla grande!😎

se lo eseguo sulla partizione di root i risultati sono ancora più sorprendenti (attenzione: l’operazione può richiedere qualche minuto, nel mio caso 3)

$ sudo ./frag.pl /

2.85402065471814% non contiguous files, 1.10098686651332 average fragments.

praticamente è come se nessun file fosse frammentato (la media è 1,1!) that’s incredible🙂

Naturalmente se eseguito nella sola cartella contenente file scaricati da Internet, dai p2p e dai torrents troverete valori a dir poco imbarazzanti che per non scandalizzare il pubblico evito di pubblicare😛

Ora la domanda più spontanea è: come posso deframmentare le partizioni linux?
Cercherò di darvi una risposta in un prossimo post (con valore di prossimo compreso tra 1 ed ∞).


Azioni

Information

7 responses

11 01 2008
Lazza

Ti ricordo che la deframmentazione su Linux è sconsigliata.😉

11 01 2008
Paso

si ne avevo già sentito parlare ma sinceramente non ne conosco le ragioni, anzi se hai qualche link o ne sai di più mi faresti un piacere se mi informassi.
Ad ogni modo quello che al momento ho trovato, ma che devo ancora mettere per iscritto, è una deframmentazione “particolare”. Infatti lo si può considerare quasi un trucchetto per ovviare al problema dei frammenti…
Appena trovo il tempo faccio il post🙂
Ciao

12 01 2008
Lore

Ma il “checking root filesystem” che di tanto in tanto si lancia prima dell’avvio del DE è necessario? Non so a voi, ma a me il checking parte ogni trenta/quaranta avvii del computer.

12 01 2008
Paso

Si, solitamente di default è impostato il check ogni 30 mount. Si può cambiare il valore, ma ad ogni modo è meglio lasciarlo tranquillo, alla fine non ci impiega nemmeno tanto (sul mio pc con 2 dischi ci mette si e no 2 minuti).
Bye

25 01 2008
Deframmentazione su Linux « Paso’s BloG

[…] su Linux 25 01 2008 Nell’articolo di qualche giorno fa intitolato Frammentazione nei sistemi Linux, vi ho introdotto nell’argomento del file system dei sistemi operativi GNU/Linux, i quali […]

25 01 2008
Giulio

Ciao il “checking root filesystem” è solo una misura cautelativa, non è necessario per un motivo molto banale: Ext3 è un filesystem dotato di journal (almeno in molte delle versioni attualmente disponibili), quindi il check è in grado di eseguirlo in automatico in caso di necessita senza schedularlo (come invece in molte distribuzioni viene fatto sul numero di riavvii, di solito 33).
L’esecuzione programmatica non porta grandi migliorie effettive sul sistema ma può prevenire situazioni di inconsistenza dei dati (che verrebbero comunque rilevate e gestite allo stesso modo nel momento in cui venissero riscontrate).

1 10 2009
roberto

Dalla versione 9.10 di ubuntu con ext4 di default dovrebbe essere introdotto l’aggiornamento on line dei file🙂 E qndi risolto ogni possibile problema di deframmentazione :-p

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




%d blogger cliccano Mi Piace per questo: