Ricerca nel sito web

4 strumenti per gestire l'integrità di EXT2, EXT3 ed EXT4 in Linux


Un filesystem è una struttura di dati che aiuta a controllare il modo in cui i dati vengono archiviati e recuperati su un sistema informatico. Un filesystem può anche essere considerato come una partizione fisica (o estesa) su un disco. Se non ben mantenuto e monitorato regolarmente, a lungo andare può danneggiarsi o corrompersi in tanti modi diversi.

Ci sono diversi fattori che possono rendere malsano un filesystem: arresti anomali del sistema, malfunzionamenti hardware o software, driver e programmi difettosi, ottimizzazione errata, sovraccarico di dati eccessivi e altri piccoli problemi.

Uno qualsiasi di questi problemi può far sì che Linux non monti (o smonti) correttamente un filesystem, provocando così un errore del sistema.

Leggi anche: 7 modi per determinare il tipo di file system in Linux (Ext2, Ext3 o Ext4)

Inoltre, l'esecuzione del sistema con un file system compromesso può causare altri errori di runtime nei componenti del sistema operativo o nelle applicazioni utente, che potrebbero degenerare in gravi perdite di dati. Per evitare di subire corruzione o danni al filesystem, è necessario tenere d'occhio la sua salute.

In questo articolo tratteremo gli strumenti per monitorare e mantenere lo stato di salute dei filesystem ext2, ext3 ed ext4. Tutti gli strumenti qui descritti richiedono i privilegi di utente root, quindi utilizza il comando sudo per eseguirli.

Come visualizzare le informazioni sul filesystem EXT2/EXT3/EXT4

dumpe2fs è uno strumento da riga di comando utilizzato per eseguire il dump delle informazioni sul file system ext2/ext3/ext4, ovvero visualizza le informazioni sui super blocchi e sui gruppi di blocchi per il file system sul dispositivo.

Prima di eseguire dumpe2fs, assicurati di eseguire il comando df -hT per conoscere i nomi dei dispositivi del file system.

sudo dumpe2fs /dev/sda10
Uscita del campione
dumpe2fs 1.42.13 (17-May-2015)
Filesystem volume name:   
Last mounted on:          /
Filesystem UUID:          bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              21544960
Block count:              86154752
Reserved block count:     4307737
Free blocks:              22387732
Free inodes:              21026406
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1003
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sun Jul 31 16:19:36 2016
Last mount time:          Mon Nov  6 10:25:28 2017
Last write time:          Mon Nov  6 10:25:19 2017
Mount count:              432
Maximum mount count:      -1
Last checked:             Sun Jul 31 16:19:36 2016
Check interval:           0 ()
Lifetime writes:          2834 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       6947324
Default directory hash:   half_md4
Directory Hash Seed:      9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             128M
Journal length:           32768
Journal sequence:         0x00580f0c
Journal start:            12055

Puoi passare il flag -b per visualizzare tutti i blocchi riservati come danneggiati nel filesystem (nessun output implica blocchi danneggiati):

dumpe2fs -b

Controllo degli errori nei file system EXT2/EXT3/EXT4

e2fsck viene utilizzato per esaminare i filesystem ext2/ext3/ext4 alla ricerca di errori e controlli fsck e può facoltativamente riparare un filesystem Linux; è fondamentalmente un front-end per una serie di controlli del filesystem (fsck.fstype ad esempio fsck.ext3, fsck.sfx ecc.) offerti sotto Linux.

Ricorda che Linux esegue e2fack/fsck automaticamente all'avvio del sistema su partizioni etichettate per il check-in nel file di configurazione /etc/fstab. Questo viene normalmente fatto dopo che un filesystem non è stato smontato in modo pulito.

Attenzione: non eseguire e2fsck o fsck su filesystem montati, smonta sempre una partizione prima di poterla eseguire questi strumenti su di esso, come mostrato di seguito.

sudo unmount /dev/sda10
sudo fsck /dev/sda10

In alternativa, abilita l'output dettagliato con l'opzione -V e usa -t per specificare un tipo di filesystem come questo:

sudo fsck -Vt ext4 /dev/sda10

Sintonizzazione dei file system EXT2/EXT3/EXT4

Abbiamo accennato fin dall'inizio che una delle cause del danneggiamento del filesystem è un'errata ottimizzazione. Puoi utilizzare l'utility tune2fs per modificare i parametri sintonizzabili dei filesystem ext2/ext3/ext4 come spiegato di seguito.

Per vedere il contenuto del superblocco del filesystem, inclusi i valori correnti dei parametri, usa l'opzione -l come mostrato.

sudo tune2fs -l /dev/sda10
Uscita del campione
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   
Last mounted on:          /
Filesystem UUID:          bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              21544960
Block count:              86154752
Reserved block count:     4307737
Free blocks:              22387732
Free inodes:              21026406
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1003
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sun Jul 31 16:19:36 2016
Last mount time:          Mon Nov  6 10:25:28 2017
Last write time:          Mon Nov  6 10:25:19 2017
Mount count:              432
Maximum mount count:      -1
Last checked:             Sun Jul 31 16:19:36 2016
Check interval:           0 ()
Lifetime writes:          2834 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       6947324
Default directory hash:   half_md4
Directory Hash Seed:      9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup:           inode blocks

Successivamente, utilizzando il flag -c, puoi impostare il numero di montaggi dopo i quali il filesystem verrà controllato da e2fsck. Questo comando indica al sistema di eseguire e2fsck contro /dev/sda10 dopo ogni 4 montaggio.

sudo tune2fs -c 4 /dev/sda10

tune2fs 1.42.13 (17-May-2015)
Setting maximal mount count to 4

Puoi anche definire il tempo tra due controlli del filesystem con l'opzione -i. Il seguente comando imposta un intervallo di 2 giorni tra i controlli del filesystem.

sudo tune2fs  -i  2d  /dev/sda10

tune2fs 1.42.13 (17-May-2015)
Setting interval between checks to 172800 seconds

Ora se esegui questo comando di seguito, l'intervallo di controllo del filesystem per /dev/sda10 è ora impostato.

sudo tune2fs -l /dev/sda10
Uscita del campione
Filesystem created:       Sun Jul 31 16:19:36 2016
Last mount time:          Mon Nov  6 10:25:28 2017
Last write time:          Mon Nov  6 13:49:50 2017
Mount count:              432
Maximum mount count:      4
Last checked:             Sun Jul 31 16:19:36 2016
Check interval:           172800 (2 days)
Next check after:         Tue Aug  2 16:19:36 2016
Lifetime writes:          2834 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       6947324
Default directory hash:   half_md4
Directory Hash Seed:      9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup:           inode blocks

Per modificare i parametri predefiniti del journaling, utilizza l'opzione -J. Questa opzione ha anche opzioni secondarie: size=journal-size (imposta la dimensione del journal), device=external-journal (specifica il dispositivo su cui è archiviato) e location=journal-location (definisce la posizione del journal).

Tieni presente che solo una delle opzioni relative alla dimensione o al dispositivo può essere impostata per un filesystem:

sudo tune2fs -J size=4MB /dev/sda10

Ultimo ma non meno importante, l'etichetta del volume di un filesystem può essere impostata utilizzando l'opzione -L come di seguito.

sudo tune2fs -L "ROOT" /dev/sda10

Eseguire il debug dei file system EXT2/EXT3/EXT4

debugfs è un debugger di filesystem ext2/ext3/ext4 semplice e interattivo basato sulla riga di comando. Ti consente di modificare i parametri del filesystem in modo interattivo. Per visualizzare sottocomandi o richieste, digitare "?".

sudo debugfs /dev/sda10

Per impostazione predefinita, il filesystem dovrebbe essere aperto in modalità lettura-scrittura, utilizzare il flag -w per aprirlo in modalità lettura-scrittura. Per aprirlo in modalità catastrofica, usa l'opzione -c.

Uscita del campione
debugfs 1.42.13 (17-May-2015)
debugfs:  ?
Available debugfs requests:

show_debugfs_params, params
                         Show debugfs parameters
open_filesys, open       Open a filesystem
close_filesys, close     Close the filesystem
freefrag, e2freefrag     Report free space fragmentation
feature, features        Set/print superblock features
dirty_filesys, dirty     Mark the filesystem as dirty
init_filesys             Initialize a filesystem (DESTROYS DATA)
show_super_stats, stats  Show superblock statistics
ncheck                   Do inode->name translation
icheck                   Do block->inode translation
change_root_directory, chroot
....

Per mostrare la frammentazione dello spazio libero, utilizza la richiesta freefrag, in questo modo.

debugfs: freefrag
Uscita del campione
Device: /dev/sda10
Blocksize: 4096 bytes
Total blocks: 86154752
Free blocks: 22387732 (26.0%)

Min. free extent: 4 KB 
Max. free extent: 2064256 KB
Avg. free extent: 2664 KB
Num. free extent: 33625

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
    4K...    8K-  :          4883          4883    0.02%
    8K...   16K-  :          4029          9357    0.04%
   16K...   32K-  :          3172         15824    0.07%
   32K...   64K-  :          2523         27916    0.12%
   64K...  128K-  :          2041         45142    0.20%
  128K...  256K-  :          2088         95442    0.43%
  256K...  512K-  :          2462        218526    0.98%
  512K... 1024K-  :          3175        571055    2.55%
    1M...    2M-  :          4551       1609188    7.19%
    2M...    4M-  :          2870       1942177    8.68%
    4M...    8M-  :          1065       1448374    6.47%
    8M...   16M-  :           364        891633    3.98%
   16M...   32M-  :           194        984448    4.40%
   32M...   64M-  :            86        873181    3.90%
   64M...  128M-  :            77       1733629    7.74%
  128M...  256M-  :            11        490445    2.19%
  256M...  512M-  :            10        889448    3.97%
  512M... 1024M-  :             2        343904    1.54%
    1G...    2G-  :            22      10217801   45.64%
debugfs:  

Puoi esplorare tante altre richieste come la creazione o la rimozione di file o directory, la modifica della directory di lavoro corrente e molto altro, semplicemente leggendo la breve descrizione fornita. Per uscire da debugfs, usa la richiesta q.

È tutto per ora! Di seguito abbiamo una raccolta di articoli correlati in diverse categorie, che troverai utili.

Informazioni sull'utilizzo del file system:

  1. 12 utili comandi "df" per controllare lo spazio su disco in Linux
  2. Pydf un comando alternativo "df" per verificare l'utilizzo del disco in diversi colori
  3. 10 utili comandi du (Utilizzo del disco) per trovare l'utilizzo del disco di file e directory

Controlla l'integrità del disco o della partizione:

  1. 3 Utili strumenti di scansione del disco Linux basati su GUI e terminale
  2. Come controllare settori o blocchi danneggiati sul disco rigido in Linux
  3. Come riparare e deframmentare partizioni e directory del sistema Linux

Mantenere un filesystem sano migliora sempre le prestazioni generali del tuo sistema Linux. Se hai domande o ulteriori pensieri da condividere utilizza il modulo di commento qui sotto.