Linux
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
所以我們也嘲笑過使用選項
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 將列印該問題的描述,然後以邏輯值 4 退出或輸入退出程式碼。(請參閱退出程式碼部分。)此選項通常由系統的引導腳本使用。
如果您想
fsck
完全以非互動方式執行,您可以使用該-y
選項來回答yes
所有問題,但我建議您不要這樣做。