Ho i seguenti dispositivi con Linux Mint 18.1 su laptop e GNU / Linux Debian 9 sul server.
(Tutti sono a 64 bit e con desktop Cinnamon.)
Tutti i dispositivi di unità sono formattati con file system ext4 ; RAID 1 viene eseguito utilizzando mdadm
.
-
Laptop con 1 SSHD (da non confondere con lHDD).
-
Laptop con 3 unità: 2 x HDD consumer in RAID 1 e 1 x SSD.
-
Server con 5 unità: 4 x HDD aziendali in due volte RAID 1 e 1 x SSD.
Ho il sistema su questi SSD e non deframmenterei mai un SSD.
La domanda riguarda gli HHD e un SSHD.
Ho trovato un vecchio PDF che delinea alcune altre funzioni di e4defrag
.
-
Perché il filesystem deve essere montato, come da questo messaggio di errore quando si tenta di deframmentare un filesystem non montato? Voglio capire il motivo per cui:
Filesystem is not mounted
-
Vorrei implementare la deframmentazione dello spazio libero. AFAIK è ora in fase di revisione. È possibile per es. compilare
e4defrag
dalla sorgente con queste opzioni disponibili o comunque?e4defrag -f /deviceOrDirectory
-
Lo farei mi piace anche utilizzare la funzionalità relativa ai dati:
e4defrag -r /deviceOrDirectory
Ho molte ragioni rilevanti per ritenere che la frammentazione su queste macchine stia rallentando la velocità di lettura, esempio:
-
Preso dal server con dischi rigidi RAID 1 :
[2556/30987]/raid1a/bitcoind/blocks/rev00820.dat: 100% extents: 16 -> 1 [ OK ]
-
Preso dal laptop con RAID 1 HDD:
[29405/50810]/raid1/movies/SGA-HEVC/S04E01 - Adrift.mp4: 100% extents: 31 -> 6 [ OK ]
Come puoi vedere, la deframmentazione non è stata nemmeno in grado di mettere il file a 31 blocchi in 1 pezzo. Ovviamente potresti sostenere che si tratta di un file di film, quindi non importa. Vero, ma solo in questo caso.
Il comando che uso per avviare la deframmentazione:
-
Sul server:
sudo e4defrag -v /dev/md1
-
Sul laptop:
sudo e4defrag -v /raid1/
Sì non sembra avere importanza, se invoco il comando utilizzando il nome del dispositivo o una directory.
Puoi indicarmi la giusta direzione?
Commenti
- Hai risultati di misurazione che indicano la deframmentazione come fonte di accesso lento? Se sì, quali? Nella maggior parte dei casi, ‘ non è necessario eseguire la deframmentazione manuale sui filesystem ext4, a condizione che ‘ sia sufficiente spazio libero affinché lalgoritmo di allocazione lo deframmenta automaticamente durante il normale funzionamento.
- @dirkt Finora non sono state effettuate misurazioni. Non ‘ discuto se deframmentare il filesystem
ext4
sia efficace o meno. Le domande sono chiare: come faree4defrag -r
ee4defrag -f
.
Risposta
e4defrag
richiede che il file system sia montato perché chiede al driver del file system del kernel di eseguire la deframmentazione, non lo fa t farlo da solo.
Per quanto riguarda la deframmentazione dello spazio libero e la deframmentazione dei file rilevanti, le patch non sono mai state completate; lultima menzione sulla mailing list pertinente risale al 2014 :
Il
e4defrag
è ine2fsprogs
e il codice è ancora in fase di manutenzione e miglioramento. Dmitry Monakhov ha in particolare aggiunto molti “test di tortura” e ha trovato una serie di condizioni di competizione nel codice del kernel sottostante. Recentemente ha anche inviato un refactoring del codice del kernel che lo ha notevolmente migliorato e (ha ridotto la dimensione di ext4 di 550 righe di codice).Detto questo, non cè stato alcun vero sviluppo di funzionalità per
e4defrag
da un po di tempo. Ci sono state alcune discussioni su quali potrebbero essere le API del kernel per supportare questa funzionalità, ma non cè mai stata una proposta API finalizzata, figuriamoci unimplementazione.
Quindi dubito che al momento ci sia qualcosa che valga la pena di testare.
e4defrag --version
dicee4defrag 1.45.5 (07-Jan-2020)
.e4defrag
allindirizzo il tempo. È ancora una parte completamente supportata di Ext4, ma non è utilizzabile in tutti i casi (i file system con bigalloc non possono essere deframmentati, il journaling dei dati è incompatibile con la deframmentazione e gli inode DAX e i file crittografati non possono essere spostati).