第三代擴充檔案系統(英語:Third extended filesystem,縮寫為ext3),是一個紀錄檔檔案系統,常用於Linux作業系統。它是很多Linux發行版的預設檔案系統。史提芬·崔迪在1999年2月的內核郵寄清單[2]中,最早顯示了他使用擴充的ext2,該檔案系統從2.4.15版本的內核開始,合併到內核主線中[3]。
此條目翻譯品質不佳。 (2023年11月25日) |
開發者 | 史提芬·崔迪 |
---|---|
全稱 | 第三代擴充檔案系統 |
發佈 | 2001年11月 (Linux 2.4.15) |
分區標識 | 0x83(MBR) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(GPT) |
結構 | |
目錄內容 | 表,樹 |
檔案分配 | 點陣圖(空閒區域),表(元數據) |
壞塊 | 表 |
限制 | |
最大檔案尺寸 | 16GiB – 2TiB |
最大檔案數量 | 可變[1] |
最長檔名 | 255位元組 |
最大卷容量 | 4TiB – 32TiB |
檔案名字符集 | 除NULL和'/'外的所有位元組 |
功能 | |
日期記錄 | 修改(mtime),屬性修改(ctime),訪問(atime) |
日期範圍 | 1901年12月14日-2038年1月18日 |
日期解像度 | 1秒 |
岔流 | 是 |
屬性 | No-atime, append-only, synchronous-write, no-dump, h-tree (directory), immutable, journal, secure-delete, top (directory), allow-undelete |
檔案系統權限 | Unix權限,ACLs和arbitrary security attributes(Linux 2.6 and later) |
透明壓縮 | 否 |
透明加密 | 否(塊裝置級上提供) |
作業系統支援 | Linux、BSD、Windows(通過IFS或Ext2Fsd) |
優勢
雖然它的效能(速度)不如它的競爭對手,例如JFS2,ReiserFS和XFS,但它具有重要的優勢,那就是它允許在適當的時候從流行的ext2檔案系統升級,而無需備份和恢復數據;除此之外,它還具有比ReiserFS和XFS更低的的CPU使用率[1](頁面存檔備份,存於互聯網檔案館) 。
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磁碟重組工具。
離線的ext2磁碟重組工具e2defrag
,可以用於ext3檔案系統,但前提是在使用前要將檔案系統轉換回ext2。但依賴於功能位在檔案系統中打開,e2defrag
可能會毀滅數據;目前仍然不知道如何處理新的ext3功能。[4]
有一些用戶使用的磁碟重組工具,例如Shake[2](頁面存檔備份,存於互聯網檔案館) 和defrag[3](頁面存檔備份,存於互聯網檔案館),這些工具通過複製檔案來實現新分配的檔案不存在碎片。但這只在檔案系統相當空的情況下有效,並且該檔案系統不經常出現碎片。目前沒有真正的用於ext3的磁碟重組工具[4](頁面存檔備份,存於互聯網檔案館) 。
事實上,磁碟重組完全是一種人們在單用戶單行程環境下(如DOS/早期Windows)工作時養成的舊習。
在多工環境下,磁碟碎片的出現根本是不可避免的,而且碎片化的速度非常之快。作業系統的任務不是不負責任地給用戶提供一個整理工具,而是應該在系統設計的時候消除碎片化對效能的傷害。比如Linux的塊裝置操作都要經過一個I/O排程層,通過在排程層中使用帶有電梯演算法的排程策略來消除碎片對效能的影響。
另外,如果將來固態硬碟普及乃至取代傳統硬碟,也會讓磁碟碎片的概念成為歷史。
和ext2不同,ext3會在刪除檔案時把檔案的節點(inode)中的塊指標清除。這樣做可以在unclean載入檔案系統後,重放紀錄檔時,可以減少對檔案系統的訪問。但也同樣也增加了檔案在反刪除上面的困難。用戶唯一的補救是在硬碟中撈取數據,並且要知道檔案的起始到結束的塊指標。儘管提供了比ext2在刪除檔案上稍微高一些的安全性,卻也無可避免的帶來了不便之處。
Ext3不支援透明壓縮(Ext2以非官方修補程式支援)。