ext2
第二代扩展文档系统(英语:,缩写为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卡和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文档系统的影响。
参考数据
- Mauerer, Wolfgang. . John Wiley & Sons. 2010 [2016-01-05]. (原始内容存档于2016-05-11).
- Strobel, Stefan; Uhl, Thomas. . 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