ウェブサイト検索

Linux で EXT2、EXT3、EXT4 の健全性を管理する 4 つのツール


ファイルシステムは、コンピュータ システム上でデータを保存および取得する方法を制御するのに役立つデータ構造です。ファイルシステムは、ディスク上の物理 (または拡張) パーティションとみなすこともできます。十分なメンテナンスと定期的な監視が行われていない場合、長期的にはさまざまな方法で損傷または破損する可能性があります。

ファイルシステムが異常になる原因としては、システムのクラッシュ、ハードウェアまたはソフトウェアの誤動作、バグのあるドライバーとプログラム、不適切なチューニング、過剰なデータによる過負荷、その他の軽微な不具合など、いくつかの要因が考えられます。

これらの問題により、Linux がファイルシステムを正常にマウント (またはアンマウント) できなくなり、システム障害が発生する可能性があります。

こちらもお読みください: Linux でファイル システム タイプを確認する 7 つの方法 (Ext2、Ext3、または Ext4)

さらに、ファイルシステムが損傷した状態でシステムを実行すると、オペレーティング システム コンポーネントまたはユーザー アプリケーションで他のランタイム エラーが発生し、深刻なデータ損失につながる可能性があります。ファイルシステムの破損や損傷を避けるためには、ファイルシステムの健全性を常に監視する必要があります。

この記事では、ext2、ext3、および ext4 ファイルシステムの健全性を監視および維持するためのツールについて説明します。ここで説明するすべてのツールには root ユーザー権限が必要なので、それらを実行するには sudo コマンドを使用します。

EXT2/EXT3/EXT4 ファイルシステム情報を表示する方法

dumpe2fs は、ext2/ext3/ext4 ファイルシステム情報をダンプするために使用されるコマンド ライン ツールです。つまり、デバイス上のファイル システムのスーパー ブロックおよびブロック グループ情報を表示します。

dumpe2fs を実行する前に、必ず df -hT コマンドを実行してファイルシステムのデバイス名を確認してください。

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

-b フラグを渡すと、ファイル システム内で不良として予約されているブロックを表示できます (出力は不良ブロックを意味しません)。

dumpe2fs -b

EXT2/EXT3/EXT4 ファイルシステムのエラーのチェック

e2fsck は、ext2/ext3/ext4 ファイルシステムのエラーとfsck チェックを検査するために使用され、オプションで Linux ファイルシステムを修復できます。これは基本的に、提供されるさまざまなファイル システム チェッカー (fsck.fstype、たとえば fsck.ext3fsck.sfx など) のフロントエンドです。 Linux 上で。

Linux は、/etc/fstab 構成ファイルでチェックインするようにラベル付けされたパーティションでシステム起動時に e2fack/fsck を自動的に実行することに注意してください。これは通常、ファイルシステムが正常にアンマウントされなかった後に行われます。

注意: マウントされたファイルシステムでは e2fsck または fsck を実行しないでください。実行する前に、必ず最初にパーティションをアンマウントしてください。以下に示すように、これらのツールをその上に配置します。

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

あるいは、-V スイッチで詳細出力を有効にし、-t を使用して次のようにファイル システム タイプを指定します。

sudo fsck -Vt ext4 /dev/sda10

EXT2/EXT3/EXT4 ファイルシステムのチューニング

ファイルシステム損傷の原因の 1 つは不適切なチューニングであることは最初から述べました。以下で説明するように、tune2fs ユーティリティを使用して、ext2/ext3/ext4 ファイルシステムの調整可能なパラメータを変更できます。

ファイルシステムのスーパーブロックの内容 (パラメーターの現在の値を含む) を表示するには、次のように -l オプションを使用します。

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

次に、-c フラグを使用して、e2fsck によってファイルシステムがチェックされるまでのマウント数を設定できます。このコマンドは、4 回のマウントごとに /dev/sda10 に対して e2fsck を実行するようにシステムに指示します。

sudo tune2fs -c 4 /dev/sda10

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

-i オプションを使用して、2 つのファイルシステム チェック間の時間を定義することもできます。次のコマンドは、ファイルシステムのチェック間隔を2 日に設定します。

sudo tune2fs  -i  2d  /dev/sda10

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

ここで、以下のコマンドを実行すると、/dev/sda10 のファイルシステム チェック間隔が設定されます。

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

デフォルトのジャーナリングパラメータを変更するには、-J オプションを使用します。このオプションにはサブオプションもあります: size=journal-size (ジャーナルのサイズを設定)、device=external-journal (ジャーナルが保存されるデバイスを指定)、location=journal-location (ジャーナルの場所を定義します)。

ファイルシステムに対して設定できるサイズまたはデバイスのオプションは 1 つだけであることに注意してください。

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

最後になりましたが、ファイルシステムのボリュームラベルは、以下のように -L オプションを使用して設定できます。

sudo tune2fs -L "ROOT" /dev/sda10

EXT2/EXT3/EXT4 ファイルシステムのデバッグ

debugfs は、シンプルで対話型のコマンド ライン ベースの ext2/ext3/ext4 ファイルシステム デバッガーです。これにより、ファイルシステムのパラメータを対話的に変更できます。サブコマンドまたはリクエストを表示するには、"?" と入力します。

sudo debugfs /dev/sda10

デフォルトでは、ファイルシステムは読み取り/書き込みモードで開く必要があります。読み取り/書き込みモードで開くには、-w フラグを使用します。カタストロフィック モードで開くには、-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
....

空き領域の断片化を表示するには、次のようにfreefrag リクエストを使用します。

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:  

提供されている簡単な説明を読むだけで、ファイルやディレクトリの作成または削除、現在の作業ディレクトリの変更など、その他の多くのリクエストを調べることができます。 debugfs を終了するには、q リクエストを使用します。

それは今のところすべてです!以下のさまざまなカテゴリに関連記事がまとめられていますので、ぜひお役立てください。

ファイルシステムの使用状況情報:

  1. Linux でディスク容量を確認するための 12 の便利な「df 」コマンド
  2. Pydf ディスク使用量を異なる色で確認するための代替「df 」コマンド
  3. ファイルとディレクトリのディスク使用量を調べるための 10 の便利な du (ディスク使用量) コマンド

ディスクまたはパーティションの健全性をチェックします。

  1. 3 つの便利な GUI およびターミナルベースの Linux ディスク スキャン ツール
  2. Linux でハードディスク上の不良セクタまたは不良ブロックを確認する方法
  3. Linux システムのパーティションとディレクトリを修復およびデフラグする方法

ファイルシステムを健全に維持すると、Linux システムの全体的なパフォーマンスが常に向上します。ご質問やその他の意見がございましたら、以下のコメント フォームをご利用ください。