FlossDoc: 請協力 GPLv3 的中文翻譯工作。

GNU/Linux 檔案系統史

FlossDoc,自由中文開源知識庫

Jump to: navigation, search

目录

初代檔案系統 - Minix 檔案系統的不足

Linux 最早期的開發工作是在 Minix 上進行。當 Linus Torvalds 主要集中在儘快令 Linux 成為一可以運作的作業系統而無閒開發其他組件時,Minix 檔案系統[1]很自然地被順手拈來並成為 Linux 上首個使用的檔案系統。Minix 檔案系統效能不錯,並且相對上沒有甚麼臭蟲 (bug)。[2] 然而,可能因為 Minix 本身只是用作教授作業系統原理和編寫的教材,Minix 檔案系統的功能有很多限制而未能應付實際應用上的需要,例如使用 16-bit offset 令它最大只可以支援 64 MiB 大小的檔案,而檔案名稱亦不能超過 14 個字元。因此,開發一個專為 GNU/Linux 而設的檔案系統工作亦隨即展開。[3]

Ext 檔案系統的冒起

為簡化加入新檔案系統並提供一個泛用的檔案 API,Chris Provenzano 和 Linus Torvalds 將 VFS (Virtual File System) 層帶入 Linux。[2] 1992 年 4 月,Rémy Card 設計的 Extended Filesystem (Ext) 正式發佈並在 Linux 0.96c 中開始被收錄,亦成為首個 Linux 上使用 VFS API 的檔案系統。Ext 解決了 Minix 檔案系統的兩個限制,檔案大小上限增至 2 GiB,而檔案名稱亦可以長達 255 個字元。不過,Ext 距一個實際應用的檔案系統仍有一點距離 — 未提供存取時間 (access time)、 inode 修改時間和資料修改時間等功能,其效能亦只屬一般。[4]

Ext2 和 Xiafs 之爭

因此,兩個新的檔案系統 Ext2 和 Xiafs 很迅速地在 1993 年 1 月被提出競逐 Linux 主要檔案系統的寶座。兩個檔案系統在 Linux 0.99.15 (1993 年 12 月) 開始被收錄。[3] Frank Xia 的 Xiafs 建基於 Minix 的檔案系統,比 Ext 更穩定和提供更強功能。而另一競爭者 Ext2 顧名思義是 Ext 的後繼者,亦同是 Rémy Card 的作品。兩者都旨在提 Linux 提供一個效能佳,各類限制合理並修正 Ext 各種問題、真正實用的檔案系統。初期 Xiafs 比 Ext2 更穩定,功能更強。然而,Xiafs 始終對 Minix 檔案系統的改良並不多,令其擴充能力較弱。此外,Xiafs 中的檔案大小不能超過 64 MiB,而整個檔案系統大小不能超過 2 GiB。[5] 相反,Ext2 引入了很多 Berkeley Fast File System 的點子並在設計中預留了擴充的空間。[3] 往後一段時間, Xiafs 的改進很少。相較之下,Ext2 的發展較活躍。它迅速改善了其穩定性,效能和增加了不少新功能。[5] 最終,Ext2 成功擊倒 Xiafs 成為 Linux 的標準檔案系統並發展成為一個非常成熟和穩固的檔案系統。Xiafs 自此亦很少人使用和無人繼續維護,最後在 Linux 2.1.21 (1997 年 1 月) 被正式移除。[5][6]

日誌式檔案系統 (Journaling Filesystem)

Ext2 一直成為使用 GNU/Linux 必用的檔案系統近十年之久。在 90 年代末,GNU/Linux 開始廣為人知並引應不少企業的興趣。然而,欠缺一個穩固的日誌式檔案系統 (Journaling Filesystem) 卻成為 GNU/Linux 進入企業市場的一大障礙。各方開始著手為 GNU/Linux 引入日誌式檔案系統而努力。到 2001 年,四個解決方案幾乎同時出現,他們分別是 ReiserFSExt3JFSXFS

