Linux

如何知道是否需要執行 e2fsck 來修復損壞的塊?

  • November 13, 2017

我們想在每台 Red Hat Linux 機器上檢查磁碟上的文件系統/deb/sdc …。/dev/sdg

目標是找到需要的磁碟e2fsck(如e2fsck -y /dev/sdb等)

根據手冊頁

-n

以只讀方式打開文件系統,並假設所有問題的答案都是“否”。允許e2fsck以非互動方式使用。-p此選項不能與or-y選項同時指定。

當我們執行命令時(範例)

e2fsck -n /dev/sdXX

我們得到

e2fsck 1.42.9 (28-Dec-2013)
Warning!  /dev/sdc is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sdc: clean, 94/1310720 files, 156685/5242880 blocks

那麼我們需要從e2fsck -n輸出中擷取什麼,這需要我們執行e2fsck(沒有-n)?

e2fsck 程序

init 1
umount /dev/sdXX
e2fsck -y /dev/sdXX  # (or e2fsck -C /dev/sdXX for full details) 
init 3

RHEL 啟動腳本將fsck在每次啟動時執行。為此目的重新啟動與切換到單使用者模式的過程相同。

如果引導掛起,您知道文件系統日誌不干淨,因為fsck正在等待輸入。它會告訴您不清潔並提示進行任何維修。

您可以強制檢查touch /forcefsck 並重新啟動。

編輯:您必須按照e2fsck手冊頁下方的內容正確解除安裝 fsck。當您想要修復文件系統時,您還需要省略 -n “no” 選項。

請注意,通常在掛載的文件系統上執行 e2fsck 是不安全的。唯一的例外是指定了 -n 選項,但未指定 -c、-l 或 -L 選項。但是,即使這樣做是安全的,如果文件系統已掛載,e2fsck 列印的結果也是無效的。如果 e2fsck 詢問您是否應該檢查已掛載的文件系統,唯一正確的答案是“不”。

您無需重新啟動即可執行此操作,這很方便。如果您的服務的停機時間對您來說是個問題,請在修復該系統時將數據副本帶到另一個儲存系統上。也稱為製定業務連續性計劃。

要在測試系統上查看真正不干淨的 fsck:

  1. 備份您關心的任何數據。
  2. 啟動寫入工作負載,例如儲存基準測試fio
  3. 使系統嚴重崩潰。在 Linux 上,嘗試echo 'c' > /proc/sysrq-trigger

引用自:https://serverfault.com/questions/883093