Ext3(Third extended file system)
名詞釋義
如果在檔案系統尚未shutdown前就關機如(停電)時,下次重開機後會造成檔案系統的資料不一致,故這時必須做檔案系統的重整工作,將不一致與錯誤的地方修復。然而,此一重整的工作是相當耗時的,特別是容量大的檔案系統,而且也不能百分之百保證所有的資料都不會流失。
為了克服此問題,使用所謂“日誌式檔案系統 (Journal File System)” 。此類檔案系統最大的特色是,它會將整個磁碟的寫入動作完整記錄在磁碟的某個區域上,以便有需要時可以回溯追蹤。
由於資料的寫入動作包含許多的細節,像是改變檔案標頭資料、搜尋磁碟可寫入空間、一個個寫入資料區段等等,每一個細節進行到
一半若被中斷,就會造成檔案系統的不一致,因而需要重整。
然而,在日誌式檔案系統中,由於詳細紀錄了每個細節,故當在某個過程中被中斷時,系統可以根據這些記錄直接回溯並重整被中斷的部分,而不必花時間去檢查其他的部分,故重整的工作速度相當快,幾乎不需要花時間。
優勢
雖然它的性能(速度)不如它的競爭對手,例如JFS2,ReiserFS和XFS,但它具有重要的優勢,那就是它允許在適當的時候從流行的ext2檔案系統升級,而無需備份和恢複數據;除此之外,它還具有比ReiserFS和XFS更低的的CPU使用率。
ext3檔案系統增加的超越其前代的包括:
· 日誌
· 位目錄跨越多個塊提供基於樹的目錄索引
· 線上系統增長
如果沒有這些,ext3檔案系統也同時是個有效的ext2檔案系統。這樣,經過良好測試的、成熟的檔案系統工具來管理和修復ext2檔案系統工具,可以無需大的變動,就套用於ext3檔案系統。ext2和ext3檔案系統共享相同的工具集,帶有fsck工具的e2fsprogs。這種緊密的聯繫也將兩種檔案系統之間進行轉換(包括升級到ext3和降級為ext2)變得非常容易。
Linux實現的ext3檔案系統,包括3個級別的日誌:
日記
(慢,但風險小)元數據和檔案內容都在提交到主檔案系統前寫入。這樣將提高穩定性但性能上有所損失,因為所有的數據都要寫入2次。如果沒有在/etc/fstab 中加上這個選項,修改中的檔案遇上kernel panic或突然斷電的時候就可能發生損毀的情況,當然,這還是得看軟體是怎么寫入檔案的。
順序
(中速,中等風險)順序和 寫回類似,但在對應的元數據標記為提交前,強制寫入檔案內容。這是很多Linux發行版默認的方式。
回寫
(快,但風險最大;在某種感覺上和ext2相當): 這邊會寫入日誌的只有 metadata 而已,檔案的內容並不會跟著寫入日誌裡面。這樣的作法讓整個效率變快了不少,不過也同樣造成了檔案寫入時不按順序的結果。舉例來說,檔案在附加變大的同時發生了 crash 的情況,就可能造成下次掛載時檔案後面就附加一堆垃圾數據的情況。
儘管ext3缺少一些當代檔案系統的特點,像是動態的inode、樹狀的資料儲放結構等等,都是被視作ext3的缺點之一,不過在這些特點之外,ext3在檔案系統回復上面就有了很好的表現。跟樹狀結構的檔案系統相比,在ext3上面metadata是放在固定的位置,而且在寫入的同時會重複寫入的一些資料讓ext2/3在面臨資料損毀的情況下還有挽回的機會。
劣勢
功能
當初ext3的設計目標就是提供對於ext2的高度兼容,很多磁碟上的結構和都和ext2很相似。也因為這樣,ext3缺乏很多最新設計中的功能,例如動態分配inode和可變塊大小(frags或tails)。
ext3檔案系統在被掛載為寫入的時候,是不能進行fsck的。 ext3檔案系統的傾倒作業在這個檔案系統還是掛載中的時候執行可能會造成資料的損壞。
ext3不支持在其他檔案系統上已經支持(例如:JFS2和ext4)的擴展。
磁碟碎片
在檔案系統級別上,沒有線上的ext3磁碟碎片整理工具。
離線的ext2磁碟碎片整理工具e2defrag,可以用於ext3檔案系統,但前提是在使用前要將檔案系統轉換回ext2。 但依賴於功能位在檔案系統中打開,e2defrag可能會毀滅數據;目前仍然不知道如何處理新的ext3功能。
有一些用戶使用的磁碟碎片整理工具,例如Shake和defrag,這些工具通過複製檔案來實現新分配的檔案不存在碎片。但這只在檔案系統相當空的情況下有效,並且該檔案系統不經常出現碎片。目前沒有真正的用於ext3的磁碟碎片整理工具。
事實上,磁碟碎片整理完全是一種人們在單用戶單進程環境下(如DOS/早期Windows)工作時養成的舊習。
在多任務環境下,磁碟碎片的出現根本是不可避免的,而且碎片化的速度非常之快。作業系統的任務不是不負責任地給用戶提供一個整理工具,而是應該在系統設計的時候消除碎片化對性能的傷害。比如Linux的塊設備操作都要經過一個I/O調度層,通過在調度層中使用帶有電梯算法的調度策略來消除碎片對性能的影響。
另外,如果將來固態硬碟普及乃至取代傳統硬碟,也會讓磁碟碎片的概念成為歷史。
反刪除
和ext2不同,ext3會在刪除檔案時把檔案的節點(inode)中的塊指標清除。這樣做可以在unclean載入檔案系統後,重放日誌時,可以減少對檔案系統的訪問。但也同樣也增加了檔案在反刪除上面的困難。用戶唯一的補救是在硬碟中撈取數據,並且要知道檔案的起始到結束的塊指標。儘管提供了比 ext2在刪除檔案上稍微高一些的安全性,卻也無可避免的帶來了不便之處。
壓縮
Ext3不支持透明壓縮(Ext2以非官方補丁支持)。
大小限制
ext3有一個相對較小的對於單個檔案和整個檔案系統的最大尺寸。這些限制依賴於檔案系統的塊大小;下面的表格總結了這些限制:
塊尺寸 | 最大檔案尺寸 | 最大檔案系統尺寸 |
1KiB | 16GiB | 2TiB |
2KiB | 256GiB | 8TiB |
4KiB | 2TiB | 16TiB |
8KiB | 16TiB | 32TiB |
8KiB塊,只能用於允許8KiB頁面的架構(例如alpha)。
日誌中沒有校驗和
Ext3在寫入日誌時,並不做校驗和。如果barrier=1沒有作為載入參數(在檔案/etc/fstab),並且如果硬體在無次序的寫入快取,在崩潰時會嚴重損壞檔案系統(該選項在大多數流行的Linux發行版中都沒有被啟用,所以大多數發行版的處境都很危險。)
考慮下面的情況:如果硬碟無序的做寫入操作(因為現在的硬碟都使用快取機制以便攤銷寫入速度),那么有可能出現在寫入處理的提交塊時,其他的相關的塊已經被寫入了。如果電源掉電、核心panic出現在其他塊寫入前,那么系統將必須重啟。在重啟後,檔案系統將按照正常方式重演日誌,並且重演“優勝者”(具有提交塊的處理,包括上面無效的但被標記為有效的提交塊的處理)。於是,上面沒有完成的磁碟寫入將處理,但使用已經損壞的日誌數據。檔案系統在重演日誌的時候,將錯誤的使用已經損壞的數據覆蓋正常數據 。如果使用校驗和(如果假的“優勝者”處理被標記為互斥的校驗和),檔案系統會處理的更好,並且不會在磁碟上重演錯誤的數據。截止到2007年6月24日,已經有補丁來修復這個問題 。
Ext3日誌檔案系統特點
1、高可用性
系統使用了ext3檔案系統後,即使在非正常關機後,系統也不需要檢查檔案系統。宕機發生後,恢復ext3檔案系統的時間只要數十秒鐘。
2、數據的完整性
ext3檔案系統能夠極大地提高檔案系統的完整性,避免了意外宕機對檔案系統的破壞。在保證數據完整性方面,ext3檔案系統有2種模式可供選擇。其中之一就是“同時保持檔案系統及數據的一致性”模式。採用這種方式,你永遠不再會看到由於非正常關機而存儲在磁碟上的垃圾檔案。
3、檔案系統的速度
儘管使用ext3檔案系統時,有時在存儲數據時可能要多次寫數據,但是,從總體上看來,ext3比ext2的性能還要好一些。這是因為ext3的日誌功能對磁碟的驅動器讀寫頭進行了最佳化。所以,檔案系統的讀寫性能較之Ext2檔案系統並來說,性能並沒有降低。
4、數據轉換
由ext2檔案系統轉換成ext3檔案系統非常容易,只要簡單地鍵入兩條命令即可完成整個轉換過程,用戶不用花時間備份、恢復、格式化分區等。用一個ext3檔案系統提供的小工具tune2fs,它可以將ext2檔案系統輕鬆轉換為ext3日誌檔案系統。另外,ext3檔案系統可以不經任何更改,而直接載入成為ext2檔案系統。
5、多種日誌模式
Ext3有多種日誌模式,一種工作模式是對所有的檔案數據及metadata(定義檔案系統中數據的數據,即數據的數據)進行日誌記錄(data=journal模式);另一種工作模式則是只對metadata記錄日誌,而不對數據進行日誌記錄,也即所謂data=ordered或者data=writeback模式。系統管理人員可以根據系統的實際工作要求,在系統的工作速度與檔案數據的一致性之間作出選擇。
Ext3概述
開發商:開放原始碼
全稱:Third extended file system
發布時間:2001年11月(Linux 2.4.15)
分區標識:0x83 (MBR);EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)