和其他 GNU/Linux 上的日誌式檔案系統不同,ReiserFS 是完全由零開始創建出來的。其原開發者 Hans Reiser 最早在 1997 年 7 月 23 日於互聯網公布 ReiserFS。2001 年初, ReiserFS 在 Linux 2.4.1 被正式引入 Linux 核心,並成為 Linux 上第一個支援的日誌式檔案系統。

Ext3 顧名思意是 ext2 的後繼者,它事實上只是 ext2 上擴充加入日誌性功能,結構上和 ext2 完全相同。Ext3 的設計者 Stephen C. Tweedie 最早在 1999 年 2 月 kernel 電郵論壇 (mailing list) 的一篇文章[7]透露它正在擴充 Ext2。Tweedie 的成果在 2001 年 11 月被正式放入 Linux 2.4.15 中。 [8]

此外,兩間著名的 Unix 生產商 IBM 和 SGI (Silicon Graphics, Inc) 對在其產品應用 GNU/Linux 非常績極,並把其 Unix 上使用日誌式檔案系統 JFS 和 XFS 移植至 GNU/Linux 。

JFS 是 IBM 在 1990 就開始應用在 AIX 的日誌式檔案系統。曾被安裝在過百萬台 IBM 顧客的 AIX 系統中令 JFS 的穩定性和效能受到很大的肯定。移植至 GNU/Linux 的 JFS 其實是 IBM 在 1995 開始著手改良強化並在 1999 年 4 月開始正式應用在 OS/2 Warp Server 和在 2001 年 5 月開始被加入 AIX 5L 的 JFS2 (Enhanced Journaled File System)。1999 年 10 月,原供 OS/2 並正在移植回 AIX 的 JFS2 源碼被以 GNU General Public License 開放並開始移植至 Linux。而第一個穩定版本的 JFS for Linux 亦在 2001 年 6 月推出。[9] 至 2002 年 8 月,JFS 正式併入穩定版 Linux 核心 2.4.20。[10]

XFS 自 1994 開始已應用在由工作站至超級電腦等所有 IRIX 系統中[11],令其效能和穩定性同受度很大的肯定,尤其在處理大型檔案和多媒體 streaming 方面。2000 年 5 月,SGI 宣佈將 XFS 以 GNU General Public License 開放並移植至 Linux。差不多一年後,SGI 正式推出穩定可應用在 Linux 2.4 系列核心的 XFS 1.0 for Linux。[12] 然而 Linux 穩定版核心正式支援 XFS 要到兩年多後的 Linux 2.6.0 和 2.4.25。[13][14]

ReiserFS 隨後取得不錯的成續,在多個效能測試都取得不錯的成績,尤其在小型檔案處理方面。SuSE Linux Enterprise 和 Xandros 等都相繼使用 ReiserFS 作為預設檔案系統。然而,因為由 Ext2 升級至 Ext3 和 Ext 系列檔案系統原身在 GNU/Linux 界的長期佔有率和穩定性,ReiserFS 在 GNU/Linux 的市場始終未能擊敗 Ext3。

Reiser4 與 Hans Reiser 殺妻風波

2006 年 9 月 Reiser4 的開發領導 Hans Reiser 因涉嫌謀殺其妻被捕,ReiserFS 和 Reiser4 的前景迅速蒙上陰影。Novell 在同年 10 月 12 日宣佈 SuSE Linux Enterprise 往後的版本會由 ReiserFS 改用 Ext3 作預設檔案系統。[15] 各界開始懷疑 Novell 突如其來的決定和 Reiser 被捕有關,但 SuSE 否認此傳聞。[16] 由 Hans Reiser 創立並負責 Reiser4 開發的公司 Namesys 的網站至 2007 年年尾已因 DNS 問題不能被訪問。2008 年 1 月 26 日,Namesys 的一名程式員 Edward Shiskin 於 CNET 的訪問中透露 Namesys 的一切商業活動實則已停止[17]。但在 Kernel.org 提供網頁空間下,Shiskin 仍繼續進行 ReiserFS 的工具和 Reiser4 的開發。[18]

