Come riparare e deframmentare, in un filesystem ext2, ext3 o ext4, dischi HDD sotto Linux: e2fsck ed e4defrag
Siamo abituati a parlare di deframmentazione nei sistemi operativi Windows, per ottimizzare e riordinare i files sul disco fisso, che nel tempo tendono a frammentarsi andando ad occupare punti dell’hard disk distanti fra loro con conseguente rallentamento di tutto il sistema.
In Linux i filesystem ext2, ext3 ed ext4 non hanno bisogno di molta manutenzione, infatti questi filesystem sono già pensati per prevenire l'effetto di frammentazione. Tuttavia anche qui, le continue letture e scritture che si susseguono nel tempo, possono determinare un rallentamento dei processi dell'intero sistema e potrebbe essere necessaria una deframmentazione che anche Linux prevede.
In questi articolo trattiamo di filesystem ext2, ext3 ed ext4 in dischi HDD e non SSD. La deframmentazione dell'unità SSD tuttavia non è consigliata perchè, se è verò che migliorerà le performance di lettura e scrittura, ridurra anche la vita del disco SSD. Se proprio volete deframmentarlo potreste usare la funzione TRIM, che non è trattata in questo articolo.
Indentifichiamo le partizioni e il tipo di filesystem del nostro disco
Per prima cosa identifichiamo le partizioni del nostro HDD utilizzando il comando df, che evidenzia lo spazio disco usato dal file system. Utilizziamo l'opzione -h per facilitare la lettura dello spazio disco utilizzato e -T per visualizzare il tipo di fìlesystem alla ricerca di partizioni in ext2, ext3 o ext4
As esempio, il nostro HDD è partizionato in questo modo:
# df -hT
File system Tipo Dim. Usati Dispon. Uso% Montato su
devtmpfs devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 32G 84K 32G 1% /dev/shm
tmpfs tmpfs 32G 3,2G 29G 10% /run
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/fedora-root ext4 451G 173G 260G 40% /
tmpfs tmpfs 32G 4,0K 32G 1% /tmp
/dev/sda1 ext4 477M 151M 298M 34% /boot
/dev/mapper/fedora-home ext4 880M 21M 793M 3% /home
Verifichiamo se una partizione presenta errori o necessita di deframmentazione, con e2fsck
Analizziamo la partizione "/dev/mapper/fedora-home" che utilizza ext4.
Prima di qualunque operazione, per sicurezza, smontiamo la partizione con il comando umount, seguito dal nome della partizione, per evitare di eseguire questa operazione mentre la partizione è al lavoro in lettura / scrittura.
# umount /dev/mapper/fedora-home
Adesso verifichiamo se la partizione necessita effettivamente di una deframmentazione. Per farlo utilizzeremo e2fsck sulla partizione che stiamo esaminando.
# e2fsck -fn /dev/mapper/fedora-home
Per bypassare le varie interazioni con il terminale, abbiamo utilizzato due opzioni.
- -f: viene utilizzata per forzare i controlli.
- -n: viene utilizzata per aprire il filesystem in sola lettura e dare in automatico la risposta di "no" a tutte le possibili domande.
Questo è il risultato ottenuto. Non sono evidenziati errori ed è indicato "0.0% non-contiguous" il che signfica che la nostra partizione è in salute e non necessita di deframmentazione !
e2fsck 1.42.5 (29-Jul-2012)
Passo 1: Controllo di inode, blocco(i) e dimensioni
Passo 2: Analisi della struttura delle directory
Passo 3: Controllo della connettività di directory
Pass 4: Controllo del numero dei riferimenti
Pass 5: Checking gruppo summary information
/dev/mapper/fedora-home: 11/65536 files (0.0% non-contiguous), 42011/262144 blocks
Ripariamo la nostra partizione con e2fsck
Se l'analisi verificasse la presenza di errori, sempre con la partizione smontanta, ripariamola utilizzano sempre lo strumento e2fsck, con l'opzione -p
# e2fsck -p /dev/mapper/fedora-home
Le opzioni "-p" consente di utilizzare e2fsck in modo automatico senza il nostro intervento.
Se venisse rilevato un problema non risolvibile automaticamente, e che quindi si rende necessario l'intervento dell'amministratore di sistema, e2fsck visualizzerà la descrizione del problema con il codice 4, che indica la presenza di "Errori del file system non corretti". A questo punto il problema sarà nelle mani dell'amministatore di sistema che dovrà intervenire.
Nel caso il problema fosse su una partizione che non può essere smontata, è possibile usare uno strumento alternativo chiamato e4defrag.
Se non è presente, lo installiamo facilmente, ad esempio con YUM
# yum install e2fsprogs
Come deframmentare sotto Linux: e4defrag
Se l'analisi effettuata verificasse la presenza di dati deframmentati, prodecediamo utilizzando il comando e4defrag, seguito dal nome della partizione, se vogliamo deframmentare una partizione, o dal nome di una directory, se vogliamo deframmentare una directory.
// deframmentiamo una partizione
# e4defrag /dev/mapper/fedora-home
// deframmentiamo una specifica directory
# e4defrag /home/user_directory
Se invece vogliamo deframmentare tutto l'HDD
# e4defrag /