异型网络之间的互联是当今计算机网络技术发展的热点问题之一。随着计算机技术的深入发展与网络的不断普及,异型机与异型网络的互相连接、互相共享资源已经成为人们需要迫切解决的问题了。现在广泛流行的网络操作系统netware与同样为人们所喜爱的unix系统之间的互联问题正是在这种背景下提出来的。由于novell公司已经成功地使netware支持tcp/ip协议,而unix的联网正是建立在tcp/ip 协议之上的,所以一些基于tcp/ip协议的应用层协议,就自然成为解决netware与unix互联问题的较好方法了。网络文件系统(nfs)正是这些协议中,应用较广、技术较为成熟的协议之一,而且现在市场上已经推出了几十种nfs产品。
它们被广泛地应用于netware与unix的互联之中。本文将通过对nfs的概念和实现方法的讨论,来说明netware与unix之间是如何通过nfs实现互联的。
一、网络文件系统概述
sun microsystems公司是以其高品质的工作站而享誉计算机界的。其工作站现已广泛地应用于多种领域,如cad、仿真、图形处理等。sun工作站采用的是开放式的系统结构,它们大都是基于unix操作系统之上的,并且支持tcp/ip协议作为其网络的体系结构。也正是由于对tcp/ip协议的支持,使得sun工作站可以很方便地在ethernet上,基于tcp/ip进行通讯。
同时,又由于tcp/ip协议在网际互联上的优越性能,使得sun工作站与其它异种机之间的通讯实现起来较为方便和容易。
为了实现网络上的文件服务,sun公司提出了网络文件系统(network file system, nfs)的概念。它提供了异种机、异种操作系统之间的透明在线(on-line)共享文件的手段。nfs允许用本地操作系统的i/o调用方式访问远地文件,并且这与文件存放的物理位置和使用何种操作系统无关。
从用户的角度看,nfs是不可见的。用户可以运行一独占的程序并且可以对独享文件进行i/o操作,而这时用户并不清楚它们是本地的还是远程的程序或文件。
使用nfs的好处很多。nfs允许多台机器使用同一个数据文件,所以文件的数据对网络上的各机器来说都是可存取的。而且nfs可以通过将大的文件存储在一台机器上而由大家来共享的方式,使存储的费用明显的降低。尤其是在数据库应用系统中,你可以把数据文件可靠、统一地集中在一起,既可共享使用又可以进行方便的统一管理。
nfs目前已经得到开放系统组织的承认,成为今天的分布式文件系统的工业标准。nfs不仅能够支持sun工作站之间的连接,而且能够支持来自主要计算机厂家的产品。尤其是大多数unix操作系统,诸如sco unix,都提供了支持nfs协议的软件,以实现unix与其它操作系统之间的通讯。
二、从网络的体系结构来说明nfs的实现
nfs在一个操作系统中的具体形式如图1。当一个应用程序运行时,它可以通过系统调用打开一个文件,并对其进行存取访问。这时的文件存取系统可以接收用户的各种请求,并且能够自动判断将该请求发往何处,即是本地文件系统还是nfs客户服务部分。这种判断是根据被请求的文件是在本地存储介质上还是在远程的计算机上而做出的。当一个被请求文件在远地时,nfs客户服务软件利用nfs协议与远地机器上适当的nfs服务器取得联系,并且进行相应的请求操作。在远地服务器对请求做出回答后,客户服务软件获得结果,将它传送给应用程序。
从程序员的角度来看,nfs协议本身并没有提供什么特别的调用过程。一旦管理员将nfs设置完成后,程序员就可以对远地和本地的文件进行同样的存取操作,它们之间并无明显的差别。
对于nfs,设计者并没有将它设计成为解决所有文件传输的综合性协议,而是将nfs的实现分成三个相对独立的部分:nfs协议本身、远程过程调用 (remote procedure call, rpc)机制和外部数据表示(external data representation, xdr)。如果将它们与iso/osi的推荐标准相对照的话,可以看出rpc对应于会话层,xdr对应于表示层,而nfs协议本身则对应于应用层,见图 2。从这个体系结构可以看出,真正的nfs服务是建立在外部数据表示xdr和远程过程调用rpc所提供的服务功能之上。
在网络环境中,rpc为运行在不同机器、不同操作系统上的程序(过程)相互调用、传递参数及回送结果等提供一种规范的方法。rpc为实现网络上的客户/服务器模式提供了支持。比如,一个程序员可以把他的程序分解成为客户、服务器两部分,在客户方面,程序员设计了一些过程,如remote,并将rpc码插入到这些过程之中;而服务器方面,应用rpc的其他功能,实现了一些处理该种调用的过程。当一个运行中的客户程序发出远程调用时,rpc软件自动对变元的值进行收集,并打成数据包(message)发往远地服务器,启动调用过程,最后返回结果。整个调用过程如同调用本地过程一样。prc实际上是iso rm 会话层协议的具体实现,该机制将下层协议的细节掩盖了起来,使程序员抛开通信协议的具体过程,就可以设计出分布式程序。
xdr是数据描述和编码的一种标准,是表示层的具体实现。它提供了在不同体系结构的计算机之间进行数据传输时,数据表示的规范方法。比如,对于32- bit的整数表示方法来说,各种机器并不相同,有的将整数的主要字节放在高位地址部分,有的则刚好相反,所以在网络上要使数据在这两种整数表示法的机器之间进行传送,就必须进行适当的转换,否则数值在传输后会发生变化。xdr就提供了这种转换功能。xdr采用的是iso推荐的抽象语言法表示记法1,即 asn.1,作为内部数据传送的标准语法表示。相互通信的两方xdr进行本地语法表示与asn.1之间的转换与逆转换。
rpc和xdr提供的这种网络服务为构造nfs这样的分布式数据处理系统奠定了基础。由此可见,由nfs协议本身、rpc和xdr三者相结合,在 tcp/ip或udp/ip之上,实现了nfs概念的全部。它们互为基础、互相配合,实现了基于nfs的异种设备、异种操作系统之间的透明在线共享文件的访问功能。
三、举例说明nfs的工作过程
为了详细直观地说明nfs的工作过程,我们以sun工作站上的unix操作系统为例,来说明nfs的具体工作过程,包括什么是文件阶层(hierachies)、如何理解服务器和客户、服务器如何使其它机器共享其文件以及如何对远程机器上的文件阶层进行访问等。
1.文件阶层
当通过某安装点(mount point),从一个本地硬盘来安装一个文件系统时,可以将整个文件系统安装上并从它的根(root)来启动。例如,有两个文件系统root和usr,在不同的硬盘分区中。现在可以将usr文件系统安装到root文件系统的/usr目录上,并通过/usr目录对usr分区进行访问。
与上述原理相似,也可以将不同机器上的某个文件系统安装到本地硬盘上,甚至可以将另外一台机器上的文件系统中的某个目录安装到本地,而不必将整个文件系统都安装过来,如图3。
2.服务器与客户的概念
一个文件服务器是一台用于共享的机器,其它机器可以用它安装(mount)文件系统。一个客户机是一台至少从一个文件服务器继承了一个文件阶层的机器。任何机器(除非没有硬盘)都可以同时既作为nfs服务器,又作为nfs客户机来使用。
3.服务器与输出(exporting)
在一台unix工作站上,exportfs系统程序、rpc.mountd以及nfsd守候进程(deamon)一同来控制nfs。一旦nfs文件服务器将文件阶层进行输出(export)后,此服务器上的相应目录可由其它的机器来访问。文件服务器上的/etc/exporfs文件列出了这些可用的目录、可以访问它们的客户、以及存取权限。当你启动exportfs程序时,/etc/rc.1oca1就会自动激活exportfs程序。该程序检查 /etc/exportfs文件并通知服务器内核有关所输出的每个文件阶层的特权。在服务器启动后,还可以利用export命令将一个文件阶层分解成输出和非输出部分,或者改变一个已经输出的文件阶层的特权。
4.客户与安装(mounting)
客户对文件服务器上的export目录进行存取是通过mounting来进行的。客户在安装目录时,不是复制该目录,而是通过一系列的远程调用来实现 mounting进程,它使用户可以对服务器硬盘上的相应目录进行透明存取。运行在文件服务器上的rpc以一定的格式接受信息,即xdr格式。由 rpc.mountd守候进程来处理这些信息并允许或禁止对一个文件阶层进行安装。一旦客户将远程目录安装后,客户即可以使用“cd目录名”命令进入相应的目录下进行操作了,就如同操作本地硬盘一样。客户对有export信息的文件服务器进行定位,并在它与服务器之间建立连接,此连接进程称为 binding, nfs的装订是发生在nfs安装的时候。客户在自举时可以对一目录进行安装,也可以用mount命令来显式地安装,或者通过自动安装器 (automounter)来进行。/etc/fstab文件中列出了在客户启动时安装的所有文件阶层。由此可见,nfs的工作是由nfs服务器和nfs 客户进程共同实现的。只有在nfs服务器上规定了输出的目录或者文件系统,在nfs的客户机上才能对其进行继承,并通过对这些目录或者
文件系统的安装来实现客户对服务器的透明访问。
四、netware与unix工作站之间通过nfs互联的实现
自从sun公司实现了nfs以后,它实际上已经成为unix产品的分布式文件系统。市场上有众多的nfs产品出现,这里将以当今最流行的两种操作系统unix、dos之间通过nfs进行透明访问为例,来看一看nfs在互联中的具体实现。
我们这里所要介绍的产品是netware nfs、netware nfs gateway和pc-nfs。前两者是由novell网络公司推出的,后者则是sun microsystems公司的产品。由于这两个公司看待unix与dos互联问题的角度和出发点不同,因此它们所实现的产品也就有很大的区别了。netware nfs和netware nfs gateway是novell公司从自己的netware网络操作系统出发,基于dos的考虑所研制、开发出来的。它提供给unix工作站透明访问netware服务器的机制以及由dos工作站通过netware服务器来共享unix资源的手段。而 pc-nfs则是sun公司从unix工作站
的观点出发,提供给ms-dos或ms-windows用户的、用以实现unix的nfs客户方的软件,使pc机用户共享unix的资源。
1.netware nfs
netware nfs是将unix系统透明地集成到netware 3.11环境之上。它可以使得netware服务器具有nfs服务器的功能。一旦安装了netware nfs之后,享有nfs客户服务的unix工作站就可以与netware上的dos工作站一起共享服务器上的文件资源。它提供有 nfs、ftp等可装载模块(nlm)为unix客户提供服务。netware nfs同时也在netware和unix之间提供双向的打印网关以及与 x/window应用相交互,允许x客户从远程来管理netware服务器。netware nfs与其他unix系统一样,需要使用tcp/ip作为基本的支撑协议,并籍此完成nfs上的各种功能。它的特点是:
(1)使unix用户访问netware
利用netware nfs,unix客户可以访问并从netware服务器上安装(mount)文件系统,就如同它从一个典型的nfs服务器上所做的一样。这使得unix用户可以在保留了自身的操作系统优势的同时,使用netware上的文件。
(2)将netware环境与unix环境集成
netware nfs将网络文件系统的概念引入到netware的联网环境中来,使得unix工作站可以与其它的netware客户系统,例如, macintosh、dos、windows以及os/2共享文件。ftp服务可以使tcp/ip客户系统利用ftp协议从/向netware服务器传送文件。它提供了完整的打印集成:unix用户可以利用netware打印机进行打印,而netware用户也可以在tcp/ip网络上可以访问的打印机上进行打印。它同时使netware v 3.11成为一个功能强大的unix工作组中nfs服务器。对于用户输入的操作命令,可以有很短的响应时间和较高的吞吐率。
(3)提供用x/window来管理服务器
netware nfs提供xconsole应用程序来使x/window系统的用户以及vt100/220终端用户从远程来管理 netware v 3.11服务器。比如,可以从一个vt100/220终端或一个unix工作站运行x/window,对netware服务器进行远程配置和排除netware服务器的错误。
利用netware nfs,unix用户在保持其原有系统的功能之外,还获得了netware服务器优化技术所带来的好处,如磁盘的高吞吐量、容错技术及其安全措施等。另外,netware nfs还带来了改进的工作组(work group)的运行效率、资源共享和高效率的网络管理。
总之,netware nfs提供给unix工作组以高性能的nfs服务器,同时netware操作系统又带给unix用户以良好的时间与空间的响应,从而极大地提高了系统的性能价格比。
2.netware nfs gateway
netware nfs gateway所提供的功能与netware nfs相反,它是一个基于服务器连接的、使netware用户可以访问unix的方案。该产品可以让dos和windows用户方便地对unix上的文件系统进行访问,就象透明访问netware服务器一样。
novell公司研制、开发netware nfs gateway的目的,就是要给netware用户一种访问unix文件的选择。那些已经习惯于 netware环境的pc机用户们,可以使用这种网关来共享本地或者远程unix系统上的文件。对于这些共享文件的使用,就象操纵dos或windows 的文件一样。通过netware nfs gateway还可以使pc用户共享unix上价格昂贵的海量存储资源,如cd-rom等。
netware nfs gateway的安装与集中的管理都是由服务器来完成的。tcp/ip主机地址、unix/netware记帐信息都是在服务器上由域名字系统(domain name system, dns)和网络信息服务(nis)统一管理起来的。这种集中管理的好处在于可以使网络管理员从服务器上安装和管理系统,以及获得正确的ip地址。也正是由于nfs的文件存取是通过netware服务器来完成的,网络用户们因此可以得到 netware保密机制的支持。
另外,netware nfs gateway还提供了xconsole应用程序,允许x/window系统的用户以及vt 100/220终端用户远程管理netware v 3.11服务器。
novell公司的这两种nfs产品,在基于netware网络操作系统的基础之上,分别从两个方面解决了netware与unix之间的文件共享、打印共享以及透明访问等方面的问题。为局域网与广域网的互联提供了一种可行的解决方案。
3.pc-nfs
通过使用pc-nfs,unix工作站的硬盘可以被当作为pc机上的附加硬盘来使用。pc-nfs提供了tcp/ip的全部实现,包括ftp、telnet和其它实用程序,同时还包括将dos请求重定向至unix的能力。
pc-nfs可以支持以太网、令牌环、串行通信等通讯方式的连接。对于以太网的连接方式,可以把它安装在其默认的一些网络适配卡上,如3com的 etherlink系列的网卡、pc nic及ni5010等。它同时还支持ndis及odi技术,这样就使得pc-nfs对大多数的流行网卡都可以提供支持。而且,正是由于有了对odi技术的支持,使得pc-nfs可以同时支持tcp/ip网络和netware网络,从而成为连接这两种当今广泛使用的网络的纽带。
在安装了pc-nfs之后,系统通过批文件来使用net use命令,并以逻辑号,如(d:、e:)将unix的硬盘映射到pc机的本地上。pc-nfs还负责完成dos与unix的文本格式转换,以及在ms-dos文件名和nfs文件名之间作出操作处理。
unix主机上的nfs和pc机上的pc-nfs提供了较强的联网环境,pc从中可以利用unix工作站上的大容量存储设备,并能在unix与dos的应用程序之间共享数据资源。
当然,在使用pc-nfs时也有一些不足。比如,该软件为保证各机器之间的兼容性而限制了它们之间的吞吐量,这就使得它的速度不及netware快,另外,当一个配有pc-nfs的pc机与非nfs服务器使用tcp/ip软件进行通讯时,还有可能缺乏灵活性;装配一个pc-nfs软件可能会占去pc机 80-90k的内存空间,这对于空间狭小的pc机来说有时会成为十分棘手的问题(在pc-nfs v 5.0中对该问题进行了改进,可以将pc-nfs的驻留程序装入高端内存中)。
但是,pc-nfs所带来的好处将远远超过这些不足,它实现了dos用户使用unix工作站的优良性能;同时还使得unix用户能共享拥有丰富软件资源的 dos系统。这样,在一定程度上满足了双方用户的要求。这种将pc机集成到使用nfs的unix主机上的作法,使人们在系统的性能与机器设备的价格之间找到了平衡。
在众多的网络系统中将重要的桌面计算机系统:dos和unix连接在一起,共享数据与打印,相互协调地工作,这已成为人们迫切需要解决的问题。unix上基上tcp/ip协议的nfs技术为我们解决这个问题提供了一个可行的办法。相信随着unix与tcp/ip技术的不断发展,nfs技术也会不断地得到完善,将会有更好的nfs产品出现,它将在以资源共享为目的的网际互联中发挥更大的作用。