Linux
如何知道是否需要執行 e2fsck 來修復損壞的塊?
我們想在每台 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:
- 備份您關心的任何數據。
- 啟動寫入工作負載,例如儲存基準測試
fio
- 使系統嚴重崩潰。在 Linux 上,嘗試
echo 'c' > /proc/sysrq-trigger