ext2
第二代擴充檔案系統(英語:second extended filesystem,縮寫為ext2),是Linux內核所用的檔案系統。它開始由Rémy Card設計,用以代替ext,於1993年1月加入Linux內核之中。它和BSD中的Unix檔案系統具有相同的設計標準,同時也是Linux上的第一個商業級檔案系統。[1]
ext2的經典實現是Linux內核中名為「ext2fs」的檔案系統驅動;其他的實現(它們的軟件質素和完整性可能不同)存在於GNU Hurd,Minix 3,以及某些BSD系統中,同時也以第三方驅動的形式存在於包括Windows和OS X在內的的作業系統。
ext2是多個LINUX發行版的預設檔案系統,如Debian、Red Hat Linux等。直到後來完全相容ext2的紀錄檔系統ext3開始取代ext2時,ext2仍然是快閃記憶體裝置(例如:SD卡和USB手指)上的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檔案系統的影響。
歷史
參考資料
- ^ Mauerer, Wolfgang. Professional Linux Kernel Architecture. John Wiley & Sons. 2010 [2016-01-05]. (原始內容存檔於2016-05-11).
- ^ 2.0 2.1 Strobel, Stefan; Uhl, Thomas. Linux—Unleashing the Workstation in Your PC. Springer-Verlag. 1994: 54.
- ^ 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
外部連結