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 中的一系列工具。
日常操作/維護
- 格式化存儲裝置成為 Ext2 檔案系統 - 可以使用命令 mke2fs 或 mkfs.ext2。
- 顯示檔案系統資訊 - 可以使用命令 dumpe2fs 或 tune2fs -l。
- 檢查檔案系統 - 可以使用命令 e2fsck 或 fsck.ext2。
- 設定常規檔案系統檢查
- 設定檔案系統的系統管理員保留空間 - Ext2 檔案系統預設保留 5% 的空間給系統管理員工作之用,這空間大小可以使用命令 tune2fs -m 或 tune2fs -r 改變。
- 設定錯誤處理方案 - 可以使用命令 tune2fs -e 改變。
- 顯示或改變檔案系統標簽 - 可以使用命令 e2label 或 tune2fs -L。
- 設定檔案系統 UUID - 可以使用命令 tune2fs -U。
- 改變檔案系統大小 - 可以使用命令 resize2fs。
- 升級 ext2 檔案系統至 ext3 - 可以使用命令 tune2fs -j。
存取檔案系統
由 Windows
- Ext2 IFS for Windows
- Ext2FSd
- Win2fs
- Ext2 IFS for Windows NT/2k/XP
- Explore2fs
- Ext2 (Linux) Filesystem Driver for Windows NT 4.0
由 MacOS X
參考資料
- ↑ 1.0 1.1 Jaeger, Andreas (2005) Large File Support in Linux. SuSE GmbH (now Novell, Inc.).
- ↑ Wikipedia. Minix file system.
- ↑ 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.0 4.1 4.2 4.3 Wikipedia. Ext2.
- ↑ Wikipedia. Extended file system.
- ↑ 6.0 6.1 6.2 Wikipedia. Xiafs.
- ↑ Linus Tovalds (1997) linux-2.1.21.tar.bz2. Kernel.org.
相關頁面
- 其他 Linux 主要的檔案系統 - 包括 Ext3、Ext4、ReiserFS、JFS 和 XFS。
- 其他 GNU/Linux 支援的檔案系統 - 包括 procfs、tmpfs、JFFS2、UFS、FAT 和 NTFS。
- 置換空間 (Swap space)
相關連結
- 維基百科: Ext2[Eng][中文] - 維基百科對 Ext2 的說明
- Proceedings of the First Dutch International Symposium on Linux: Design and implementation of the second extended filesystem (Rémy Card, Theodore Ts’o & Stephen Tweedie 1994) ISBN 90-367-0385-9.
- The Second Extended File System: Internal Layout (Dave Poirier 2001)
- John's spec of the second extended filesystem (John Newbigin)
- USENIX 2002 Annual Technical Conference: Planned Extensions to the Linux Ext2/Ext3 Filesystem (Theodore Ts’o & Stephen Tweedie 2002-06)
页面分类: 未完成小作品 | Filesystem

