Deframmentare una partizione ext?


Risposte:


10

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!


esiste un meccanismo come: i file che spesso vengono utilizzati durante l'avvio vengono posizionati uno accanto all'altro per ottenere vantaggi dalla località? avvio così più veloce?
uray,

1
Non che io sappia. Potresti usare 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.
David Spillett,

@uray, ho rianimato il lungo abbandonato e2defrage l'ho sperimentato per ottenere tale impaccamento. Puoi trovarlo su launchpad.net/e2defrag .
psusi,

@David: non ho /etc/defaults/rcma ho /etc/default/rcSdebian 6
ctrl-alt-delor

@psusi: e2defragora supporta meglio Ext3, meglio di shake?
Alex S

0

Non c'è molta frammentazione fintanto che il disco non è riempito troppo (quindi non riempire troppo un disco se puoi evitarlo).


2
quindi se il disco è pieno, dobbiamo deframmentarlo?
Uray,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.