Linux

fsck + 為什麼 fsck 堅持不使用“-a”標誌?

  • October 4, 2021

最近,我們在 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

所以我們也嘲笑過使用選項fsck自動執行(當然之後)-a``umount

$ 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使用-a標誌或在fsck沒有手動步驟的情況下執行嗎?

-a-p)選項用於告訴fsck嘗試在沒有使用者互動的情況下修復文件系統,如果這是不可能的(存在失去數據或通過選擇錯誤選項進一步損壞文件系統的風險)fsck -a將失敗並告訴您執行它在手動模式下並自行決定如何修復每個錯誤。

e2fsck 手冊頁

自動修復(“整理”)文件系統。此選項將導致 e2fsck 自動修復任何無需人工干預即可安全修復的文件系統問題。如果 e2fsck 發現了一個可能需要係統管理員採取額外糾正措施的問題,e2fsck 將列印該問題的描述,然後以邏輯值 4 退出或輸入退出程式碼。(請參閱退出程式碼部分。)此選項通常由系統的引導腳本使用。

如果您想fsck完全以非互動方式執行,您可以使用該-y選項來回答yes所有問題,但我建議您不要這樣做。

引用自:https://unix.stackexchange.com/questions/671772