Tridge 就外来文件系统后端确切地必须说些什么呢?实际情况是,自从今年 1 月受雇于 IBM 阿尔马登研究中心(Almaden Research Center,参阅 参考资料以获取阿尔马登实验室页面的链接)以来,这位澳大利亚黑客就一直致力于使 Samba 超出 POSIX 领域,还致力于确定要使 Samba 支持诸如 XFS、ext3 和 Storage Tank 之类的新文件系统,需要做什么工作。结论是彻底重写 Samba 的 smbd 代码,这已成为他的“新宠”项目。
developerWorks:您在 IBM 从事哪种工作?
Tridgell:我并不只是作为一名 Samba 技术人员受雇于 IBM 的。实际上,我加盟的是阿尔马登研究实验室(Almaden Research Labs),该实验室正在进行一些比起即将推出的产品来略具前瞻性的工作。我的工作内容不囿于 Samba 这方面的事情,虽然我目前暂时所从事的特定研究项目是一个与网络连接的存储器项目,在该项目中,我们正在研究下一代 NAS 解决方案,并正在将该项目同 IBM 正在开发的某些外来文件系统进行集成。这是一项十分有趣的工作,它使我有机会从事周期比较长的工作。当我在 Quantum 和 VA [Tridgell 以前干过的两家公司 — 编者。],我常常超越 Samba 核心结构的限制。为了在三个月或四个月这类时间段之内交付产品,我们确实不得不绕开这些核心限制,这意味着我们不得不做些粗劣的折衷,尤其是在 NT 访问控制表(Access Control List,ACL)方面以及缺少对诸如文件流之类的事务的支持时,或者在用户和组管理方面做些折衷。这些只是注重实效的折衷,因为我们没有那个实力真的说:“好,让我们重写整个 Samba 吧”。
在研究机构中,我的眼光可以放得更长远一些,我可以研究在接下来的一两年内究竟要做哪些工作,并且指出:“我们想把下一代 Samba 带向何方?”以及“如果我们想正确地解决这些问题,那么它看起来应该象什么样子?”。我可以认真地解决这些问题。实际上,目前我所进行的许多工作都受到了我为 VA 和 Quantum 开发产品期间所碰到问题的启发。因此,其它一些生产 NAS 产品的公司最终也将从这一工作中受益。
Tridgell:历史上,Samba 是一个到 POSIX 的网关。它提供对类 POSIX 系统的访问。这一点十分有用,因为很多人在他们的服务器上安装了类 POSIX 系统 — 如 Linux、Solaris、AIX 及其它系统 — 而为这些 POSIX 服务器提供优质 CIFS [公共因特网文件系统,Common Internet File System] 访问显得十分有用。但 POSIX 在某些方面具有相当的局限性。有些东西很难从 Windows 世界映射到 POSIX 世界。典型的例子是称为文件流的东西。在 Windows 世界中,文件可以拥有多个与之相关的数据集。但是,在 POSIX 世界中,文件只有一个与之相关的数据流。您可以将文件中的字节从 0 编到 N,而在 Windows 中则允许进行二维类型的访问。
现在,我们已经好久没有在 Samba 中支持文件流了,能这样做而不出错很侥幸,这基本上是因为 Windows 上的几乎所有应用程序都确实支持没有文件流的服务器,因为旧式 Windows 服务器(如 Windows 9x)不支持文件流。因此,应用程序往往可以支持带有或不带有文件流的系统。Microsoft Office 在 Samba 服务器上存储其文件的方式与它在 Windows 2000 服务器上存储的方式略有不同。但是,随着时间的推移,这一点将会改变。例如,如果 Office 将来的版本开始需要文件流,我不会感到吃惊。如果更多应用程序开始依赖类似这样的特性,我也不会吃惊。
因此,我们需要能够终止与 POSIX 的紧密联系,并能够直接在 Samba 中支持 Linux 上现在可用的比较高级的文件系统,如 JFS 和 XFS。正在为 Linux 开发的有趣的文件系统有很多,它们所具备的功能远远超出了核心文件系统 POSIX 规范中所定义的内容。我们希望能在 Samba 内利用这些文件系统。
dW:那么,您现在正在着重研究哪些文件系统?
Tridgell:Storage Tank 文件系统(参阅 参考资料以获取链接)是我正在着重研究的一个文件系统,它是一种基于 SAN 的文件系统。
但我目前正在做的初始工作并不是特定于 Storage Tank 的。它是非常具有普遍性的工作。我针对的第一个文件系统后端是一种极不平凡的文件系统:它是一种 CIFS 后端。因此,您将拥有一个 Samba 服务器,它与另一个 SMB [服务器消息块,Server Message Block] 服务器(如另一个 Samba 或 Windows 服务器)进行通信,而 Samba 的核心实际上将对作为其后端的另一个 SMB 服务器使用远程文件访问。我们从没有期待任何人在生产系统中这么做。很难想象这样一种情形:您想拥有这种“CIFS 上的 CIFS 网关”,但 CIFS 后端确实为在 Samba 中开发外来文件系统后端的核心功能提供了一个理想的实验床,因为 Windows 2000 后端拥有我们可能想要的所有功能,因为它拥有 CIFS 支持的全部功能,因为它 是CIFS。因此,例如,它支持本机 NT ACL,因为它 是本机 NT。
我并没有真正地参加过有关这个文件系统的数据库替代品的讨论。此时出现显得极其冒险。如果 Microsoft 在某个时候改变其核心文件系统协议,我也不会感到吃惊,因为这些协议随同 CIFS/SMB 协议一起还包括了很多过去遗留下来的“负担”。其中有大量的内容对于现代平台没有意义,但还得继续带上它们,因为这是它们从自身或别处继承来的核心协议的一部分。因此,从零开始肯定是非常有吸引力的,不过话又说回来,这么做对于他们而言将是一项巨大的工程。而且,我们还没有看到任何显示这项工作即将开始的迹象。但话说回来,可能是我们没有看到。我们并不在 Microsoft 内部有关这种讨论的 CC 列表上面。
dW:您认为您正在进行的某些研究将会具有超过 CIFS 的应用吗?
Tridgell:Samba 本身已经略微超出了 CIFS 的范围。当人们根本不想要文件和打印服务时,他们就安装 Samba 组件。例如,我们看到公司安装 Winbind 守护程序,它是一个较新的、提供域集成的 Samba 组件 — 允许您的 Linux 桌面与现有的 Microsoft 域集成,而完全不提供任何文件或打印服务。这是正在不断发展的 Samba 用法。因此,实际上 Samba 的角色已经不限于文件和打印。
Tridgell:文档编制工作还没有真正完成。管理工具还有点粗糙。还有一些类似的事情也没有完全完成。假设我进行发布,那么我可能已经将其作为 3.0 发布了。几年前,当我还是发布经理的时候,我的发布工作常常要比他们快得多。每个发布经理往往有他们自己的风格... Jeremy [Allison] 是前任发布经理,而 Jerry [Carter] 在几个月前刚刚接替了他。Jerry 和 Jeremy 倾向于更保守一些,这可能是件好事。