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 .

  1. Laptop con 1 SSHD (da non confondere con lHDD).

  2. Laptop con 3 unità: 2 x HDD consumer in RAID 1 e 1 x SSD.

  3. 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 .

  1. 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 
  2. 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 
  3. 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:

  1. Preso dal server con dischi rigidi RAID 1 :

    [2556/30987]/raid1a/bitcoind/blocks/rev00820.dat: 100% extents: 16 -> 1 [ OK ] 
  2. 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:

  1. Sul server:

    sudo e4defrag -v /dev/md1 
  2. 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 fare e4defrag -r e e4defrag -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 è in e2fsprogs 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.

Commenti

  • Sono disponibili informazioni sulla migliore pratica di deframmentazione corrente (2020) su ext4 o una raccomandazione di non utilizzare alcuno strumento esistente a causa dellinaffidabilità? Il mio e4defrag --version dice e4defrag 1.45.5 (07-Jan-2020).
  • La situazione non è cambiata molto.Non molto tempo dopo aver scritto la risposta sopra, cera un thread che include un riepilogo della pertinenza di 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).
  • Grazie, Stephen. Significa che il comando è sicuro nel senso che verrà salvato prima di unazione potenzialmente dannosa in modo che io possa usarlo senza rischi per i miei dati? (Fondamentalmente, ho appena rimosso 750000 file e mi sono chiesto se il disco potesse essere frammentato (suppongo lo sia) e se pulirlo o lasciarlo.)
  • Come qualsiasi operazione di file system, è potenzialmente pericolosa, quindi usalo solo se hai backup (oi dati sono usa e getta). Tuttavia il comando è sicuro per quanto ne sanno i suoi sviluppatori; se incontra situazioni che non riesce a gestire si ferma in sicurezza.
  • Saluti. Ci sono ancora 3 TB di dati sul disco, nessun backup. Aspetterò finché non avrò un giorno in cui mi sentirò abbastanza audace da provare 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *