草草瀏了一遍jbd源**分析,對日誌機制的原理和實現有了些粗略的印象,一些細節問題不想深究了,只有在動手實踐之後才能有更深入的理解,這是不可取代的途徑。
為了是這一上午和乙個晚上的工作留下些許印象,記錄一些片段士的理解。
1.日誌的實現是加在在檔案系統的各種操作流程中的,比如
ext3_fill_super() 讀入檔案系統的超級
ext3_load_journal() 讀入對應日誌的inode資訊ext3_get_journal() 根據日誌inode資訊構建乙個journal_t結構
journal_load() 進行日誌的恢復操作
load_superblock() 讀入日誌的超級塊
journal_recover() 進行實際的日誌恢復操作。
2.日誌系統在磁碟中開闢了一塊區域,想檔案系統一樣有超級塊,但是是以事務(transaction)的形式存在的,transaction包含若干原子操作(handle)。
3.日誌系統有三種模式:journal ;ordered;writeback。常用的是ordered,只對元資料塊的操作進行日誌
4.日誌系統包含描述符塊和資料塊,分別儲存操作描述和被操作的資料塊。
5在記憶體中有日誌系統的緩衝區,通常每隔5秒,將記憶體中快取commit到磁碟上(對這個時間,我頗有疑問:日誌存在的意義在於當意外宕機時候,記憶體的資料沒有寫到磁碟,但是日誌系統卻有記錄,也就是說日誌的塊已經回刷到磁碟。若一次寫更新已經到了記憶體緩衝,但是還沒寫入日誌的磁碟空間,日誌的恢復功能就不能實現。而5秒的間隔,應該很可能出現這中情況吧?不就結了,動手做完demo再來研究)
基本就這些吧,具體的內容還是要參照
ext3日誌檔案系統工作原理理解
ext3檔案系統是在ext2檔案系統的基礎上增加了日誌功能。具體的做法就是,在向檔案系統中的檔案寫入資料的時候,會先產生乙個journal log日誌,這個journal log日誌是生成在記憶體中的。系統中有乙個後台程序kjournald2,會定時檢視這些journal log日誌對應的磁碟操作是...
關於ext3日誌檔案系統的一點淺見
ext3新增了日誌功能,下面是研究通過日誌恢復檔案時的一點心得,工作需要,未作深入研究。只言片語,不成體系,個人理解,可能不對!jbd日誌過程 ordered為例 1.對元資料的修改 以塊為單位 先記錄到日誌中 這時的資料應該還在記憶體 2.對檔案內容進行相應操作 3.進行commit操作,表示此次...
Ext3 學習 3 表單驗證
a 表單驗證,是要顯示錯誤提示資訊,所以加上 necessary when to show tips ext.quicktips.init set the location of tips,default qtip ext.form.field.prototype.msgtarget side b ...