为什么 JFS 如此晦涩?

Bar*_*ter 21 linux filesystems history

几年前我第一次开始使用 Slackware 时,我很快就学会了喜欢 JFS 而不是 ext3 或 reiserfs,因为它是可靠的,并且如果出现不正常关机,它的磁盘检查速度非常快。直到最近我才发现 JFS 是模糊的,几乎完全不受任何人维护。

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

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

War*_*ung 22

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

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

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

(这种现象被称为违约暴政。)

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

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

  • Red Hat 和 SuSE 认可了它。

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

    SuSE 比 Red Hat 更早地将 XFS 作为安装时选项包括在内,这可以追溯到2002 年发布的SLES 8。它不是当前的默认设置,但一直以来都得到官方支持。

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

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

    IBM 还给予 JFS 足够的权利,让 Linux 内核维护者感到舒适,但我们不能忘记他们是一家活跃的、价值数十亿美元的公司,拥有数千项专利。如果 IBM 决定他们对 Linux 的支持不再符合其利益,那么它可能会变得丑陋。

    当然,现在可能有人拥有 SGI 的知识产权,可以大惊小怪,但结果可能不会比SCO 崩溃更糟糕。IBM 甚至可能会介入并帮助压制这种巨魔,因为他们目前的兴趣确实包括支持 Linux。

    关键是,对于很多人来说,XFS 只是感觉更“自由”。它不太可能造成一些未来的 IP 问题。我们当前 IP 系统的问题之一是版权与公司的生命周期息息相关,而公司通常不会消亡。好吧,SGI做到了。这让人们感觉更好地对待 SGI 对 XFS 的贡献,就像对待任何个人的贡献一样。

  • 在任何涉及网络效应的系统中,如果你有两个大致相当的替代方案——在这种情况下是 JFS 和 XFS——你几乎永远不会得到 50/50 的市场份额分割。

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


Did*_*hen 17

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

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

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