内网文件系统

作者:Justin Seiferth

和你们许多人一样,我在工作中经常面临推荐基于UNIX的解决方案的挑战。尽管UNIX有着良好的记录,但许多管理者仍然觉得它还有待证明。因此,部署UNIX系统意味着需要格外快速和果断地工作。最近,当我搭建一个系统来发布我们基于Microsoft Windows NT的网络的通用文件共享区域时,我正好遇到了这样一个机会。我认为其他人可能对这个系统感兴趣,并创建了一个发行版,这样你们也可以拥有自己的内网文件系统。

Microsoft Windows NT的缺点之一是其过时的文件系统。虽然它的许多不足之处可以被克服,但我们内部局域网的用户在数百万个文件中查找信息时遇到了问题,这些文件分布在全球数百台服务器上的数千个目录中。我们使用Linux、Sun的Solaris和一些Netscape产品来整合这些文件共享区域并将其发布到我们的内网上。您可以使用此系统发布任何可挂载的文件系统,包括FTP站点、Novell和Appleshare文件服务器以及NFS共享。

该系统在利用Microsoft产品的网络上工作的关键在于Linux内核(后来的2.0和2.1版本)挂载本地NTFS和远程SMB卷的能力。启用或使用此选项并没有什么神秘之处,只需在构建内核时选中它即可。一旦您安装了支持SMB的内核,您就几乎可以开始了。其他组件包括 smbfs 实用程序、wu-ftpd FTP服务器套件、Web服务器、搜索引擎和支持JavaScript的浏览器。您的发行版可能已经安装了可操作的FTP和Web服务器,并且现在大多数人都安装了Netscape浏览器,因此您只需要编译smbfs实用程序并设置搜索引擎即可。

如果您希望发布的文档大部分是文本或HTML格式,那么有很多搜索引擎可供选择:例如 htdigglimpse。如果您想能够搜索非HTML文档,那么您可能需要商业搜索引擎之一。我们使用Netscape的Catalog Server for Solaris,它可以索引二进制文件,例如Adobe的PDF和流行的办公自动化应用程序格式。

在您的“企业信息仓库”投入运行之前,必须在您的系统上修改一些配置文件。例如,如果您希望您的系统在重启后自行配置,则需要修改您的启动文件。此外,请确保您的计算机在启动系统时自动将SMB共享挂载到 匿名FTP会话可访问的区域,并启用FTP服务器的一些功能。

首先,让我们处理自动挂载共享。我使用标准的run-level 3/5 initscript来完成此操作;列表1 是一个摘录,显示了最关键的行。

smbmount(8)umount(8) 的man页面有关于所有这些标志的更多详细信息。基本上,我们将共享挂载到一个可通过匿名FTP访问的目录中。我们的通用共享对所有人都是读/写权限。如果您的站点更谨慎,您可能需要查看文件权限和所有权的含义,或者可能使用您的文件系统和Web服务器的安全机制来实施访问控制。

现在,让我们看一下用于配置FTP服务器的脚本。如果您使用 -a 选项启动FTP守护程序,则/etc/ftpaccess文件将允许您自定义FTP服务器的许多方面的性能和功能。通常,您在/etc/inetd.conf文件中启用FTP服务器的 -a 选项。有些人全天候运行他们的FTP,在这种情况下,请检查/etc/rc.d/rc3.d或rc5.d目录中的启动文件,并在那里添加该选项。使用 ftpaccess 的好处之一是能够为FTP服务器生成的目录列表指定页眉和页脚消息。

我们的用户界面的一部分是使用FTP守护程序文件区域的根目录中的HTML文件组成的。ftpaccess中的条目如下

...
message /welcome.html login

现在,welcome.html的内容显示在FTP目录列表的开头。列表2 中显示了welcome.html的源代码。

理解此文件作用的最佳方法是直接加载并运行它。简而言之,如果FTP列表包含在框架中,则会显示条件语句的 if 部分。该界面允许用户按下“上传”按钮,这将弹出一个新的浏览器实例,并将FTP目录作为根窗口。当welcome.html在此浏览器中显示为“顶部”时;它会显示有关如何使用浏览器的FTP功能上传文件的说明。

这个界面不是我们尝试的第一个。我们需要一个设计,可以轻松导航复杂的系统,并始终在用户面前保留至少最少的帮助提示。我希望使系统直观,这样我们就可以花更少的时间回答问题,而花更多的时间研究新想法。我们进行的测试表明,大多数人都知道如何下载文件,但惊讶地发现他们可以上传或查看文件的内容。我们尝试了HTTP上传和下载,但最终选择了分布在多台机器上的FTP和HTTP服务器的组合。封装FTP文件显示简化了上传和下载。与Web服务器不同,我们的FTP服务器将所有文件标记为单一MIME类型,允许我们使用单一的helper应用程序轻松显示所有文件。要使预览功能工作,需要在用户的计算机上将MIME类型与应用程序关联。我们使用通用查看器。您可以研究许多允许在浏览器中查看文件的插件之一。

现在,大部分工作和技巧都已完成;剩下的就是基于框架的用户界面的其余部分、一些时髦的图形和一些帮助文件。当您下载发行版时,您可能会注意到,在我们的框架定义文档中,我们将此系统分布在多台机器上。这是系统的一个重要功能。我们使用本地代理服务器来处理FTP和HTTP流量,以减少MAN/WAN骨干网的负载。我们将代理和Web服务器放置在部门的子域上。由于代理和Web服务器对用户是本地的,我们发现很多时候从中央基于Linux的FTP服务器(最终存储在我们的SMB通用文件区域中)检索的文件是从本地代理(缓存)提供的,从而大大加快了文件传输速度并减少了我们的网络流量。

我之前提到过,我们正在使用SPARC Solaris版本的Netscape Catalog Server,以便用户可以快速找到各种流行的UNIX(特别是Linux)、Macintosh和Microsoft Windows应用程序格式中的任何文档或内容。我们插入了一个自定义界面到此服务器,该界面将结果放入通常由FTP目录显示或打开启动画面使用的框架中。此功能为必须检索存储在全球服务器上的数十万份文档之一的用户提供了一些急需的帮助。使用Microsoft Windows NT操作员先前推荐的Microsoft Windows NT文件管理器搜索功能绝对不可行地定位文档。

您可以添加许多其他增强功能,例如浏览器访问多种文件系统类型(NFS、Appleshare、SMB、AFS等)和Internet/Intranet FTP区域。我们还在使用PHP/FI和Postgres开发一个配置管理附加组件,向用户提供完全图形化的文件上传工具,该工具还将存储关于文档的元数据,例如信息的发起者、发起者的电子邮件地址和其他信息。

资源

鸣谢

Justin是美国空军的一名少校,Linux Journal 被送到他的办公室,以便他的同事也可以从中受益。如果您去五角大楼,请顺便来打个招呼。可以通过电子邮件seifertj@www.disa.mil联系到Justin。

加载Disqus评论