日誌檔案系統

yeahokay發表於2008-07-21
在近代歷史上,日誌檔案系統被認為十分奇特,主要是處於研究階段。而如今,日誌檔案系統(ext3)已經成為 Linux 的預設檔案系統。本文向大家揭示了日誌檔案系統背後的一些思想,以及在電源故障或系統崩潰時,如何提供更好的完整性。此外本文還介紹了現行的幾種日誌檔案系統和下一代日誌檔案系統。

定義日誌檔案系統的方法有很多種,但是讓我們抓住要點。日誌檔案系統就是專為那些厭倦了一直盯著啟動時 fsck(即檔案系統一致性檢查)的人而設計的(日誌檔案系統同樣適用於希望檔案系統具有故障恢復能力的群體)。如果系統採用傳統的未提供日誌功能的檔案系統,那麼作業系統在檢測到系統為非正常關機時,會使用 fsck 應用程式執行一致性檢驗。該應用程式會掃描檔案系統(這要花費很長的時間),並修復任何可安全修復的問題。而在某些情況下,當檔案系統損壞嚴重時,作業系統會啟動到單使用者模式,由使用者進行進一步的修復。

那麼現在您應該清楚日誌檔案系統針對的是哪類人群了,但是他們是如何取締 fsck 的呢?籠統地說,日誌檔案系統就是透過維護一份日誌來防止檔案系統崩潰。所謂日誌就是一種特殊的檔案,它會在一個迴圈的緩衝區內記錄檔案系統的修改,然後將其定期提交到檔案系統。一旦系統發生崩潰,日誌檔案就會起到一個檢查點的作用,用於恢復未儲存的資訊,防止損壞檔案系統後設資料。

總之,日誌檔案系統就是一種具有故障恢復能力的檔案系統,它利用日誌來記錄尚未提交到檔案系統的修改,以防止後設資料破壞(請參見圖 1)。但是如眾多其他 Linux 解決方案一樣,日誌檔案系統有多種方案供您選擇。下面就讓我們一起簡短回顧一下日誌檔案系統的歷史,然後再看一看現行的幾種檔案系統,看看它們之間有什麼區別。

更麻煩的是,為了確保檔案系統後設資料的正確性(即使未檢測到損壞),作業系統會自動啟動 fsck 程式。因此,避免對檔案系統進行一致性檢驗正是需要改進的地方。

後設資料 指磁碟上的資料的管理結構。它表示檔案的建立與刪除、目錄的建立與刪除、擴充檔案、擷取檔案等。

[@more@]

如今,有幾種日誌檔案系統應用非常廣泛。每一種都有其自己的優缺點。下面介紹現存最普遍的四種日誌檔案系統。

JFS2(又稱 enhanced journaled file system)是最早期的日誌檔案系統,在植入 Linux 之前已被應用於 IBM AIX® 作業系統多年。它是 64 位的檔案系統,雖然它是在原來的 JFS 的基礎上開發的,但卻較之有所改進,即:JFS2 具有更優的擴充套件效能,而且支援多處理器架構。

JFS2 支援預定的日誌記錄方式,可以提高較高的效能,並實現亞秒級檔案系統恢復。JFS2 同時為提高效能提供了基於分割槽的檔案分配(Extent-based allocation)。基於分割槽的分配 是指對一組連續的塊而非單一的塊進行分配。由於這些塊在磁碟上是連續的,其讀取和寫入的效能就會更好。這種分配的另外一個優勢就是可以將後設資料管理最小化。按塊分配磁碟空間就意味著要逐塊更新後設資料。而使用分割槽,後設資料則僅需按照分割槽(可以代表多個塊)更新。

JFS2 還使用了 B+ 樹,以便更快地查詢目錄和管理分割槽描述符。JFS2 沒有內部日誌提交策略,而是在 kupdate 守護程式超時時提交。

XFS 是 Silicon Graphicsis 於 1995 年為 IRIX 作業系統開發的其他早期日誌檔案系統之一。它於 2001 年就已經被植入 Linux,因此,它已經成熟而且可靠。

XFS 支援 64 位全地址定址,並以 B+ 樹為目錄和檔案分配提供高效能。XFS 同樣使用了基於分割槽的分配,支援可變的塊大小(從 512 位元組到 64KB )。除分割槽外,XFS 還採用延時分配,即等到塊將被寫入磁碟時,再為其分配磁碟空間。這樣所需磁碟空間總數就一目瞭然,因此這個功能提高了分配連續磁碟塊的可能性。

XFS 還有一些其他的有趣特性,它可以保證 rate 輸入輸出(I/O — 透過為檔案系統使用者保留頻寬)和直接 I/O。其中,資料是直接在磁碟和使用者空間緩衝區間複製的(而不是從多個緩衝區進入)。XFS 採用回寫日誌策略。

第三擴充套件檔案系統(third extended file system,ext3fs)是最流行的日誌檔案系統,是由 ext2 檔案系統演化而來。實際上,Ext3fs 可以與 ext2fs 相容,這是因為 ext3fs 使用的結構與 ext2fs 相同,僅僅多了一個日誌而已。我們甚至可以把 ext3fs 的一部分當作 ext2 檔案系統掛載,或者將 ext2 檔案系統轉換成 ext3 檔案系統(使用 tune2fs 實用程式)。

