Come deframmentare un filesystem ext4


66

Non voglio alcuna risposta dicendo che non è necessario, per favore!

Risposte:


67

Usa e4defrag per deframmentare i tuoi file

Se il file system ext4 è stato creato con l' extentopzione (impostazione predefinita nelle distribuzioni recenti), è possibile utilizzare l' e4defragutilità per verificarlo e deframmentarlo online, ad esempio senza smontare.

Controlla il livello di frammentazione con qualcosa del genere (devi essere root per vedere i dettagli):

sudo e4defrag -c /path/to/myfiles

Ecco un esempio dell'output che puoi ottenere:

$ sudo e4defrag -c iso/
<Fragmented files>                             now/best       size/ext
1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso
                                                 7/1         111177 KB
2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso
                                                 4/1         100897 KB
3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso
                                                 6/1         116053 KB
4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso
                                                 8/1          76160 KB
5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso
                                                15/1          75712 KB

 Total/best extents             40/5
 Average size per extent            90577 KB
 Fragmentation score                0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (iso/) does not need defragmentation.
 Done.

Come in questo esempio, la maggior parte delle volte ti dirà che non è necessaria alcuna deframmentazione, ma se vuoi farlo comunque puoi usare (non devi usare sudo per deframmentare i tuoi file):

e4defrag /path/to/myfiles

I tuoi utenti possono persino eseguirlo sui propri file, non è necessario essere root a meno che tu non voglia lavorare su file di altri utenti o di sistema.

e4defragè nel e2fsprogspacchetto e suppongo sia già installato sul tuo sistema Ubuntu.


2
e4defrag -c non restituisce altro che done. Significa solo che non c'è frammentazione?
hrzhu,

3
Siamo spiacenti, ho dimenticato di menzionare che è necessario eseguire e4defrag -ccon sudoo come root per ottenere informazioni dettagliate sulla frammentazione dei file. Ma non è necessario essere root per deframmentarli.
gerlos,

@gerlos Cosa succede se provo a deframmentare il file system di root /?
Pavel Sayekat,

2
@PavelSayekat devi solo essere root (cioè usare sudo) per eseguire e4defrag /e non devi fare nulla di speciale. e4defragcontrollerà ogni file lì, quindi sii pronto ad aspettare che l'unità legga tutto. Ricorda che può essere una grande perdita di tempo. La maggior parte delle volte, se hai abbastanza spazio libero nel file system, avrai solo pochi file frammentati, e spesso saranno nella tua home directory, relativi all'attività del tuo browser web. Ad esempio, sul mio PC desktop che utilizzo quotidianamente, e4defragci sono solo 5 file frammentati, tutti in Chromium config e cache dir.
Gerlos,

Questo deframmenta solo le estensioni all'interno dei file stessi, ma non i file tra loro. Cioè, se ho una directory contenente tre file in posizioni fisiche selvaggiamente diverse sul disco, sarà comunque lento usare questi file contemporaneamente dopo aver eseguito questo strumento. Esiste un modo per riorganizzare i file sul disco o "deframmentare lo spazio libero" come viene talvolta chiamato?
fuzzy:

29

Dai un'occhiata a e2fsprogs . Questo è disponibile anche nei pacchetti Ubuntu. Fornisce il programma e4defrag.


5
Questo è davvero utile solo sui file system ext4 creati con l'estensione -O, che non è l'impostazione predefinita.
Dobey del

Il ragazzo risponde alla deframmentazione, potrebbe essere possibile con e4defrag, la domanda non è un diario esterno o no, non merita un -1.
Felipe Alcacibar,

