Lil*_*lás 2 filesystems ext2 ext3 ext4
我想知道,对于蓝牙,我们有由蓝牙特殊利益集团管理的IEEE 802.15.1标准。对于Wifi,我们拥有IEEE 802.11标准以及Wifi联盟。对于PCIe上的NVMe SSD,我们有nvmexpress来规范和发布其官方文档。
因此,通常会有一个监管机构来决定事情并标准化一些事情,以允许几种不同实现之间的互操作性。
但是对于ext2 / ext3 / ext4文件系统,除了Linux内核代码之外,我没有找到任何官方标准。
这些文件系统基本上是由内核社区决定的吗?他们是否承诺不更改它们,使其仍然与其他操作系统兼容?
还是在某处有一些官方规范?谁提供的?
谢谢
很少有文件系统通过标准委员会进行标准化。实际上,不破坏兼容性的承诺是由于我们需要保持与旧版本Linux的向后兼容性。对于MacOS,Windows等也是如此。当MacOS 10.3等无法读取使用MacOS 10.1编写的文件系统时,用户会感到胡思乱想。
对于ext4,我们在超级块中具有特征位掩码。当我们添加新功能时,我们在以下三个功能位掩码之一中定义了一个新位:compat,r / o compat,incompat。如果内核在r / o compat位掩码中看到了一个未知的位,则现在它将允许以读/写方式挂载文件系统,但是将允许以只读/只读方式挂载文件系统。如果内核在不兼容的位掩码中看到了它无法理解的一点,那么它将根本不允许挂载文件系统。而且,如果compat文件系统中设置了内核无法理解的位,则内核知道无论哪种方式挂载文件系统都是安全的。但是,文件系统一致性检查器(e2fsck)和其他一些文件系统实用程序(例如resize2fs)可能需要更严格的兼容性检查,
在实践中,当我们添加新功能时,我们将等待一段时间,然后mke2fs实用程序将默认启用该功能。这使更多冒险的用户可以在默认情况下为所有人启用文件系统功能之前对其进行测试。实际上,其他操作系统仅实现了ext4功能的一小部分---最常见的是,非Linux实现ext2 / ext3 / ext4的功能集大致对应于通过“ mke2fs -t ext2 / dev / disk”。
自从将近四分之一世纪以来首次实现这些功能以来,这些功能一直没有改变。而且它们不会改变,原因很明显,因为仍然有许多企业仍在使用RHEL 5,RHEL 5使用的是十年前发布的内核,并且我们非常关心与我们自己以及其他人之间的向后兼容性。操作系统。因此,您可以看一下1994年发布的“ Ext2的设计和实现”(http://web.mit.edu/tytso/www/linux/ext2intro.html)论文,并且就其基础知识而言没有改变。
当然,我们仍在添加新功能-例如,最近,我们在ext4中添加了文件系统级加密(已在Android中使用,不久后有望用于Chrome OS),项目配额,元数据校验和等。这些新功能中的每一个均受功能标志保护,并且默认情况下,在e2fsprogs源发行版中分发的当前版本的mke2fs中,所有这些功能均未默认启用。一些社区发行版(例如Debian)可能启用某些前沿功能,例如元数据校验和,以使它们在所有人(包括企业Linux发行版的更保守的企业用户)启用之前获得更多的曝光和测试。
自然,其他操作系统将不支持这些最新的尖端功能。但这没关系,因为您还可以使用“ mke2fs -t ext2”创建一个文件系统,这将更加基础,并且应易于用于互操作性。通常,人们将使用具有高级功能的文件系统以供本机使用,而将关闭所有高级功能的非常基本的文件系统用于交换目的。这就是为什么许多USB记忆棒都使用FAT的原因-因为Linux,Windows和MacOS可以读取FAT文件系统而无需任何特殊处理。
另一种可能性是,最新版本的e2fsprogs附带了ext4的用户空间文件系统实现,称为fuse2fs。对于支持FUSE的操作系统(包括大多数BSD系统和MacOS),这可能是读取ext4文件系统的便捷方法。它不会是高性能的读/写实现,但是对于只想从ext4文件系统映像中获取数据的人来说,fuse2fs可以很好地工作。
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |