4 verktøy for å administrere EXT2, EXT3 og EXT4 Health i Linux


Et filsystem er en datastruktur som hjelper til med å kontrollere hvordan data lagres og hentes på et datasystem. Et filsystem kan også betraktes som en fysisk (eller utvidet) partisjon på en disk. Hvis den ikke er godt vedlikeholdt og regelmessig overvåket, kan den bli skadet eller ødelagt i det lange løp, på så mange forskjellige måter.

Det er flere faktorer som kan føre til at et filsystem blir usunt: systemkrasj, maskinvare- eller programvarefeil, buggy-drivere og programmer, feilinnstilling, overbelastning av det med overflødig data pluss andre mindre feil.

Alle disse problemene kan føre til at Linux ikke monterer (eller demonterer) et filsystem på en elegant måte, og dermed forårsaker systemfeil.

I tillegg kan det å kjøre systemet med et svekket filsystem gi opphav til andre kjøretidsfeil i operativsystemkomponenter eller i brukerapplikasjoner, som kan eskalere til alvorlig datatap. For å unngå å lide korrupsjon eller skade på filsystemet, må du holde et øye med helsen.

I denne artikkelen vil vi dekke verktøy for å overvåke og vedlikeholde en ext2-, ext3- og ext4-filsystemhelse. Alle verktøyene som er beskrevet her krever root-brukerprivilegier, bruk derfor sudo-kommandoen for å kjøre dem.

Hvordan vise EXT2/EXT3/EXT4 filsysteminformasjon

dumpe2fs er et kommandolinjeverktøy som brukes til å dumpe ext2/ext3/ext4 filsysteminformasjon, betyr at det viser superblokk og blokkerer gruppeinformasjon for filsystemet på enheten.

Før du kjører dumpe2fs, sørg for å kjøre df -hT-kommandoen for å vite filsystemets enhetsnavn.

$ sudo dumpe2fs /dev/sda10
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

Du kan sende -b-flagget for å vise alle blokker som er reservert som dårlige i filsystemet (ingen utgang betyr dårlige blokker):

$ dumpe2fs -b

Kontrollerer EXT2/EXT3/EXT4-filsystemer for feil

e2fsck brukes til å undersøke ext2/ext3/ext4-filsystemer for feil og fsck-kontroller og kan eventuelt reparere et Linux-filsystem; det er i utgangspunktet en grensesnitt for en rekke filsystemkontrollere (fsck.fstype for eksempel fsck.ext3, fsck.sfx etc) som tilbys under Linux.

Husk at Linux kjører e2fack/fsck automatisk ved systemoppstart på partisjoner som er merket for å sjekke inn /etc/fstab konfigurasjonsfil. Dette gjøres vanligvis etter at et filsystem ikke har blitt avmontert rent.

OBS: Ikke kjør e2fsck eller fsck på monterte filsystemer, avmonter alltid en partisjon først før du kan kjøre disse verktøyene på den, som vist nedenfor.

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

Alternativt, aktiver detaljert utgang med -V-bryteren og bruk -t for å spesifisere en filsystemtype som dette:

$ sudo fsck -Vt ext4 /dev/sda10

Stille inn EXT2/EXT3/EXT4 filsystemer

Vi nevnte fra starten at en av årsakene til filsystemskade er feil tuning. Du kan bruke tune2fs-verktøyet til å endre de justerbare parameterne til ext2/ext3/ext4 filsystemer som forklart nedenfor.

For å se innholdet i filsystemets superblokk, inkludert gjeldende verdier for parameterne, bruk -l-alternativet som vist.

$ sudo tune2fs -l /dev/sda10
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

Deretter, ved å bruke -c-flagget, kan du angi antall mounts hvoretter filsystemet skal sjekkes av e2fsck. Denne kommandoen instruerer systemet til å kjøre e2fsck mot /dev/sda10 etter hver 4 montering.

$ sudo tune2fs -c 4 /dev/sda10

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

Du kan også definere tiden mellom to filsystemsjekker med -i-alternativet. Følgende kommando setter et intervall på 2 dager mellom filsystemkontroller.

$ sudo tune2fs  -i  2d  /dev/sda10

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

Hvis du kjører denne kommandoen nedenfor, er kontrollintervallet for filsystem for /dev/sda10 nå satt.

$ sudo tune2fs -l /dev/sda10
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

For å endre standard journalføringsparametere, bruk -J-alternativet. Dette alternativet har også underalternativer: size=journal-size (angir journalens størrelse), device=external-journal (spesifiserer enheten som den er lagret på) og location=journal-location (definerer plasseringen av journalen).

Merk at bare ett av størrelses- eller enhetsalternativene kan angis for et filsystem:

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

Sist, men ikke minst, kan volumetiketten til et filsystem settes ved å bruke -L-alternativet som nedenfor.

$ sudo tune2fs -L "ROOT" /dev/sda10

Feilsøk EXT2/EXT3/EXT4 filsystemer

debugfs er en enkel, interaktiv kommandolinjebasert ext2/ext3/ext4 filsystemfeilsøker. Den lar deg endre filsystemparametere interaktivt. For å se underkommandoer eller forespørsler, skriv inn \?\.

$ sudo debugfs /dev/sda10

Som standard skal filsystemet åpnes i lese-skrive-modus, bruk -w-flagget for å åpne det i lese-skrive-modus. For å åpne den i katastrofal modus, bruk -c-alternativet.

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

For å vise fragmentering av ledig plass, bruk freefrag-forespørselen, som så.

debugfs: freefrag
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:  

Du kan utforske så mange andre forespørsler som å opprette eller fjerne filer eller kataloger, endre gjeldende arbeidskatalog og mye mer, ganske enkelt ved å lese den korte beskrivelsen. For å avslutte debugfs, bruk q-forespørselen.

Det er alt for nå! Vi har en samling relaterte artikler under ulike kategorier nedenfor, som du vil finne nyttige.

  1. 12 nyttige \df-kommandoer for å sjekke diskplass i Linux
  2. Pydf en alternativ \df-kommando for å sjekke diskbruk i forskjellige farger
  3. 10 nyttige du (diskbruk)-kommandoer for å finne diskbruk av filer og kataloger

  1. 3 nyttige GUI- og terminalbaserte Linux-diskskanneverktøy
  2. Hvordan sjekke dårlige sektorer eller dårlige blokker på harddisken i Linux
  3. Hvordan reparere og defragmentere Linux-systempartisjoner og -kataloger

Å opprettholde et sunt filsystem forbedrer alltid den generelle ytelsen til Linux-systemet. Hvis du har spørsmål eller flere tanker å dele, bruk kommentarskjemaet nedenfor.