4 værktøjer til styring af EXT2, EXT3 og EXT4 Health i Linux


Et filsystem er en datastruktur, der hjælper med at kontrollere, hvordan data lagres og hentes på et computersystem. Et filsystem kan også betragtes som en fysisk (eller udvidet) partition på en disk. Hvis det ikke er godt vedligeholdt og regelmæssigt overvåget, kan det blive beskadiget eller ødelagt i det lange løb på så mange forskellige måder.

Der er flere faktorer, der kan få et filsystem til at blive usundt: systemnedbrud, hardware- eller softwarefejl, fejlbehæftede drivere og programmer, tuning af det forkert, overbelastning med overdrevne data plus andre mindre fejl.

Enhver af disse problemer kan få Linux til ikke at montere (eller afmontere) et filsystem yndefuldt og dermed medføre systemfejl.

Derudover kan kørsel af dit system med et svækket filsystem give anledning til andre runtime-fejl i operativsystemkomponenter eller i brugerapplikationer, hvilket kan eskalere til alvorligt datatab. For at undgå at lide filsystemkorruption eller skader skal du holde øje med dets helbred.

I denne artikel vil vi dække værktøjer til overvågning og vedligeholdelse af en ext2-, ext3- og ext4-filsystems sundhed. Alle de her beskrevne værktøjer kræver root-brugerrettigheder, og brug derfor sudo-kommandoen til at køre dem.

Sådan får du vist EXT2/EXT3/EXT4 filsystemoplysninger

dumpe2fs er et kommandolinjeværktøj, der bruges til at dumpe ext2/ext3/ext4-filsystemoplysninger, hvilket betyder, at det viser superblok og blokerer gruppeoplysninger til filsystemet på enheden.

Inden du kører dumpe2fs, skal du sørge for at køre df -hT-kommandoen for at kende filsystemets enhedsnavne.

$ 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 videregive -b -flaget for at få vist alle blokke, der er reserveret som dårlige i filsystemet (ingen output antyder til badblocks):

$ dumpe2fs -b

Kontrol af EXT2/EXT3/EXT4 filsystemer for fejl

e2fsck bruges til at undersøge ext2/ext3/ext4 filsystemer for fejl og fsck-kontrol og kan eventuelt reparere et Linux-filsystem; det er grundlæggende en front-end til en række filsystemkontrollere (fsck.fstype for eksempel fsck.ext3, fsck.sfx osv.), der tilbydes under Linux.

Husk, at Linux kører e2fack/fsck automatisk ved systemstart på partitioner, der er mærket til kontrol i/etc/fstab-konfigurationsfil. Dette gøres normalt, når et filsystem ikke er demonteret rent.

OBS: Kør ikke e2fsck eller fsck på monterede filsystemer, afmonter altid en partition først, før du kan køre disse værktøjer på den, som vist nedenfor.

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

Alternativt kan du aktivere detaljeret output med -V -omskifteren og bruge -t til at angive en filsystemtype som denne:

$ sudo fsck -Vt ext4 /dev/sda10

Tuning af EXT2/EXT3/EXT4 filsystemer

Vi nævnte fra starten, at en af årsagerne til filsystemskader er forkert tuning. Du kan bruge tune2fs-værktøjet til at ændre de indstillelige parametre for ext2/ext3/ext4-filsystemer som forklaret nedenfor.

For at se indholdet af filsystemets superblok, inklusive de aktuelle værdier for parametrene, skal du bruge indstillingen -l 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

Dernæst ved hjælp af -c flag kan du indstille antallet af monteringer, hvorefter filsystemet kontrolleres af e2fsck. Denne kommando instruerer systemet om at køre e2fsck mod /dev/sda10 efter hver 4. montering.

$ sudo tune2fs -c 4 /dev/sda10

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

Du kan lige så godt definere tiden mellem to filsystemkontroller med indstillingen -i . Den følgende kommando indstiller et interval på 2 dage mellem filsystemkontrol.

$ sudo tune2fs  -i  2d  /dev/sda10

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

Hvis du nu kører denne kommando nedenfor, er filsystemets kontrolinterval for /dev/sda10 nu indstillet.

$ 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 at ændre standardjournaleringsparametrene skal du bruge indstillingen -J . Denne indstilling har også underindstillinger: størrelse = journalstørrelse (indstiller journalens størrelse), enhed = ekstern journal (specificerer den enhed, den er gemt på) og placering = journal-placering (definerer placeringen af journal).

Bemærk, at kun en af indstillingerne for størrelse eller enhed kan indstilles til et filsystem:

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

Sidst men ikke mindst kan volumenetiketten på et filsystem indstilles ved hjælp af indstillingen -L som nedenfor.

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

Fejlfind EXT2/EXT3/EXT4 filsystemer

debugfs er en enkel, interaktiv kommandolinjebaseret ext2/ext3/ext4-filsystems debugger. Det giver dig mulighed for at ændre filsystemparametre interaktivt. For at se underkommandoer eller anmodninger skal du skrive "?" .

$ sudo debugfs /dev/sda10

Som standard skal filsystemet åbnes i læse-skrivetilstand, brug flag -w til at åbne det i læse-skrivetilstand. For at åbne den i katastrofal tilstand skal du bruge indstillingen -c .

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 at vise fragmentering af ledig plads skal du bruge freefrag-anmodningen som sådan.

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 udforske så mange andre anmodninger, såsom at oprette eller fjerne filer eller mapper, ændre den aktuelle arbejdsmappe og meget mere ved blot at læse den korte beskrivelse, der gives. For at afslutte fejlretning skal du bruge anmodningen q .

Det er alt for nu! Vi har en samling relaterede artikler under forskellige kategorier nedenfor, som du finder nyttige.

  1. 12 Nyttige “df” -kommandoer til kontrol af diskplads i Linux
  2. Pydf en alternativ “df” -kommando for at kontrollere diskbrug i forskellige farver
  3. 10 Nyttige du-kommandoer (Diskbrug) til at finde diskbrug af filer og kataloger

  1. 3 Nyttige GUI- og terminalbaserede Linux Disk Scanningsværktøjer
  2. Sådan kontrolleres dårlige sektorer eller dårlige blokke på harddisken i Linux
  3. Sådan repareres og defragmenteres Linux-systempartitioner og -mapper

Vedligeholdelse af et sundt filsystem forbedrer altid den samlede ydeevne for dit Linux-system. Hvis du har spørgsmål eller yderligere tanker at dele, brug kommentarformularen nedenfor.