第二代扩展文件系统(英語: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卡和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文件系统的影響。
歷史
參考資料
外部链接