Linux 檔案系統負責組織資料的存儲和檢索。無論如何,隨著時間的推移,檔案系統可能會損壞,某些部分可能無法訪問。如果您的檔案系統出現此類不一致,建議您驗證其完整性。
可以通過一個名為fsck(檔案系統一致性檢查)的系統工具來完成此操作,它會在開機時自動檢查根檔案系統或手動運行。
在本文中,我們將回顧fsck 命令及其用法,以幫助您修復 Linux 磁碟錯誤。
目錄
何時在 Linux 中使用 fsck 命令
在不同的情境下,您可能會想運行 fsck。以下是一些示例:
- 系統無法啟動。
- 系統上的文件損壞(通常您可能會看到輸入/輸出錯誤)。
- 連接的驅動器(包括閃存驅動器/SD 卡)未按預期運作。
fsck 命令選項
需要使用超級用戶權限或 root 來運行 fsck 命令。您可以使用不同的參數。它們的使用取決於您的具體情況。以下是一些較重要的選項:
-A
– 用於檢查所有文件系統。列表來自/etc/fstab
。-C
– 顯示進度條。-l
– 鎖定設備以保證在檢查期間不會有其他程序嘗試使用該分區。-M
– 不檢查已掛載的文件系統。-N
– 僅顯示將要執行的操作 – 不進行實際更改。-P
– 如果要並行檢查文件系統,包括根文件系統。-R
– 不檢查根文件系統。這僅與 ‘-A
‘ 一起使用時有用。-r
– 提供正在檢查的每個設備的統計信息。-T
– 不顯示標題。-t
– 專門指定要檢查的 Linux 文件系統類型。類型可以是逗號分隔的列表。-V
– 提供正在執行的操作的描述。
運行 fsck 命令來修復 Linux 文件系統錯誤
為了運行 fsck,您需要確保要檢查的分區未掛載。本文將使用我第二個設備 /dev/sdb
掛載在 /mnt
中。
如果嘗試在分區掛載時運行 fsck,將發生以下情況。
# fsck /dev/sdb

為了避免這種情況,請使用
# umount /dev/sdb
。然後可以安全地運行 fsck。
# fsck /dev/sdb

理解 fsck 退出代碼
執行完 fsck 後,它將返回一個退出代碼。這些代碼可以在 fsck 的手冊中找到,方法是運行:
# man fsck 0 No errors 1 Filesystem errors corrected 2 System should be rebooted 4 Filesystem errors were left uncorrected 8 Operational error 16 Usage or syntax error 32 Checking canceled by user request 128 Shared-library error
Fsck 修復 Linux 文件系統
有時一個文件系統上可能會發現多個錯誤。在這種情況下,您可能希望fsck自動嘗試修正這些錯誤。可以使用以下方法實現:
# fsck -y /dev/sdb
使用 -y
標誌,自動回答 fsck 提示以更正錯誤。
同樣,您可以在所有文件系統上運行相同的操作(無需 root):
$ fsck -AR -y
在 Linux 根分區上運行 fsck 的方法
在某些情況下,您可能需要在系統的根分區上運行fsck。由於不能在分區掛載時運行fsck,您可以嘗試以下其中一個選項:
- 在系統啟動時強制執行 fsck
- 在救援模式下運行 fsck
我們將檢討這兩種情況。
在系統啟動時強制執行 fsck
這是相對容易完成的,你需要做的唯一事情就是在你系統的根分割區中創建一個名為forcefsck的文件。使用以下命令:
# touch /forcefsck
然後你可以簡單地強制或安排重新啟動你的系統。在下一次啟動時,將執行fsck。如果停機時間至關重要,建議仔細計劃,因為如果你的系統中有許多使用的inode,fsck可能需要額外的時間。
系統啟動後,檢查文件是否仍然存在:
# ls /forcefsck
如果存在,你可能希望刪除它以避免在每次系統啟動時進行fsck。
在救援模式下運行fsck
在救援模式中運行fsck需要進行幾個額外的步驟。首先,準備好你的系統進行重新啟動。停止任何關鍵服務,如MySQL/MariaDB等,然後輸入。
# reboot
在啟動過程中,按住shift
鍵以顯示grub菜單。選擇“高級選項”。

然後選擇“恢復模式”。

在下一個菜單中選擇“fsck”。

你將被問及是否希望重新掛載你的/
文件系統。選擇“是”
。

你應該會看到類似於這樣的內容。

你在這個教程中學到了如何使用 fsck 並對不同的 Linux 檔案系統進行一致性檢查。如果你對 fsck 有任何問題,請毋需猶豫在下面的評論區提出。

結論
Source:
https://www.tecmint.com/fsck-repair-file-system-errors-in-linux/