Risposte:
I filesystem moderni, in particolare quelli progettati per essere efficienti in casi d'uso multi-utente e / o multi-tasking, fanno un buon lavoro nel non frammentare i dati fino a quando i filesystem non diventano quasi pieni (non esiste una cifra esatta per cui il "quasi pieno" "il segno dipende da quanto è grande il filesystem, dalla distribuzione delle dimensioni dei file e da quali sono i tuoi schemi di accesso - le cifre tra l'85% e il 95% sono comunemente citate) o lo schema delle creazioni e delle scritture dei file è insolito o il filesystem è molto vecchio, quindi ha visto molta "azione". Ciò include ext2 / 3/4, reiser, btrfs, NTFS, ZFS e altri.
Al momento non esiste un modo a livello di kernel / filesystem per deframmentare ext3 o 4 al momento (vedi http://en.wikipedia.org/wiki/Ext3#Defragmentation per qualche informazione in più) anche se ext4 è pianificato per ottenere presto online deframmentazione.
Ci sono strumenti di terra dell'utente (come http://vleu.net/shake/e altri elencati in quell'articolo di Wikipedia) che provano a deframmentare singoli file o insiemi di file copiandoli / riscrivendoli - se c'è un blocco abbastanza grande di spazio libero, generalmente si ottiene un blocco contiguo nel file. Ciò non garantisce in alcun modo che i file siano vicini l'uno all'altro, quindi se si esegue la vibrazione su una coppia di file di grandi dimensioni, è possibile che i due file vengano deframmentati ma non vicini l'uno all'altro sul disco. In un filesystem multiutente la posizione dei file tra loro non è spesso importante (è certamente meno importante della frammentazione dei file stessi) poiché le testine dell'unità si stanno spostando dappertutto per servire utenti diversi "
Se hai un filesystem che è diventato molto frammentato nel tempo e attualmente ha una buona quantità di spazio libero, l'esecuzione di qualcosa come shaketutti i suoi file potrebbe avere l'effetto che stai cercando. Un altro metodo sarebbe quello di copiare tutti i dati in un nuovo filesystem, rimuovere l'originale e quindi copiarlo di nuovo. Questo aiuta più o meno allo stesso modo shake, ma può essere più veloce per grandi quantità di dati.
Per piccole quantità di frammentazione, non preoccuparti. Conosco persone che trascorrono più tempo seduti a guardare le barre di avanzamento della deframmentazione di quante ne salveranno mai (a causa dell'accesso più efficiente al disco) in diverse vite del normale funzionamento!
ureadahead, come le recenti build di Ubuntu per impostazione predefinita (vedi ubuntuforums.org/showthread.php?t=1434502 per maggiori informazioni), per ottenere un effetto simile. Alcuni ritardi nella sequenza di avvio di Linux possono essere ridotti chiedendogli di avviare i servizi più simultaneamente, ove possibile, se la configurazione di avvio della tua disro supporta questo (imposta CONCURRENCY = shell in / etc / defaults / rc su Debian) e modifiche simili. Per verificare di fare la differenza con le modifiche apportate, utilizza bootchart.org per mostrare cosa succede prima di modificare le cose rispetto a quelle successive.
e2defrage l'ho sperimentato per ottenere tale impaccamento. Puoi trovarlo su launchpad.net/e2defrag .
/etc/defaults/rcma ho /etc/default/rcSdebian 6
e2defragora supporta meglio Ext3, meglio di shake?