8
@dobey Ubuntu 12.04 (.3) LTS contiene extentnella ext4stanza della [fs_types]sezione in /etc/mke2fs.conf- quindi, è un "default". Tuttavia, indipendentemente dalla configurazione in fase di creazione della macchina a cui è collegato il filesystem, è meglio ispezionare il filesystem stesso: tune2fs -l </dev/with/ext4> | grep extent(o guardare la riga "Funzionalità del filesystem" nell'output completo di tune2fs). Intendiamoci, ho appena eseguito e4defrag -c ...un file system da 1 TB pieno al 100% extente ci sono solo 5 file frammentati e "punteggio di frammentazione" 0. YMMV.
Richard Michael,

@RichardMichael FYI: e2defrag -c /pathstampa solo i primi 5 file frammentati trovati (nemmeno quelli più frammentati). Corri e2defrag -v /pathper vedere come riduce i conteggi di estensione.
Tino,

17

Usa Gparted per deframmentare il tuo file system

Se hai abbastanza spazio sul tuo disco rigido, puoi usare Gparted per deframmentare il tuo file system ( ext2, ext 4, nft, ecc .). Devi eseguire l'avvio da un disco di avvio CD / DVD / USB perché l'unità su cui stai lavorando deve essere smontata. Devi anche avere più spazio inutilizzato disponibile di quello utilizzato per far funzionare tutto ciò e potrebbe richiedere del tempo.

  • Avvio da un disco di avvio.
  • Esegui gparted e riduci la partizione che contiene i dati che desideri deframmentare a poco più della quantità di dati.
  • Assicurati che la partizione che desideri deframmentare sia l'ultima partizione sull'unità spostandola alla fine (potrebbe essere necessario creare un'altra partizione vuota di fronte ad essa se c'è solo una partizione sull'unità).

Con la partizione che si desidera deframmentare come ultima partizione sull'unità:

  • ingrandisci la partizione a sinistra fino alla dimensione massima. In questo modo i dati delle partizioni verranno spostati alla fine dell'unità.
  • Una volta terminato, riduci quella partizione alla sua dimensione precedente.
  • Se hai creato una partizione vuota per avere più di una sul disco, ora puoi eliminarla.
  • Spostare le partizioni nell'ordine originale e ricrescere la partizione che si desidera deframmentare alla sua dimensione originale.

Ora è deframmentato.

E so che non sei interessato al perché / perché non deframmentare Ubuntu, ma posterò comunque il link a why-defragmentation-inutile .


Dopo aver ridotto e spostato a destra, perché cresci a sinistra e poi riduci di nuovo invece di spostarti a sinistra?
Jason C,

Inoltre ho notato che dopo il passo di crescita a sinistra, i dati stessi sono stati effettivamente spostati di nuovo a sinistra (evidenziati da dati in movimento suddivisi in parti, verificati da un esame diretto del dispositivo a blocchi in seguito), quindi a meno che non sia un comportamento dipendente dalla versione / filesystem il finale shrink + regrow può essere saltato. Essa sembra essere sufficiente per fare solo: 1) ridurre e spostare a destra, 2) applicare, 3) crescono a sinistra.
Jason C

Il semplice spostamento della partizione che si desidera deframmentare per ultima non la sposta necessariamente alla fine effettiva dell'HD. L'ampliamento della partizione da sinistra alla dimensione massima assicura che la partizione finale sia effettivamente "spostata" fino alla fine del disco rigido.
James,

Spostarlo a destra lo sposta alla fine del disco rigido. La barra di partizione nella parte superiore della GUI gparted è in realtà una rappresentazione accurata del layout dei dati (beh, almeno come visibile al sistema operativo, i dispositivi flash, ad esempio, mappano logiche a posizioni fisiche sull'altro lato del controller, ma per un tipico HDD, è preciso). Ciò può essere verificato osservando la nuova posizione iniziale nella tabella delle partizioni. :)
Jason C,

Ah, stiamo comunicando male. Volevi dire riordinare la partizione in modo che sia l'ultima. Intendevo spostare la partizione alla fine del disco, ed è quello che pensavo volessi dire anche tu (puoi spostare le partizioni sul disco con gparted indipendentemente dal riordino). :)
Jason C,

3

Deframmentazione del file system ext4 in linux Sto aggiungendo questa risposta per mostrare anche come possiamo trovare vari strumenti Linux integrati per eseguire alcune operazioni comuni. voi

Inoltre, tieni presente che devi fare il superutente solo se desideri deframmentare senza smontare.

Utilizzo del comando apropos

e4defrag -vc /path #verbose output with count

2

Ubuntu 14.04 LTS inserisce (almeno l'unità primaria) nella partizione EXT4 se installato su un'installazione pulita (non residente su Win-Junk).

In questo caso, se hai appena impostato un nuovo sistema, o formattato fresco su un vecchio sistema e poi hai eseguito un'installazione pulita, quindi per impostazione predefinita con 14.04 LTS, hai una partizione EXT4 su /dev/sda1.

Ora apri un Terminale ( CTRL- ALT- T) e digita:

sudo e4defrag -c /dev/sda1

ed essere paziente fino a quando il "controllo" non è completo e si ottiene nuovamente il rapporto di frammentazione.

Se non sei sicuro di avere una partizione EXT4 sul tuo disco fisso, vai su HOME e digita df -T. Guarda per che cosa sono impostate le tue partizioni sda * (prova questo in 14.04LTS e vedrai EXT4 a meno che tu non abbia scelto un altro tipo di partizione durante l'installazione del disco rigido).


È diventato un po 'fuori tema e quasi non ha aggiunto alcun valore alla domanda, specialmente con il rant finale.
Fernando Silveira,

Puoi deframmentare più di una partizione con lo stesso comando: sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay

1

e2fsck -D /dev/sda1 ottimizza le directory ordinandole e reindicizzandole, cosa che di solito accelera le cose. Potrebbe non essere considerato una deframmentazione completa del file system, ma non tutti i sistemi hanno e4defrag.

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.