Deframmentazione 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 godono di un’ottima reputazione in quanto riescono a mantenere i file poco frammentati anche dopo anni di uso intenso (nel mio post trovate anche alcuni valori interessanti). Inoltre vi ho proposto un pratico script per verificare lo stato di frammentazione delle Vostre partizioni sul disco fisso.

Ci eravamo lasciati con la domanda aperta di come sia possibile deframmentare le partizioni così come avviene normalmente sui sistemi Windows. Vi dico subito che dare la giusta risposta non è così semplice.

Innanzitutto va detto che la deframmentazione dei file system usati dai sistemi GNU/Linux è una pratica quasi mai utilizzata se non addirittura sconsigliata: la manifestazione più banale di quanto detto è che non esiste nessun comando, nessun tool incluso di default nelle distribuzioni Linux, che sia in grado di fare questa attività.

Non posso di certo mettermi qua a dilungarmi su un argomento così inflazionato e discusso perché farei prima a scrivere una tesi intera piuttosto che spiegare nel dettaglio le logiche che stanno alla base del caro file system di Linux.
Ma è comunque interessante andare a spulciare qualche pagina interessante che si può trovare sulla Rete e vedere cosa si dice di interessante.

Per avere una semplice idea della differenza dei file system vi riporto questo paragrafo tratto dal sito OpenLinux.eu:

[…] Il metodo consiste in buona approssimazione nello scrivere ogni nuovo file nel più ampio spazio vuoto consecutivo disponibile sul file system, spazio che con alta probabilità riuscirà a contenerlo tutto, evitando quindi di spezzarlo in più frammenti. Addirittura quando lo spazio libero comincia a scarseggiare se non si trovano spazi vuoti sufficientemente grandi per scrivere un file senza spezzarlo in frammenti, certi filesystem compiono piccole riallocazioni per fare spazio a un nuovo file intero.

Windows d’altro canto non si preoccupa di queste problematiche, inizia a scrivere il file nella prima locazione libera senza preoccuparsi se poi questo viene frammentato […]

Se invece siete esigenti e volete una dimostrazione pratica del funzionamento pratico dei file system Linux vs Microsoft allora vi rimando a questo magnifico esempio pratico (in inglese, ma con tanto di immagini) a prova di niubbo:

why doesn’t linux need defragmentin?

Invece per prenderla con un tocco di sano umorismo la lettura che Vi consiglio è quella tratta dal sito Why Linux is Better (in italiano).

Sistemata la fase teorica arriviamo alle conclusioni:

Non è necessario, anzi non c’è nessuna convenienza a deframmentare le partizioni Linux a meno di situazioni particolari, come ad esempio quando lo spazio occupato supera l’80% del totale disponibile (ma in questo caso è sarebbe più conveniente fare un po’ di pulizia…). Ci sono alcuni software per il defrag, ma sono poco diffusi. Vi riporto i 2 software principali che ho trovato (altri non sono riuscito a trovarne, ma di sicuro ce ne saranno da qualche parte), ma sia chiaro, io non li ho provati e non ho nessuna intenzione di farlo perché non mi servono, così come al 99% non serviranno nemmeno a Voi, quindi non posso fare alcune recensione dei suddetti tools.


Azioni

Information

14 responses

25 01 2008
Paso

Spero di essere stato il più chiaro possibile🙂

@Lazza: dopo il tuo commento del post precendente, che ne pensi di questo articolo? direi che ho chiarificato la questione “è da fare/ è sconsigliato”😉

25 01 2008
no1globe

Bè diciamo che da quanto sono svogliato non me la sono manco chiesta sta cosa della deframmentazione😀 …. se Linux “puo’ far da se’ ” bè non mi complico la vita e non vado alla ricerca di programmi per deframmentare😉

25 01 2008
Paso

giusto!😀
meno scocciature abbiamo con la frammentazione, meno tempo perso, meno complicazioni!

25 01 2008
no1globe

@ Paso:😆 !LOL! 😆

25 01 2008
Lazza

@ Paso, ne sei uscito da signore. Ti stimo amico.😀

25 01 2008
Paso

grazie Andrea (mica posso sempre chiamarti Lazza)🙂

27 01 2008
La settimana in link #2 « Nicopi

[…] Deframmentazione su Linux Intel vuole un Linux più […]

28 01 2008
mamozzi

Posso segnalare il miglior programma per la deframmentazione sotto linux, e UNIX in generale?
http://groups.google.com/group/it.comp.os.linux.iniziare/msg/b3586cef9ca66831😉
Questo poi, in combinazione con lo script perl che segnali, adeguatamente modificato, oppure con due righe di bash usando direttamente filefrag, può essere fatto facilmente in automatico.
Ciao.

28 01 2008
mamozzi

Posso segnalare il miglior programma per la deframmentazione sotto linux, e UNIX in generale?
http://groups.google.com/group/it.comp.os.linux.iniziare/msg/b3586cef9ca66831😉
Questo poi, in combinazione con lo script perl che segnali, adeguatamente modificato, oppure con due righe di bash usando direttamente filefrag, può essere fatto facilmente in automatico.
Ciao.

28 01 2008
Lobotomia

@mamozzi: non è che sia dei più belli il metodo eh…

28 01 2008
Paso

@mammozzi:
Posso segnalare il miglior programma per la deframmentazione sotto linux, e UNIX in generale?
a parte il fatto che quoto lobotomia.. ma il tuo metodo non mi sembra che risponda alla voce deframmentazione ma semmai ad un banale cancella tutto e riscrivi. e oltretutto mi sembra anche leggermente dannoso cancellare tutta la /home e poi rimetterla su di nuovo…😐
adeguatamente modificato, oppure con due righe di bash usando direttamente filefrag
questa ce la devi spiegare: che cosa centra filefrag? questo comando serve per indicare il livello di frammentazione di un file, mica per deframmentare❓
Gradirei una tua delucidazione in merito🙂

@TUTTI: consiglio di prestare attenzione al link segnalato da mamozzi. Non seguitelo se non siete sicuri di quel che fate, o almeno informatevi.

28 01 2008
mamozzi

Ciao!
Spiego volentieri (mi diverto sempre ad affrontare questi argomenti ).😉
Ti rispondo punto punto, sperando di formattare bene.

l tuo metodo non mi sembra che risponda alla voce deframmentazione ma semmai ad un banale cancella tutto e riscrivi.

Beh, hai ragione e torto. Ragione nel senso che è un “banale cancella e riscrivi”, e torto nel senso che proprio per quel che dici di ext2/3 e per quel che si legge nel link in inglese questa è una deframmentazione.😉
N.B. Attenzione che cp -a non è lo stesso, ti perdi link e “file sparsi”.

mi sembra anche leggermente dannoso cancellare tutta la /home e poi rimetterla su di nuovo

No, su questo posso tranquillizzarti. Facendo così non tocchi l’UID nè altri attributi dei file. E tra l’altro la potenza di UNIX sta proprio in questi giochetti qui. Non ti è mai capitato di spostare la tua home su un’altra partizione perché avevi finito lo spazio?

Piccola Nota. ‘sto giochetto non me lo sono inventato io, e ti ho citato un personaggio autorevole, che ha insegnato a usare Linux a tanta gente, su icol.iniziare (basta cercare su google groups per verificarne la competenza).

con due righe di bash usando direttamente filefrag

che cosa centra filefrag?

Semplice! Sarebbe divertente fare uno scriptino che itera filefrag in una dir, ad esempio la propria /home, e applica il metodo sopra esposto solo ai file frammentati al disopra di una certa soglia

Spero di essere stato esauriente.
E’ sempre un piacere chiacchierare di queste cose, soprattutto con persone da cui si può imparare qualcosa (e a leggerti mi pare che sia questo il caso).

Ah, a proposito del consiglio a tutti. Non si capisce se stai dicendo di non seguire il link (EHI! Mica sono uno spammer!🙂 ) o il metodo.
Immagino parlassi del metodo, e su quello sottolineo il tuo “Non seguitelo se non siete sicuri di quel che fate”. Non voleva essere un how-to ma solo uno spunto di discussione.

Buona serata!

28 01 2008
Paso

Alla faccia quanto hai scritto!🙂
La tua spiegazione è stata molto chiara, ma rimango cmq del parere che la tecnica da te consigliata non sia molto “pulita”: fare un tar di tutta la /home, invocare una drastica rm -f e poi rimpiazzarci l’archivio è una forzatura! (cmq non lo sapevo che fosse un’operazione sicura🙂 )
Avrebbe si senso praticarlo solo su cartelle più specifiche (tipo la cartella dei torrent, o altre cartelle in cui i contenuti cambiano spesso e simili e quindi molto frammentate), ma credo che anche in questo caso non sia la soluzione ottima, dato che agirebbe su directory e non su partizioni di disco, correggimi se sbaglio🙂

Per quanto riguarda il filefrag: così come l’hai spiegata nell’ultimo commento allora va benissimo, però non sarebbe più applicabile il metodo precedente (perché agisce su tutti i file).

E per quanto riguarda il consiglio… beh vedilo come un cartello stradale di “attenzione”❗ giusto perché qualche newbie non esegua il 1° comando che si trova tra le mani senza pensare..😉

grazie per i tuoi chiarimenti, il piacere è anche mio😉

Ciao

28 01 2008
mamozzi

SI, lo so , rm -r * è quanto di più pericoloso ci sia su un sistema UNIX … mi fa pensare alla Torcia Umana quando Mr fantastic gli spiega “supernova no, supernova è brutto!” (hai visto il film?).
Comunque non la chiamerei forzatura, in fondo è quel che si faceva “quando gli uomini erano uomini e programmavano da sé i propri device drivers”..🙂
Con i dischi di adesso non succede, ma quando la mia / divenne troppo piccola per la mia /home feci qualcosa del genere, si prepara una partizione nuova , la si monta, tar per copiare *tutto* e poi via la /home e mani sul fstab per montare la nuova partizione in automatico.
P.S. Scusa per il “romanzo” che ho scritto prima, ma quando mi “dai il la”…🙂
Ciao

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: