
1 個硬碟託管4 個EXT4 檔案系統,我們將它們命名為A(1,2,3,4),每個檔案系統都會在我的fstab 中獲得一個條目,但很少安裝,磁碟機甚至在初始化時透過udiskctl 關閉電源。
1 個硬碟託管8 個EXT4 檔案系統,每個檔案系統都會在我的fstab 中取得一個條目,其中4 個,假設B(1,2,3,4) 在初始化時自動掛載,另外四個,假設C( 1,2,3,4) 偶爾根據需要安裝。
在這些情況下(A(1,2,3,4) 未安裝且相關驅動器已關閉;C(1,2,3,4) 檔案系統中沒有一個安裝)並且出於任何原因(電源故障、內核恐慌、硬重置...)系統未正常關閉。
下次重新啟動時,將檢查每個檔案系統。
所有在異常關閉時未安裝的檔案系統都會很快被清除:
問題一:這個結論是由對超級塊的唯一解讀得出的嗎?s_狀態欄位或是否進行了其他檢查?
Q2:這是否取決於觸發異常關閉的原因,是否取決於底層驅動器是否通電?
Q3:這些檢查會命令 fsck 掛載檔案系統嗎?
Q4:雖然控制台上報告了這些乾淨的狀態,但為什麼我找不到這些報告在我的內核(或任何其他)日誌中回顯,而那些實際上需要修復並最終從日誌中恢復的文件系統的跟踪是?
Linux-5.4/e2fsck 1.46.5/下開放資源庫作為初始化系統和元學如果重要的話,充當系統日誌守護程序。
Metalog 最相關的規則:
Kernel messages :
facility = "kern"
logdir = "/var/log/kernel"
break=1
Fallback:
facility = "*"
minimum = 6
logdir = "/var/log/fallback"
答案1
請不要提出多個問題。
當分割區被mount
編輯時,檔案系統程式碼將分割區的區塊分配表複製到記憶體中,並將磁碟的表標記為「需要還原」。
檔案系統代碼以記憶體速度管理區塊分配,這比磁碟速度快得多。
記憶體中的表會定期寫回磁碟,這樣既可以保持它們相對最新,又可以避免將所有表同時保存在記憶體中。
當分割區被umount
編輯時,記憶體中的表被寫入磁碟(清除「需要恢復」標誌)。內存中的表將被丟棄。
當系統崩潰時,最新的記憶體表將會遺失,並且「需要恢復」標誌仍然設定在磁碟上。
如果啟動需要文件系統(/etc/fstab
條目有auto
),並且在磁碟上設置了“需要恢復”標誌,則fsck
運行特定於文件系統的文件系統(例如,fsck.ext4
對於ext4
文件系統)來“恢復”文件系統- 使塊分配表“正確」 「(最大限度地減少資料遺失,確保沒有區塊既不空閒也不使用,...),保留「需要復原」時寫入的區塊等fsck
。被mount
編輯,並且此外,磁碟還設置了“需要恢復”標誌,直到fsck
成功為止。
這種預安裝系統引起的fsck
活動發生在引導過程「啟動」到足以真正記錄訊息之前,但請嘗試dmesg
。
感謝 LustreOne,
在掛載時,e2fsck 將檢查日誌「需要恢復」標誌,並對掛載檔案系統所需的超級區塊和群組描述符區塊進行基本檢查。如果設定了“需要恢復”,那麼它將重播日誌。如果發現其他錯誤,它將運行檔案系統的完整 e2fsck。 – LustreOne