首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ext2/ext3/ext4文件系统有官方规范吗?

ext2/ext3/ext4文件系统有官方规范吗?
EN

Stack Overflow用户
提问于 2016-08-02 03:12:43
回答 1查看 1.5K关注 0票数 2

我想知道,对于蓝牙,我们有IEEE 802.15.1标准,由蓝牙特殊兴趣小组管理。对于Wifi,我们有IEEE 802.11标准,也有Wifi联盟。对于PCIe上的NVMe固态硬盘,我们有规范和发布其官方文档的nvmexpress。

因此,通常有一个监管机构来决定一些事情,并标准化一些事情应该如何实现,以允许几个不同实现之间的互操作性。

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

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

或者有什么官方的规范吗?是谁提供的呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-02 07:15:05

很少有文件系统是通过标准委员会进行标准化的。在实践中,不破坏兼容性的承诺是因为我们需要保持与旧版本Linux的向后兼容性。当使用MacOS 10.1编写的文件系统不能被MacOS 10.3等读取时,用户会变得暴躁。

在ext4的情况下,我们在超级块中有特征位掩码。当我们添加一个新特征时,我们在三个特征位掩码之一中定义了一个新位: compat,r/o compat,incompat。如果内核在r/o compat位掩码中看到一个它不知道的位,它现在将允许文件系统以读/写方式挂载,但它将允许以只读方式挂载文件系统。如果内核在incompat位掩码中看到它不理解的位,那么它将根本不允许挂载文件系统。如果compat文件系统中存在内核不理解的位设置,则内核知道无论如何挂载文件系统都是安全的。但是,文件系统一致性检查器(e2fsck)和一些其他文件系统实用程序(例如,resize2fs)可能需要更严格的兼容性检查,因此它们不会尝试对具有一些它不理解的compat功能的文件系统进行更改。

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

自从近25年前首次实现以来,这些特性一直没有改变。它们不会改变,原因很明显,仍然有很多企业仍在使用RHEL 5,它使用的是十多年前发布的内核,我们非常关心与我们自己以及与其他操作系统的向后兼容性。因此,您可以查看1994年发表的“Ext2的设计和实现”( the Design and Implementation of Ext2,http://web.mit.edu/tytso/www/linux/ext2intro.html)论文,就基本内容而言,它们并没有改变。

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

当然,其他操作系统不会支持这些最新的尖端功能。但这没问题,因为您也可以使用"mke2fs -t ext2“创建一个文件系统,这将是非常基本的,而且应该很容易用于互操作性。通常,人们会将具有高级功能的文件系统用于本机使用,而将具有所有高级功能的非常基本的文件系统用于交换目的。这就是为什么许多U盘使用FAT -因为Linux、Windows和MacOS可以读取FAT文件系统而不需要任何特殊处理。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38706428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档