Ext3fs 允許用三種方式記錄日誌(回寫,預定和資料),但預定模式為預設模式。日誌提交策略也是可配置的,但是預設在日誌填滿 1/4 時或其中一個提交計時器超時時,提交日誌。

ext3fs 主要的弊端之一就是它最初不是作為日誌檔案系統而設計的。它是在 ext2fs 的基礎上開發的,因此缺少一些其他日誌檔案系統所具備的高階特性(例如分割槽)。它在效能方面較之 ReiserFS、JFS 以及 XFS 也尤為遜色,但它所需要的 CPU 和記憶體要比同類解決方案少。

ReiserFS 是從一開始就按照記錄日誌的意圖而開發的日誌檔案系統。ReiserFS 於 2001 年被引進到主流 2.4 核心(Linux 採用的第一個日誌檔案系統)。其預設的日誌記錄方法為預定,且支援以線上調整大小的方式擴充套件檔案系統。ReiserFS 同時還具有 tail packing 功能,顯著減少了磁碟碎片。在處理較小檔案方面,ReiserFS 的速度要比 ext3f 快(當 tail packing 可用時)。

ReiserFS(又稱 ReiserFS v3)具有很多先進的功能,如 B+ 樹。該檔案系統的基礎格式建立在單一的 B+ 樹的基礎之上,這使得搜尋的效率和可伸縮性增強。提交策略則取決於日誌的大小,但是要以待提交的塊的數量為基礎。

ReiserFS 也遇到了幾個問題 — 大多是最近出現的,這與其開發者遇到了一些法律糾紛有直接原因。

很多情況下,一些檔案的大小小於邏輯塊。為了不把可以分配給一個邏輯塊的磁碟空間浪費給小檔案(稱之為tail),於是把多個檔案打包到一個單一的邏輯塊中。結果發現這種方法可以讓磁碟空間的容量比其他競爭檔案系統(有效能損失)高 5%。

現在您已經瞭解了現行的(和過去的)日誌檔案系統,下面就讓我們看一看它的發展趨勢。

在成功地將 ReiserFS 合併到 Linux 核心,並被很多的 Linux 發行版採用之後,Namesys(開發 ReiserFS 的公司)便開始致力於新的日誌檔案系統的開發。Reiser4 被設計成為全新的日誌檔案系統,它擁有很多先進的功能。

Resier4 擬定透過 wandering 日誌和延遲分配塊直至日誌提交(像在 XFS 中一樣)的方式來實現更優秀的日誌記錄。Reiser4 還設計有靈活的外掛架構(以支援諸如壓縮和加密之類的功能),但是被 Linux 社群拒絕了,因為這些在虛擬檔案系統(virtual file system,VFS)被當作是最好的功能。

由於 Namesys 的所有者的堅持,所有關於 Reiser4 的商業活動都停止了。

第四擴充套件日誌檔案系統(fourth extended journaling file system,ext4fs)是由 ext3fs 演化而來。Ext4 檔案系統被設計為具有向前和向後相容性,但它具有許多新的高階特性(其中的一些特性破壞了相容性)。這就意味著您可以將 ext4fs 的一部分作為 ext3fs 掛載,反之亦然。

首先,ext4fs 是 64 位檔案系統,並被設計為可以支援很大的容量(1 exabyte)。它還可以使用分割槽,但是這樣做將失去與 ext3fs 的相容性。像 XFS 和 Reiser4 一樣,ext4fs 還支援在必要時採取延時分配方式分配塊(這樣可以減少磁碟碎片)。日誌的內容也已經執行過檢查和(checksum),使日誌更加可靠。ext4fs 並沒有採用標準的 B+ 或者 B* 樹,取而代之的是 B 樹的一種變體,叫做 H 樹,它支援更大的子目錄(ext3 的上限為 32KB )。

雖然延時分配的方法可以減少磁碟碎片,但時間久了,一個大的檔案系統可能會成為碎片。為解決這個問題,開發了線上磁碟碎片整理工具(e4defrag)。您可以使用這個工具來整理單個的檔案或者整個檔案系統。

ext3fs 與 ext4fs 間的另一個有趣的區別就在於檔案的日期解析度。在 ext3 中,時間戳的最小解析度為 1 秒。而 Ext4fs 是面向未來的:那時處理器和介面的速度會持續加快,需要更高的解析度。因此,ext4 中時間戳的最小解析度為 1 納秒。

Ext4fs 已被合併到自 2.6.19 以後的 Linux 核心中,但它還是不夠穩定。下一代系統的開發將繼續致力於此;輔之以上一代的優勢, 它就會是下一代的 Linux 日誌檔案系統。

日誌檔案系統在系統崩潰或斷電時提供了可靠性,並防止系統崩潰。另外,與較傳統的檔案系統方法(比如那些依賴於 fsck 的系統)相比,日誌檔案系統大大地縮短了系統崩潰的恢復時間。新的日誌記錄功能的開發要指望將來的新演算法與結構,也要仰仗以前的演算法與結構,將 JFS 和 XFS 的功能結合起來。將來日誌檔案系統到底會如何發展還不得而知,但可以確定的是它們會更具實用性,並會成為新的日誌檔案系統標準。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/786540/viewspace-1007581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章