为什么 JFS 如此晦涩难懂?

为什么 JFS 如此晦涩难懂?

几年前,当我第一次使用 Slackware 时,我很快就爱上了 JFS,而不是 ext3 或 reiserfs,因为它可靠,而且如果出现不正常的关闭,它的磁盘检查速度非常快。直到最近我才发现 JFS 晦涩难懂,几乎完全无人维护。

我不知道我是这样的少数。为什么会出现这样的情况呢?是不是文件系统技术已经发展到了 JFS 现在缺乏任何比较优势的地步?是不是 ext3 与其他操作系统的互操作性更好?特定的其他文件系统是否受到特定供应商或内核开发人员的支持?

与其说这是一个技术问题,不如说是一个历史问题。

答案1

您必须摆脱的第一件事是与 ext 的比较[234]。替换其中任何一个都就像替换 Windows 中的 NTFS 一样。当然有可能,但需要高层做出决定才能进行转换。

我知道你问的是保留现有的替代方案,而不是消除其他替代方案,但这种特权竞争正在耗尽房间里的大部分氧气。在摆脱竞争之前,边缘替代品将很难获得关注。

自从分机[234]不会消失,JFS 及其同类从一开始就处于严重劣势。

(这种现象被称为默认暴政。)

第二件事是 JFS 和XFS大约在同一时间贡献给 Linux,并且它们几乎解决了相同的问题。内核极客可能会争论两者之间的细微差别,但事实是那些遇到过其中一种情况的人[234]的限制在 XFS 和 JFS 中有两个大致相同的解决方案。

那么为什么 XFS 会获胜呢?我不确定,但这里有一些观察结果:

  • 红帽和 SuSE 对此表示认可。

    RHEL 7 使用 XFS 作为默认文件系统,它是 RHEL 6 中的一个安装时选项。RHEL 6 推出后,Red Hat 将官方 XFS 支持向后移植到 RHEL 5。在此之前,XFS 通过半官方可用于 RHEL 5。EPEL渠道。

    SuSE 比 Red Hat 更早地将 XFS 作为安装时选项,返回 SLES 8,于 2002 年发布。它不是当前的默认设置,但一直以来都受到官方支持。

    还有许多其他 Linux 发行版,RHEL 和 SuSE 并不是整个 Linux 领域最受欢迎的发行版,但它们大铁选择的发行版。他们正在发挥 JFS 和 XFS 优势最重要的作用。这些公司不能总是摇晃狗,但在涉及大铁的问题上,他们有时可以。

  • XFS来自SGI,一家现在基本上已经消失的公司。在他们去世之前,他们正式放弃了他们在 XFS 中拥有的所有权利,这样 Linux 人员就可以放心地将其包含在内核中。

    IBM 还向 JFS 授予了足够的权利,以使 Linux 内核维护者感到放心,但我们不能忘记他们是一家活跃的、价值数十亿美元的公司,拥有数千项专利。如果 IBM 决定他们对 Linux 的支持不再符合其利益,那么事情可能会变得很糟糕。

    当然,现在可能有人拥有 SGI 的知识产权,并且可以大惊小怪,但结果可能不会比上合组织的崩溃。 IBM 甚至可能会介入并帮助压制这样的巨魔,因为他们的利益目前包括支持Linux。

    重点是,XFS 对很多人来说感觉更“自由”。它不太可能造成未来的 IP 问题。我们当前的知识产权制度的问题之一是版权与公司的寿命挂钩,而公司通常不会消亡。好吧,SGI 做到了。这让人们感觉更好地对待 SGI 对 XFS 的贡献,就像对待任何个人的贡献一样。

  • 在任何涉及网络效应如果您有两个大致相同的替代方案(本例中为 JFS 和 XFS),那么您几乎永远不会获得 50/50 的市场份额分割。

    在这里,网络效应是培训、兼容性、功能可用性......这些效应将平衡进一步推向获得早期胜利的选项。见证 Windows 与 OS X、Linux 与 all-other-*ix、以太网与令牌环......

答案2

作为在 Linux 上广泛使用 JFS 并深入研究源代码来解决问题的人,我可以假设以下几个原因:

  1. JFS 是为 AIX 创建的文件系统的一个移植,然后移植到 OS/2,然后开源。由于存在代码污染的风险,没有 AIX 的开发人员参与其中,而且 OS/2 已经有一段时间没有开发了。
  2. 从我的代码阅读和 JFS 的开发过程中,我发现代码中有很多问题(其中之一是在大端机器(即 IBM 制造的机器)上调整 FS 大小失败),这些问题已由项目修复,但并未得到解决。甚至在修复几个月后就合并到主线内核中,可能是因为 IBM 开发人员并不是树的该部分的正式维护者。
  3. 该代码存在许多可读性问题,这可能导致发行版缺乏官方支持,因为难以阅读的代码很难调试。
  4. 我认为 JFS for Linux 的主要用途之一是迁移信息并与 AIX 系统共享信息,但在 AIX5L 中,没有(支持的)选项可以在不使用专用 LVM 的情况下在简单磁盘上使用文件系统。 AIX 不适用于 Linux,而 JFS 则在没有将这些扩展移植到 Linux 的情况下进行了扩展(请参阅数字 1)。

澄清:尽管我过去在 IBM 工作过,但我从来不是 IBM AIX 开发团队或 JFS 开发团队的成员,这些假设的原因是基于我的逻辑推论以及对文件系统和 Linux 历史的熟悉。

相关内容