网络管理员指南 -11.网络文件系统NFS

/ns/wz/net/data/20020808034303.htm

网络管理员指南 -11.网络文件系统NFS

本文出自:http://www.linpus.com.tw 作者: Andrew Anderson


NFS,就是网络文件系统,可能是使用RPC的最为显著的网络服务。它允许在远程主机上使用与一个用户访问
任何的本地文件相同的方法来访问文件。这通过在客户端(它使用的是远程文件系统)和在服务端上的一个
NFS服务(它提供的是文件数据)的核心功能的混合来实现。这个文件访对于客户来说是完全透明的,并且在
各种服务器和主机的结构中交叉工作。

NFS有一系列的优势:

可以被所有用户访问的数据可以被保存在中心主机上,客户在启动的时候会登录到这个路径上。例如,你可以
在一个主机上保留所有的用户帐户,并且从这个主机上登录你的网络上的所有的主机。如果同NIS一起安装,
用户就会马上登录到任何的系统中,并且可以继续在一些文件的工作。

所有消耗大量磁盘空间的数据都可以保存在一个单一的主机上。例如,所有的与LaTeX 和 METAFONT有关的文件
和程序都可以保存在同一个地方。

管理性文件可以保存在一个单一的主机上。不再需要使用rcp安装同样的傻文件到20个不同的机器上。

NFS主要是Rick Sladkey的成就,他撰写了NFS的核心代码和NFS服务器的大部分的内容。后者源自Mark Shand所
写的unfsd user-space NFS server,而hnfs Harris NFS server是由Donald Becker所著。

现在让我们看一看NFS是如何工作的:一个客户可能要求使用与安装一个物理设备相同的方式在一个本地路径从
一个远程主机上安装一个路径。然而,syntax习惯于所指定的远程路径是不同的。例如,要在vale上从主机vlager
上安装/home,管理员会在vale上执行下面的命令:

于是安装将会尝试在vlager上通过RPC连接到mountd安装。服务器就会检查vale在要求下是否被允许安装路径,
如果可以,就会返回给它一个文件处理。这个文件处理将会在之后所有的要求中用在文件/用户中。

当某人通过NFS访问一个文件,核心就会在服务机上放置一个RPC呼叫到nfsd(NFS的daemon)。这个呼叫含有文件
处理,文件被访问,并且用户的用户和组群的ID作为参量。这些被用在决定对于特定文件的访问权。为了阻止未被
授权的用户读取或者是修改文件,用户和组群ids在两个主机上必须是相同的。

在多数的安装上,对于用户和服务器的NFS功能都是在系统启动中从用户空间开始的作为核心层的daemons来安装的。
这些是服务主机上的NFS daemon (nfsd),并且Block I/O Daemon (biod)在客户主机上运行。要提高生产量,biod
使用先读后写进行异步输入输出;几个nfsd daemons也经常同时运行。

NFS安装有一些不同,因为客户代码被紧紧的合成在核心的虚拟文件系统(VFS)层中,并且不需要通过biod的更多的
控制。另一方面,服务器代码全部在用户空间运行,这样同时运行服务的几个复本由于所涉及的同步事件的原因,
可能性很小。当前,NFS也缺少先读后写的功能,但是Rick Sladkey计划添加它们。

NFS代码的一个最大的问题是1.0版本的核心在块中无法划分出大于4K的内存。结果,网络代码无法处理减掉标题大
小之后大概多于3500 bytes的datagrams等等。这就意味着默认下使用大UDP datagrams的系统上运行来传入或者传
出NFS daemons需要人工减小大小。这在某些情况下严重影响使用。这个限制在之后的-1.1核心中消失,通过修改客
户代码来实现了改进。