ext2

文件系统

第二代擴展文件系統(英語:second extended filesystem,縮寫為ext2),是Linux內核所用的文件系統。它開始由Rémy Card設計,用以代替ext,於1993年1月加入Linux內核之中。它和BSD中的Unix文件系統具有相同的設計標準,同時也是Linux上的第一個商業級文件系統。[1]

ext2的經典實現是Linux內核中名為「ext2fs」的文件系統驅動;其他的實現(它們的軟件質量和完整性可能不同)存在於GNU HurdMinix 3,以及某些BSD系統中,同時也以第三方驅動的形式存在於包括WindowsOS X在內的的操作系統。

ext2是多個LINUX發行版的默認文件系統,如DebianRed Hat Linux等。直到後來完全兼容ext2的日誌系統ext3開始取代ext2時,ext2仍然是閃存設備(例如:SD卡U盤)上的Linux所使用的文件系統,因為沒有日誌功能使得Linux性能更好,同時也能減少寫入的次數(閃存設備通常具有有限的寫入次數)。最新版本的內核,同樣也支持一種不含日誌模式的ext4文件系統,這種模式能夠帶來類似的好處以及一些ext4獨有的優點。

歷史

Linux早期開發是在Minix系統上進行的跨平台開發。因此,MINIX文件系統被用作Linux的第一個文件系統。儘管Minix文件系統十分穩定,但是由於其內部使用了16位的偏移量,使得它能夠支持的最大空間只有64MB,支持的最大文件名為14個字符。[2]正是由於這些不足,開發一套Linux原生的文件系統開始了。[2]

為了避免新文件系統的出現帶來的問題,同時也為了給文件操作提供更好的API虛擬文件系統,一個文件系統的虛擬層,被加入到了Linux內核中。第一代擴展文件系統英語:extended file system)作為第一個使用虛擬文件系統的文件系統,發布於1992年4月,併集成在了版本為0.96c的Linux中。擴展文件系統解決了Minix文件系統中的兩個主要的問題,它支持最多255個字符的文件名,最大支持2GB的空間。但是它同樣也存在問題:文件訪問,Inode修改以及文件內容修改沒有使用獨立的時間戳

為了解決這個問題,兩種新的文件系統被開發出來,並出現在1993年1月發布的版本為0.99的Linux內核中,分別是:XFS文件系統第二代擴展文件系統ext2),它從Unix文件系統中吸取了很多優點,並用這些優點來改進之前的第一代擴展文件系統。並且第二代擴展文件系統在磁盤上存儲的(與磁盤功能相關的)數據結構中預留了很多空間供未來進一步開發使用,這也使得它具有很好的可拓展性。

從那時起,第二代擴展文件系統就成為了許多對虛擬文件系統API進行拓展的開發的測試平台。由於第二代擴展文件系統好的拓展性以及開發人員對其內在實現非常清楚的優點,很多新特性,例如:POSIX訪問控制表extended attribute都是最初在第二代擴展文件系統上實現的。

在Linux內核版本號低於2.6.17[3],塊驅動(block driver)中的限制使得第二代擴展文件系統最大支援至2TB的單個文件。

技術內容

其實作方式受到Unix文件系統的影響。

歷史

參考資料

  1. ^ Mauerer, Wolfgang. Professional Linux Kernel Architecture. John Wiley & Sons. 2010 [2016-01-05]. (原始內容存檔於2016-05-11). 
  2. ^ 2.0 2.1 Strobel, Stefan; Uhl, Thomas. Linux—Unleashing the Workstation in Your PC. Springer-Verlag. 1994: 54. 
  3. ^ linux/kernel/git/torvalds/linux-2.6.git/commitdiff: Archive.is存檔,存檔日期2012-07-09, [PATCH] 2TB files: add blkcnt_t, Author:Takashi Sato, 26 Mar 2006 09:37:52 +0000 (01:37 -0800) — Commit allowing for large files, git.kernel.org

外部連結