网络文件系统(NFS)
来自EEWiki.
背景:NFS(Network File System)是由SUN公司于1984年推出的,通讯协议设计与操作系统无关的,并能够达到不同操作系统间文件共享的RPC (Remote Procedure Call远程过程调用)服务。当使用者需要远端文件时只要用“mount”命令就可把远端文件系统挂接在自己的文件系统之下,与使用本地机器上的文件没什么两样。
NFS协议被设计为适合于不同的机器、不同的操作系统、不同的网络体系以及不同的传输协议。这种广泛的适应性是通过使用建立在外部数据描述(XDR)之上的远程过程调用(RPC)原语得到的。
基本原理:下网络文件系统主要分为两个部分:NFS Client端、NFS Server端,即采用Client-Server体系结构。其中Client方面主要负责处理用户对远程文件的操作请求,并把请求的内容按一定的包格式从网络发给文件所在的Server方面。而Server方面则接受Client方面的请求,调用本机的VFS的函数进行文件的实际操作,并把结果按一定格式返回给Client方面。而Client方面得到Serve的返回结果,把它返回给用户。
这是网络文件系统的基本体系结构:
NFS的实现被分离成两个独立的程序来实现,分别是Mount安装协议和NFS远程过程调用。Mount安装协议是实现文件访问的开端。它的主要功能是获取远程机器上的不同文件系统结构并返回所要访问的文件系统根句柄,作为以后对该文件系统进行操作的根本。
在NFS中,每次对远程文件系统上的通过一个称之为”文件句柄”(file-handle)的数据结构来实现对远程机器上目标文件的操纵。(使用文件句柄的主要目的是使得客户机和服务器的路径名语法隔离开来,并允许不同结构的客户机存取具有分层结构的文件,NFS要求客户机完成所有对路径名的解释。其结果是,当客户机要求对某个文件进行操作时,不能用全路径名指明该文件,而必须得到一个用于引用该文件的句柄。)首先对文件名在本地进行解析,这一过程与传统UNIX中的文件名解析过程类似,即一次解析一个全路径名的一部分。它从分层结构的根及路径的开始出发,重复地从路径中取出下一部分,并找出一个具有该名字的文件或子目录。
在NFS系统中,得到一个目的文件句柄不是一步完成的,而是分多个步骤实现的。首先是由Mount安装协议取得该NFS服务器上的分层文件结构信息,并取得相应文件系统的根句柄。在得到一个远程文件系统的根句柄后,结合本地对文件名字解析的结果,可以调用NFS的远程过程,在当前远程文件系统根句柄下取出各个子目录的文件句柄返回,检查返回的文件句柄,得到最后的所要访问的文件句柄。得到文件句柄的流程图如下所示,它展示了当客户机要在服务器的分层结构中查找一个路径为/a/b/c的文件时,客户机和阴冬哭夕间所供杆的信直夺称。
现状及发展方向:目前大多数Unix 系统通过NFS Network File System 网络文件系统协议访问远程数据而Windows 系统通过CIFS Common Internet File System公共Internet 文件系统协议进行远程数据访问
NAS 是一种将存储设备和应用主机分开的机制,它使用CIFS 和NFS 向客户端提供文件级服务。大多数Unix 系统通过NFS Network FileSystem 网络文件系统协议访问远程数据,而Windows 系统通过CIFS CommonInternet File System 公共Internet 文件系统协议进行远程数据访问。由于NFS 允许Unix 客户机挂接远程的文件,系统客户机访问NAS 中的数据时,它的I/O 请求通过网络被重定向到NAS中。NAS 的文件系统解析客户应用程序的数据并维护所有的数据缓冲如果所需的数据不在缓冲中NAS 将向磁盘控制器发出请求,进而从磁盘或RAID 获得数据。最后,向客户机返回相应的数据。


