e2fsck 是 ext2/ext3/ext4 檔案系統專用的一致性檢查與修復工具。等同於 fsck -t ext4 或 fsck.ext4。嚴禁在已掛載的分區上執行 (除非掛載為唯讀),否則極易造成檔案系統永久損壞。本文整理核心參數、標準流程、常見錯誤碼與救援模式操作。
| 參數 | 功能 | 建議場景 |
|---|---|---|
-p / -a | 自動修復 (無需互動),安全修復 | 例行維護、腳本自動化 |
-y | 對所有詢問回答 yes,積極修復 | 嚴重損壞、救援模式 |
-f | 強制檢查 (即使標記 clean) | 懷疑檔案系統異常、定期強制巡檢 |
-c | 檢查壞軌 (呼叫 badblocks),標記壞區塊 | 磁碟老化、I/O 錯誤頻發 |
-C fd | 將進度條寫入指定檔案描述符 (供 GUI/進度條) | 圖形介面前端、監控腳本 |
-b superblock | 指定備用超級區塊位置 | 主超級區塊損壞時救援 |
-B blocksize | 指定區塊大小 | 極少數需手動指定場景 |
-D | 優化目錄索引 (htree) | 大目錄效能下降時 |
-v | 詳細輸出 | 除錯、記錄日誌 |
-n | 唯讀模式,僅檢查不修復 (回答 no) | 評估損壞程度、預演 |
umount /dev/sdXn。若為根分區,進入救援模式 (LiveCD/單用戶模式)。e2fsck -n /dev/sdXn 觀察錯誤數量與類型。dumpe2fs /dev/sdXn | grep -i superblock 記錄備用超級區塊位置。e2fsck -p /dev/sdXne2fsck -y /dev/sdXne2fsck -cy /dev/sdXn (耗時極長)mount /dev/sdXn /mnt && ls -l /mnt。
# 1. 查詢備用超級區塊
mke2fs -n /dev/sdXn # -n 僅顯示不建立,輸出含備用 superblock 位置
# 或
dumpe2fs /dev/sdXn | grep -i superblock
# 2. 使用備用超級區塊修復
e2fsck -b 32768 /dev/sdXn # 32768 為常見第一備用位置
# 修復成功後,主超級區塊會被重建
| 錯誤/現象 | 原因 | 處理 |
|---|---|---|
Couldn't find valid filesystem superblock | 主超級區塊損壞、分區表錯誤、未格式化 | 用 -b 指定備用 superblock;確認裝置路徑正確 |
Filesystem mounted / Busy | 分區仍掛載 RW | umount 或進入救援模式 |
Inode ... has illegal block(s) | inode 指向無效區塊 | -y 自動清除 |
Directory inode ... has a hole | 目錄結構損壞 | -D 優化目錄或 -y 重建 |
大量 Multiply-claimed block | 多個 inode 指向同一區塊 | -y 釋放重複區塊,檢查資料完整性 |
e2fsck -E discard:修復後向 SSD 發送 TRIM 指令,回收未用區塊。e2fsck -E nodiscard:禁用 TRIM (舊 SSD/控制器不支援)。/etc/cron.weekly/e2fsck-auto:對非根分區執行 e2fsck -p (需卸載或維護窗口)。tune2fs -c 30 -i 180d /dev/sdXn 設定掛載次數/天數觸發開機自檢。smartctl -a) 結合 e2fsck -c,提前發現壞軌。e2fsck 是 ext 系列檔案系統的「急診室」。牢記離線操作、先評估再修復、備份超級區塊三大鐵律,配合 -p/-y/-c/-b 參數組合,能處理 95% 以上的檔案系統不一致問題。