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

Ext2

OSWikiHK,自由中文開源知識庫

Ext2 (Second Extended Filesystem) 是一個為 Linux 而設的檔案系統,它最初由 Rémy Card 設計用來取代同樣是 Card 的作品 Extended Filesystem (Ext) 。自其在 1993 年發佈後,迅速取代 Ext 和 Minix 檔案系統並擊敗 Xiafs 成為 GNU/Linux 最主要檔案系統,直至 2001 年其後繼者 Ext3 出現後才被逐漸取代。

目录

特點

  • 區塊大小 (Block size): 1 KiB, 2 KiB 或 4 KiB (Compaq Alpha 系統可以使用 8 KiB 區塊)
  • 最大檔案系統大小: 16 TiB (Compaq Alpha 上檔案系統最大可以有 32 TiB)
  • 最大檔案大小: 2 TiB (Compaq Alpha 上檔案最大可以有 64 TiB。 Linux 2.4 或舊於 Glibc 2.1.3 的軟件會有 2 GiB 檔案大小限制[1])
  • 最多檔案數目: 1018 (亦不多於檔案系統格式是決定的 inode 數目)
  • 檔案名稱: 不可以超過 255 位元組。除 NUL 或 "/" 外,可以使用任何字元,包括 UTF-8 字元以使用中文或其他語言。
  • 目錄深度限制: 32768 層
  • 分割區識別碼
    • 0x83 (Master Boot Record)
    • Apple_UNIX_SVR2 (Apple Partition Map)
    • EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
  • 速度: 比 Ext3 快
  • 穩定性: 穩定,但欠缺日誌功能。
  • 其他功能: POSIX ACLs, 擴充屬性(Extended attributs, xattr)

歷史

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

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

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

現時,Ext2 的 Linux 標準檔案系統地位雖早被其後繼者 Ext3 取替。但除日誌功能外,Ext2 支援所有 Ext3 所有包括 ACL 和 xattr 等功能。兩者在包括檔案系統大小和檔案大小等限制都一樣。加上因為不需要寫日誌,令其效能遠比 Ext3 高。所以至今 Ext2 仍廣泛地被使用儲存一些重視速度而非穩定的資料。不需要寫日誌,同樣令其比 Ext3 等日誌式檔案系統較少寫入動作的特點,令它更適合被應用在可啟動 USB 快閃記憶裝置和其他固態硬碟 (Solid-state Drive, SSD) 中。[4]

檔案系統結構

區塊 (Block)

可以 1024、2048 或 4096 bytes (Compaq Alpha 可以使用 8192 bytes block size)

larger -> fewer I/O request -> speed up (但浪費空間)

Block 大小 1024 2048 4096 8192 (Compaq Alpha)
檔案大小限制 ~16GiB 256GiB 2TiB ~2TiB
檔案系統大小限制 2TiB 8TiB 16TiB 32TiB

glibc 小於 2.1.3 (32-bit) 檔案大小不能超過 2GiB

Linux 2.4 (32 Bit) 檔案大小不能超過 2TiB, Block Device (檔案系統) 不能超過 2TiB

Linux 2.5.43 (32 Bit) 或以上 Block Device (檔案系統) 可以超過 2TiB [1]

Compaq Alpha 系統上的 Linux 案大小不能超過 8EiB, Block Device (檔案系統) 不能超過 8EiB

Super Block

include/linux/ext2_fs.h 中的 struct ext2_super_block:

  • inode 總數
  • 檔案系統大小 (以 block 為單位)
  • 保留 block (reserved block) 數目
  • 空置 block 數目
  • 空置 inode 數目
  • 第一個可以使用的 block 編數 (一般為 1)
  • block 大小
  • Fragment size

FS/Group Descriptor

include/linux/ext2_fs.h 中的 struct ext2_group_desc:

  • Block bitmap 的 block 編號
  • inode bitmap 的 block 編號
  • 第一個 inode 表 block 的 block 編號
  • Block group 中的空置 block 數目
  • Block group 中的空置 inode 數目
  • Block group 中的目錄數目

使用 Ext2

GNU/Linux 中,管理 Ext2 檔案系統的工作主要使用 e2fsprogs 中的一系列工具。

日常操作/維護

存取檔案系統

由 Windows

由 MacOS X

參考資料

  1. 1.0 1.1 Jaeger, Andreas (2005) Large File Support in Linux. SuSE GmbH (now Novell, Inc.).
  2. Wikipedia. Minix file system.
  3. 3.0 3.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.
  4. 4.0 4.1 4.2 4.3 Wikipedia. Ext2.
  5. Wikipedia. Extended file system.
  6. 6.0 6.1 6.2 Wikipedia. Xiafs.
  7. Linus Tovalds (1997) linux-2.1.21.tar.bz2. Kernel.org.

相關頁面

相關連結

Personal tools
廣告橫額