Loading AI tools
来自维基百科,自由的百科全书
日誌檔案系統(英語:Journaling file system)是一種檔案系統。在發生變化時,它先把相關的資訊寫入一個被稱為日誌的區域,然後再把變化寫入主檔案系統。在檔案系統發生故障(如核心崩潰或突然停電)時,日誌檔案系統更容易保持一致性,並且可以較快恢復。[1]
對檔案系統進行修改時,需要進行很多操作。這些操作可能中途被打斷,也就是說,這些操作不是「不可中斷」(atomic)的。如果操作被打斷,就可能造成檔案系統出現不一致的狀態。[1]
例如:刪除檔案時,先要從目錄樹中移除檔案的標示,然後收回檔案占用的空間。如果在這兩步之間操作被打斷,檔案占用的空間就無法收回。檔案系統認為它是被占用的,但實際上目錄樹中已經找不到使用它的檔案了。
在非日誌檔案系統中,要檢查並修復類似的錯誤就必須對整個檔案系統的資料結構進行檢查。一般在掛載檔案系統前,作業系統會檢查它上次是否被成功解除安裝,如果沒有,就會對其進行檢查。如果檔案系統很大或者I/O頻寬有限,這個操作可能會花費很長時間。
為了避免這樣的問題,日誌檔案系統分配了一個稱為日誌(journal)的區域來提前記錄要對檔案系統做的更改。在崩潰後,只要讀取日誌重新執行未完成的操作,檔案系統就可以恢復一致。這種恢復是原子的,因為只存在幾種情況:
在很多日誌檔案系統(如:ext3、ReiserFS)中,可以選擇三個級別的日誌:回寫(writeback)、順序(ordered)和資料(data)。
在回寫模式中,只有元資料被記錄到日誌中,資料會被直接寫入主檔案系統。這種模式能提供較好的效能,不過有較大的風險。例如:在增大檔案時,資料還未寫入就發生崩潰,那麼檔案系統恢復後,檔案後面就可能出現垃圾資料。
在順序模式中,只有元資料被記錄到日誌中,但在日誌被標記為提交前,資料會被寫入檔案系統。在這種模式下,如果在增大檔案時,資料還未寫入就發生崩潰,那麼在恢復時這個事務會被簡單的復原,檔案保持原來的狀態。
在資料模式中,元資料和檔案內容都先被寫入日誌中,然後在提交到主檔案系統。這提高了安全性,但損失效能,因為所有資料要寫入兩次[1]。在這種模式下,如果在增大檔案時,發生崩潰,那麼可能有兩種情況:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.