ext3


ext3 (简体)


ext3
開發商 開放原始碼
全稱 擴展檔案系統3
發佈 2001年11月 (Linux 2.4.15)
分區標識 0x83 (MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
結構
目錄內容 表, 樹
檔案分配 點陣圖(空閑區域), 表(元資料)
壞塊
限制
最大檔案大小 16GiB – 64TiB
最大檔案數量 可變[1]
最長檔案名限制 255位元組
最大卷大小 2TiB – 32TiB
檔案名允許的字元數 除NUL和'/'外的所有位元組
功能
記錄日期 修改(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)

ext3(或稱為擴展檔案系統3)是一個日誌檔案系統,常用於Linux作業系統。它是很多Linux發行版的預設檔案系統 。Stephen Tweedie在1999年2月的核心郵件列表[2]中,最早顯示了他使用擴展的ext2,該檔案系統從2.4.15版本的核心開始,合併到核心主線中[3]

目錄

優勢

雖然它的性能(速度)和安全性[來源請求]不如它的競爭對手,例如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不支援在其他檔案系統上已經支援(例如:JFS2和ext4)的擴展。

磁碟碎片

在檔案系統級別上,沒有線上的ext3磁碟碎片整理工具 離線的ext2磁碟碎片整理工具e2defrag,可以用於ext3檔案系統,但前提是在使用前要將檔案系統轉換回ext2。 但依賴於功能位在檔案系統中打開,e2defrag可能會毀滅資料;目前仍然不知道如何處理新的ext3功能。[4]

有一些用戶使用的磁碟碎片整理工具,例如Shake[2]和defrag[3],這些工具透過複製檔案來實現新分配的檔案不存在碎片。但這隻在檔案系統相當空的情況下有效,並且該檔案系統不經常出現隨便。目前沒有真正的用於ext3的磁碟碎片整理工具[4]

反刪除

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

壓縮

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

大小限制

ext3有一個相對較小的對於單個檔案和整個檔案系統的最大尺寸。這些限制依賴於檔案系統的塊大小;下麵的表格總結了這些限制[5]

塊尺寸 最大檔案尺寸 最大檔案系統尺寸
1KiB 16GiB 2TiB
2KiB 256GiB 8TiB
4KiB 2TiB 16TiB
8KiB 16TiB 32TiB

8KiB塊,只能用於允許8KiB頁面的架構(例如alpha)。

日誌中沒有校驗和

Ext3在寫入日誌時,並不做校驗和。如果barrier=1沒有作為載入參數(在檔案/etc/fstab),並且如果硬體在無次序的寫入緩存,在崩潰時會嚴重損壞檔案系統[6][7](該選項在大多數流行的Linux發行版中都沒有被啟用,所以大多數發行版的處境都很危險。)

考慮下麵的情況:如果硬碟無序的做寫入操作(因為現在的硬碟都使用緩存機制以便攤銷寫入速度),那麼有可能出現在寫入處理的提交塊時,其他的相關的塊已經被寫入了。如果電源掉電、核心panic出現在其他塊寫入前,那麼系統將必須重啟。在重啟後,檔案系統將按照正常方式重演日誌,並且重演“優勝者”(具有提交塊的處理,包括上面無效的但被標記為有效的提交塊的處理)。於是,上面沒有完成的磁碟寫入將處理,但使用已經損壞的日誌資料。檔案系統在重演日誌的時候,將錯誤的使用已經損壞的資料涵蓋正常資料。如果使用校驗和(如果假的“優勝者”處理被標記為互斥的校驗和),檔案系統會處理的更好,並且不會在磁碟上重演錯誤的資料。截止到2007年6月24日,已經有補丁來修複這個問題。

Ext4dev / Ext4

主條目:ext4

2006年10月10日發佈了一個增強版本的檔案系統,使用ext4作為名稱。該檔案系統包含很多新的功能。

註釋和取用

  1. ^ 最大i節點(並且之後作為檔案和目錄的最大數量)數目在檔案系統創建時確定。如果V是捲的大小(位元組數),則預設的i節點數量位V/213(或塊的數量,以最小的為準),且最小為V'/223。絕大多數應用程式認為預設值已經足夠了。
  2. ^ Stephen C. Tweedie(February 17 1999年).Re: fsync on large files.Linux kernel mailing list.
  3. ^ Rob Radez(November 23 2001年).2.4.15-final.Linux kernel mailing list.
  4. ^ Andreas Dilger.Post to the ext3-users mailing list(英文).ext3-users mailing list post.
  5. ^ Matthew Wilcox.Documentation/filesystems/ext2.txt.Linux kernel source documentation.
  6. ^ http://archives.free.net.ph/message/20070518.134838.52e26369.en.html
  7. ^ http://archives.free.net.ph/message/20070519.014256.ac3a2e07.en.html

參考

  • ext2
  • ext4
  • List of file systems
  • Comparison of file systems

外部連結


! __







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History