2016-08-01 50 views
0

我想知道,对于蓝牙,我们有由蓝牙特别兴趣小组管理的IEEE 802.15.1标准。对于Wifi,我们拥有IEEE 802.11标准以及Wifi联盟。对于PCIe上的NVMe SSD,我们有nvmexpress来管理和发布其官方文档。是否有ext2/ext3/ext4文件系统的官方规范?

所以,通常有一个管理机构负责决定事情并标准化一些事情应该是如何允许几种不同实现之间的互操作性。

但是对于ext2/ext3/ext4文件系统,除了Linux内核代码之外,我没有找到任何官方标准。

这些文件系统基本上是由内核社区决定的吗?他们是否承诺不改变它们,以便它与其他操作系统兼容?

还是有某些官方规范的地方?谁提供它?

谢谢

回答

4

很少有文件系统通过标准委员会标准化。实际上,不打破兼容性的承诺是因为我们需要保持与旧版本Linux的向后兼容性。对于MacOS,Windows等也是如此。当使用MacOS 10.1编写的文件系统无法被MacOS 10.3等读取时,用户会变得焦躁不堪。在012版本中,超级块。当我们添加一个新功能时,我们在三个功能位掩码中的一个中定义一个新位:compat,r /​​ o compat,incompat。如果内核在r/o compat位掩码中看到了一些它不知道的信息,它现在将允许文件系统以读/写方式挂载,但是它将允许它以只读方式挂载文件系统。如果内核看到它在incompat位掩码中不理解的位,那么它将不允许文件系统被挂载。如果在compat文件系统中有一些内核不理解的内核,内核知道无论如何都可以安装文件系统。但是,文件系统一致性检查程序(e2fsck)和某些其他文件系统实用程序(例如resize2fs)可能需要更严格的兼容性检查,因此它们不会尝试对具有某些兼容功能的文件系统进行更改它不明白。

实际上,当我们添加一个新功能时,我们会等待很长时间,然后mke2fs实用程序会默认启用该功能。这允许更多冒险的用户在我们为每个人默认启用之前测试文件系统功能。在实践中,其他操作系统只实现了ext4特性的一小部分 - 最常见的是ext2/ext3/ext4的非Linux实现大致对应于通过“ mke2fs -t ext2/dev/disk“。

这些功能自从几乎四分之一世纪以前首次实现以来一直没有改变。而且他们不会因为很多企业仍在使用RHEL 5而改变,因为RHEL 5使用的是十年前发布的内核,我们关心的是向后兼容自己以及其他方面操作系统。所以你可以看看1994年出版的“Ext2的设计和实现”(http://web.mit.edu/tytso/www/linux/ext2intro.html)论文,并且就基本而言它们并没有改变。

当然,我们还在增加新功能---例如,最近我们添加了文件系统级加密(在Android中很快使用,希望是Chrome OS),项目配额和元数据校验和等。到ext4。这些新功能中的每一个都受功能标志保护,并且所有这些功能在e2fsprogs源代码发行版中分发的mke2fs当前版本中均未默认启用。某些社区发行版(如Debian)可能会启用某些出血性功能,例如元数据校验和,以便在所有人(包括企业Linux发行版的更保守的企业用户)获得启用之前获得更多曝光和测试。

当然,其他操作系统将不支持这些最新出血功能。但这没关系,因为您还可以使用“mke2fs -t ext2”创建文件系统,这将更加基础,并且应该很容易地用于互操作性。一般而言,人们将使用具有高级功能的文件系统作为本地使用,以及具有为交换目的关闭所有高级功能的非常基本的文件系统。这就是为什么许多USB存储棒使用FAT ---因为Linux,Windows和MacOS可以读取FAT文件系统而无需任何特殊处理。

另一种可能性是最新版本的e2fsprogs附带一个名为fuse2fs的ext4用户空间文件系统实现。对于支持FUSE(其中包括大多数BSD系统和MacOS)的操作系统,这可以是读取ext4文件系统的便捷方式。它不会是一个高性能的读/写实现,但是只想从ext4文件系统映像中获取数据的人,fuse2fs工作得很好。