複製鏈接
請複製以下鏈接發送給好友

Ext3

鎖定
EXT3是第三代擴展文件系統(英語:Third extended filesystem,縮寫為ext3),是一個日誌文件系統,常用於Linux操作系統。它是很多Linux發行版的默認文件系統。Stephen Tweedie在1999年2月的內核郵件列表中,最早顯示了他使用擴展的ext2,該文件系統從2.4.15版本的內核開始,合併到內核主線中。
外文名
Third extended file system
簡    稱
Ext3
介    紹
一種日誌式文件系統
兼    容
兼容ext2
Ext3(Third extended file system)

Ext3名詞釋義

如果在文件系統尚未shutdown前就關機如(停電)時,下次重開機後會造成文件系統的資料不一致,故這時必須做文件系統的重整工作,將不一致與錯誤的地方修復。然而,此一重整的工作是相當耗時的,特別是容量大的文件系統,而且也不能百分之百保證所有的資料都不會流失。
為了克服此問題,使用所謂“日誌式文件系統 (Journal File System)” 。此類文件系統最大的特色是,它會將整個磁盤的寫入動作完整記錄在磁盤的某個區域上,以便有需要時可以回溯追蹤。
由於資料的寫入動作包含許多的細節,像是改變文件標頭資料、搜尋磁盤可寫入空間、一個個寫入資料區段等等,每一個細節進行到
飛客數據恢復中心提供 飛客數據恢復中心提供
一半若被中斷,就會造成文件系統的不一致,因而需要重整。
然而,在日誌式文件系統中,由於詳細紀錄了每個細節,故當在某個過程中被中斷時,系統可以根據這些記錄直接回溯並重整被中斷的部分,而不必花時間去檢查其他的部分,故重整的工作速度相當快,幾乎不需要花時間。

Ext3優勢

雖然它的性能(速度)不如它的競爭對手,例如JFS2,ReiserFSXFS,但它具有重要的優勢,那就是它允許在適當的時候從流行的ext2文件系統升級,而無需備份和恢復數據;除此之外,它還具有比ReiserFSXFS更低的的CPU使用率
ext3文件系統增加的超越其前代的包括:
· 位目錄跨越多個塊提供基於樹的目錄索引
· 在線系統增長
如果沒有這些,ext3文件系統也同時是個有效的ext2文件系統。這樣,經過良好測試的、成熟的文件系統工具來管理和修復ext2文件系統工具,可以無需大的變動,就應用於ext3文件系統。ext2和ext3文件系統共享相同的工具集,帶有fsck工具的e2fsprogs。這種緊密的聯繫也將兩種文件系統之間進行轉換(包括升級到ext3和降級為ext2)變得非常容易。
Linux實現的ext3文件系統,包括3個級別的日誌:

Ext3日記

(慢,但風險小)元數據和文件內容都在提交到主文件系統前寫入。這樣將提高穩定性但性能上有所損失,因為所有的數據都要寫入2次。如果沒有在/etc/fstab 中加上這個選項,修改中的檔案遇上kernel panic或突然斷電的時候就可能發生損毀的情況,當然,這還是得看軟體是怎麼寫入檔案的。

Ext3順序

(中速,中等風險)順序和寫回類似,但在對應的元數據標記為提交前,強制寫入文件內容。這是很多Linux發行版默認的方式。

Ext3回寫

(快,但風險最大;在某種感覺上和ext2相當): 這邊會寫入日誌的只有 metadata 而已,檔案的內容並不會跟着寫入日誌裏面。這樣的作法讓整個效率變快了不少,不過也同樣造成了檔案寫入時不按順序的結果。舉例來説,檔案在附加變大的同時發生了 crash 的情況,就可能造成下次掛載時檔案後面就附加一堆垃圾數據的情況。
儘管ext3缺少一些當代文件系統的特點,像是動態的inode、樹狀的資料儲放結構等等,都是被視作ext3的缺點之一,不過在這些特點之外,ext3在文件系統回覆上面就有了很好的表現。跟樹狀結構的文件系統相比,在ext3上面metadata是放在固定的位置,而且在寫入的同時會重複寫入的一些資料讓ext2/3在面臨資料損毀的情況下還有挽回的機會。

Ext3劣勢

Ext3功能

當初ext3的設計目標就是提供對於ext2的高度兼容,很多磁盤上的結構和都和ext2很相似。也因為這樣,ext3缺乏很多最新設計中的功能,例如動態分配inode和可變塊大小(frags或tails)。
ext3文件系統在被掛載為寫入的時候,是不能進行fsck的。 ext3檔案系統的傾倒作業在這個檔案系統還是掛載中的時候執行可能會造成資料的損壞。
ext3不支持在其他文件系統上已經支持(例如:JFS2和ext4)的擴展

Ext3磁盤碎片

在文件系統級別上,沒有在線的ext3磁盤碎片整理工具。
離線的ext2磁盤碎片整理工具e2defrag,可以用於ext3文件系統,但前提是在使用前要將文件系統轉換回ext2。 但依賴於功能位在文件系統中打開,e2defrag可能會毀滅數據;目前仍然不知道如何處理新的ext3功能。
有一些用户使用的磁盤碎片整理工具,例如Shake和defrag,這些工具通過複製文件來實現新分配的文件不存在碎片。但這隻在文件系統相當空的情況下有效,並且該文件系統不經常出現碎片。目前沒有真正的用於ext3的磁盤碎片整理工具。
事實上,磁盤碎片整理完全是一種人們在單用户單進程環境下(如DOS/早期Windows)工作時養成的舊習。
在多任務環境下,磁盤碎片的出現根本是不可避免的,而且碎片化的速度非常之快。操作系統的任務不是不負責任地給用户提供一個整理工具,而是應該在系統設計的時候消除碎片化對性能的傷害。比如Linux塊設備操作都要經過一個I/O調度層,通過在調度層中使用帶有電梯算法的調度策略來消除碎片對性能的影響。
另外,如果將來固態硬盤普及乃至取代傳統硬盤,也會讓磁盤碎片的概念成為歷史。

Ext3反刪除

和ext2不同,ext3會在刪除文件時把文件的節點(inode)中的塊指標清除。這樣做可以在unclean載入文件系統後,重放日誌時,可以減少對文件系統的訪問。但也同樣也增加了文件在反刪除上面的困難。用户唯一的補救是在硬盤中撈取數據,並且要知道文件的起始到結束的塊指標。儘管提供了比 ext2在刪除文件上稍微高一些的安全性,卻也無可避免的帶來了不便之處。

Ext3壓縮

Ext3不支持透明壓縮(Ext2以非官方補丁支持)。

Ext3大小限制

ext3有一個相對較小的對於單個文件和整個文件系統的最大尺寸。這些限制依賴於文件系統的塊大小;下面的表格總結了這些限制:
塊尺寸
最大文件尺寸
最大文件系統尺寸
16GiB
2TiB
256GiB
8TiB
2TiB
16TiB
16TiB
32TiB
8KiB塊,只能用於允許8KiB頁面的架構(例如alpha)。

Ext3日誌中沒有校驗和

Ext3在寫入日誌時,並不做校驗和。如果barrier=1沒有作為加載參數(在文件/etc/fstab),並且如果硬件在無次序的寫入緩存,在崩潰時會嚴重損壞文件系統(該選項在大多數流行的Linux發行版中都沒有被啓用,所以大多數發行版的處境都很危險。)
考慮下面的情況:如果硬盤無序的做寫入操作(因為現在的硬盤都使用緩存機制以便攤銷寫入速度),那麼有可能出現在寫入處理的提交塊時,其他的相關的塊已經被寫入了。如果電源掉電、內核panic出現在其他塊寫入前,那麼系統將必須重啓。在重啓後,文件系統將按照正常方式重演日誌,並且重演“優勝者”(具有提交塊的處理,包括上面無效的但被標記為有效的提交塊的處理)。於是,上面沒有完成的磁盤寫入將處理,但使用已經損壞的日誌數據。文件系統在重演日誌的時候,將錯誤的使用已經損壞的數據覆蓋正常數據如果使用校驗和(如果假的“優勝者”處理被標記為互斥的校驗和),文件系統會處理的更好,並且不會在磁盤上重演錯誤的數據。截止到2007年6月24日,已經有補丁來修復這個問題 [1] 

Ext3Ext3日誌文件系統特點

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模式。系統管理人員可以根據系統的實際工作要求,在系統的工作速度與文件數據的一致性之間作出選擇。 [3] 

Ext3Ext3概述

ext3索引節點 ext3索引節點
開發商:開放源代碼
全稱:Third extended file system
發佈時間:2001年11月(Linux 2.4.15)
分區標識:0x83 (MBR);EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
參考資料