​Linux​​的发明者和主要开发者Linus Torvalds近日公开反对ZFS文件系统。作出这番表态的时机不容忽视,因为ZFS只是最近才第一次正式实现在一款主要的发行版中。这个发行版就是Ubuntu 19.10,其中的ZFS文件系统被誉为是Canonical最新的Linux版本的主要功能之一。

Torvalds 拒绝接受 ZFS 文件系统_文件系统

Torvalds在一个论坛帖子中写道:“如果有人添加像ZFS这样的内核模块,他们就自行维护。我不会维护这样的内核模块,我也不可能被别人的内核更改所束缚。”

如果读者只考虑Torvalds的这个帖子,很容易得出他对ZFS持异议源自于潜在的许可问题这个结论。他写道:“除非我得到Oracle的主要法律顾问或最好得到Larry Ellison本人签署的Oracle正式信函,表示可以合并ZFS代码、将最终结果视作符合GPL的许可证,否则我不可能合并任何 ZFS代码。”

许可问题更加深入一点。要知道,Linux端口上的ZFS依赖两个已被弃用的内核函数:__kernel_fpu_begin()和__kernel_fpu_end()。取代了__kernel_fpu_begin()和__kernel_fpu_end()的函数被有意发布为只面向GPL许可证。

因此,如果Oracle尚未正式同意ZFS采用GPL许可证,而ZFS依赖的两个已被弃用的函数又被只面向GPL许可证的函数取而代之,就存在问题(即使目前仅仅是意识形态上的问题)。

但这不仅仅与GPL有关。引发这个问题的起因是有人抱怨Linux内核最近破坏了源代码树外(out-of-tree)ZFS模块。对此Torvalds说:“请注意,‘我们并不破坏用户’实际上关乎用户空间应用程序,关乎我维护的内核。”随后,Torvalds再次归结为许可问题,声称“但是考虑到Oracle好打官司的本性,加上许可方面的问题,这么做我绝对不会放心。”

ZFS方面还存在其他问题。最大的问题是它破坏了OSI 7层模型。具体来说,ZFS使用其自己的纠错机制,因此避开了对开放系统互连(OSI)模型下面几层的信任。请记住,OSI 7层模型的目标是各种通信系统与标准通信协议实现互操作性。因此,你的整个文件系统避免了Linux依赖的模型。

让事情变得更复杂的是,ZFS提供了少数几款生产级Linux文件系统所拥有的功能。唯一可与之匹敌的文件系统是Btrfs,该文件系统常常因不够稳定、无法用于生产系统而饱受诟病。

最后,Torvalds说:“不要使用ZFS。就这么简单。我觉得,它始终比其他任何系统更像是个时髦词;对我来说,许可问题完全使ZFS成为不值得考虑的文件系统。”他进一步表示:“在我见过的基准测试中,ZFS的结果并不是很棒。而据我所知,它再也没有得到任何真正的维护,因此从长期稳定性的角度来看,你何必要使用它?”

Canonical对这件事有什么看法?Canonical的工程主管Martin Wimpress通过电子邮件写道:“从最近ZFS方面的讨论来看,我们的客户和用户告诉我们他们希望Ubuntu中有ZFS,因为ZFS拥有许多所需要的功能,可以防止数据损坏、支持高存储容量、提供高效的数据压缩、快照和写入时复制克隆等功能。我们将继续与OpenZFS项目中的朋友合作,改善Ubuntu上的ZFS。”

读者只想知道ZFS文件系统接下来会发生什么。Oracle可能会给相应代码重新发许可证,以便它与主线内核变得“友好”吗?如果不是这样,Torvalds很可能会继续对ZFS保持冷漠的态度。