Ext4 接棒

Ext4 原本只是一系列 ext3 的擴充元件以令 Ext3 支援 64-bit 儲存限制和其他效能上的改進。[19] 但部份 Linux 核心開發者以影響穩定為理由反對直接在 ext3 加入這些擴充[20],並建議分拆 ext3 的源碼作新擴充元件的開發,並改名為 ext4。最後,這建議被接納。2006 年 6 月 28 日,ext3 的管理者 Theodore Ts'o 宣佈 ext4 的開發計劃。[21]

一個初步的開發版本 ext4 被放入 Linux 2.6.19 中。2008 年 10 月 11 日,ext3 在 Linux 2.6.28 源碼上被標記為穩定[22],表示 ext4 的開發週期已完結並建議使用 ext4。而 Linux 2.6.28 亦在 2008 年 12 月 25 日正式被發佈。[23]

未來的檔案系統 BtrFS

參考資料

  1. Wikipedia. Minix file system.
  2. 2.0 2.1 Card, Rémy, Ts’o, Theodore & Tweedie, Stephen (1994). Design and implementation of the second extended filesystem. Proceedings of the First Dutch International Symposium on Linux. ISBN 90-367-0385-9.
  3. 3.0 3.1 3.2 Wikipedia. Ext2.
  4. Wikipedia. Extended file system.
  5. 5.0 5.1 5.2 Wikipedia. Xiafs.
  6. Linus Tovalds (1997) linux-2.1.21.tar.bz2. Kernel.org.
  7. Tweedie, Stephen C. (Feb 17, 1999). “Re: fsync on large files”. Linux kernel mailing list.
  8. Radez, Rob (Nov 23, 2001).“ 2.4.15-final”. Linux kernel mailing list.
  9. Loli-Queru Eugenia (Aug 28, 2001) “Interview With the People Behind JFS, ReiserFS & XFS”. OS News.
  10. gncuster (Aug 20, 2002). “Linux: JFS merged in 2.4”. KernelTrap.
  11. Robbins, Daniel (Jan 1, 2002). “Advanced filesystem implementor's guide, Part 9: Introducing XFS”. IBM developerWorks.
  12. The SGI XFS Team (Dec 8, 2003). “Announce: XFS Release 1.0 for Linux'”'. The SGI XFS Team.
  13. Tosatti, Marcelo (Dec 8, 2003). “XFS merged in 2.4”. Linux Kernel Mailing List.
  14. SGI.“XFS News”. SGI Developer Central Open Source.
  15. Shankland, Stephen (Oct 12, 2006). “Novell makes file storage software shift”. CNet News.
  16. Mahoney, Jeff (Oct 4, 2006).“ Announcement was unrelated to Reiser's legal troubles”.
  17. Shankland, Stephen (Jan 16, 2008). “Namesys vanishes, but Reiser project lives on”. CNet.
  18. Shiskin, Edward (Apr 19, 2008). “New location of Namesys software”. Linux Kernel Mailing List.
  19. Mathur, Avantika, Cao, Mingming, Bhattacharya, Suparna, Dilger, Andreas, Tomas, Alex and Vivier, Laurent (Jun 2007). “The new ext4 filesystem: current status and future plans”. Proceedings of the Linux Symposium June 27–30, 2007, Ottawa, Ontario, Canada.
  20. Torvalds, Linus (Jun, 9 2006) “Re: [Ext2-devel] [RFC 0/13] extents and 48bit ext3”. Linux Kernel Mailing List.
  21. Ts'o, Theodore (Jun 28, 2006). “Proposal and plan for ext2/3 future development work”. Linux Kernel Mailing List.
  22. Ts'o, Theodore (Oct 11, 2006). “ext4: Rename ext4dev to ext4”. Linux kernel tree.
  23. Leemhuis, Thorsten (Dec 23, 2008). “Higher and further: The innovations of Linux 2.6.28”. Heise Online.

請參看

外部連結

Personal tools