fsck + fsckはなぜ「-a」フラグを使用しないと主張しますか?

fsck + fsckはなぜ「-a」フラグを使用しないと主張しますか?

最近、私たちは以下のようにRHEL VMサーバーから多くのカーネルメッセージを受け取りました。

[Mon Oct  4 11:33:32 2021] EXT4-fs error (device sdb): htree_dirblock_to_tree:914: inode #397095: block 1585151: comm du: bad entry in directory: rec_len is smaller than minimal - offset=0(4096), inode=0, rec_len=0, name_len=0

だから私たちはfsckautorunオプションを使ってモックします-aumountもちろん後に)。

$ fsck -a /dev/sdb
fsck from util-linux 2.23.2
/dev/sdb contains a file system with errors, check forced.
/dev/sdb: Directory inode 397095, block #1, offset 0: directory corrupted


/dev/sdb: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
        (i.e., without -a or -p options)

-aこのオプションが使用されると指定されていますが、fsck使用しないことに固執します。

したがって、最後のオプションは手動で行うことです。

#  fsck  /dev/sdb
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdb contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 2134692 ref count is 2, should be 1.  Fix<y>? yes
Unattached inode 2134798
Connect to /lost+found<y>? yes
Inode 2134798 ref count is 2, should be 1.  Fix<y>? yes
Unattached inode 2135050
Connect to /lost+found<y>? yes
Inode 2135050 ref count is 2, should be 1.  Fix<y>? yes
Unattached inode 2135058
Connect to /lost+found<y>? yes
Inode 2135058 ref count is 2, should be 1.  Fix<y>? yes

上から見たように時間がかかります。

fsck手動ステップなしでフラグを強制的に実行または実行する方法を知っていますか-afsck

答え1

-a(または)オプションは、ユーザーの介入なしにファイルシステムを回復しようとするように指示する-pために使用されます。fsckこれが不可能な場合(無効なオプションを選択してデータが失われたり、ファイルシステムがさらに破損する危険性がある)、fsck -a失敗して通知します。手動モードで実行するには、次の手順に従って各エラーを解決する方法を自分で決定します。

~からe2fsck のマニュアルページ:

ファイルシステムを自動的に修復(「クリーンアップ」)します。このオプションを使用すると、e2fsckは手動介入なしに安全に回復できるすべてのファイルシステムの問題を自動的に回復します。 e2fsckがシステム管理者の追加の修正措置を必要とする可能性がある問題を検出すると、e2fsckは問題の説明を印刷し、論理OR値の終了コード4で終了します。 (「終了コード」セクションを参照してください。)このオプションは通常、システムの起動スクリプトで使用されます。

fsck完全に非対話型で実行するには、その-yオプションを使用してすべての質問に答えることができますが、yesお勧めしません。

関連情報