使用nfs,客户端可以透明地访问服务器中的文件系统,这不同于提供文件传输的ftp协议。ftp会产生文件的一个完整副本,而nfs只访问一个进程引用文件部分,并且一个目的就是使得这种访问透明化。这就意味着任何能够访问一个本地文件的客户端程序不需要做任何修改,就应该能够访问一个nfs文件。
另外,nfs是一个使用rpc构造的客户端/服务器应用程序,其客户端通过向一台nfs服务器发送rpc请求来访问其中的文件。尽管这一工作可以使用一般的用户进程来实现,即nfs客户端可以是一个用户进程,对服务器进行显式调用,而服务器也可以是一个用户进程。但是,nfs一般不这样实现。
因为,访问一个nfs文件必须对客户端透明,因此nfs的客户端调用是由客户端操作系统代表用户进程来完成的;其次,出于效率的考虑,nfs服务器在服务器操作系统中实现。如果nfs服务器是一个用户进程,每个客户端请求和服务器应答(包括读和写的数据)将不得不在内核和用户进程之间进行切换,这将付出很大的代价。如图3-所示为一个nfs客户端和一台nfs服务器的典型结构,其工作过程如下所示:
访问一个本地文件还是一个nfs文件对于客户端来说是透明的,当文件被。
打开时,由内核决定这一点。文件被打开之后,内核将本地文件的所有引用传递给名为“本地文件访问”的框中,而将一个nfs文件的所有引用传递给名为“nfs客户端”的框中。
nfs客户端通过其tcp/ip模块向nfs服务器发送rpc请求,nfs主要使。
用udp,但也可以使用tcp。
nfs服务器在端口2049接收作为udp数据包的客户端请求,尽管nfs
可以被实现为使用端口映射器,允许服务器使用一个临时端口,但是大多数实现都是直接指定udp端口2049。当nfs服务器收到一个客户端请求时,它将这个请求传递给本地文件访问。
例程,然后访问服务器主机上的一个本地的磁盘文件。
nfs服务器需要花一定的时间来处理一个客户端的请求,访问本地文件系。
统一般也需要一部分时间。在这段时间间隔内,服务器不应该阻止其他客户端请求。为了实现这一功能,大多数的nfs服务器都是多线程的——服务器的内核中实际上有多个nfs服务器在nfs本身的加锁管理程序中运行,具体实现依赖于不同的操作系统。
既然大多数unix内核不是多线程的,一个共同的技术就是启动一个用户进程(常被称为“nfsd”)的多个实例。这个实例执行一个系统调用,使其作为一个内核进程保留在操作系统的内核中。
在客户端主机上,nfs客户端需要花一定的时间来处理一个用户进程的请。
求。nfs客户端向服务器主机发出一个rpc调用,然后等待服务器的应。
答。为了给使用nfs的客户端主机上的用户进程提供更多的并发性,在客户端内核中一般运行着多个nfs客户端,同样具体实现也依赖于操作系统。
Linux1NFS排错
nfs故障主要集中在服务器端错误的共享设置以及客户端使用错误的挂载选项等,通常需要用户使用exports命令 mount命令,以及 etc exports文件进行故障分析与排错。在前面的小节中,已经部分介绍了错误现象及排错信息,下面在详细介绍几种。1 共享目录输出失败。用户在配置完成nfs服务器后,...
Linux1NFS概述
samba是主要用于实现linux与windows操作系统之间文件共享的协议,而nfs则是实现unix与linux操作系统之间文件共享协议。nfs network file system,网络文件系统 最早是由sun公司于1984年开发出来的,现在已经成为文件服务的一种标准。nfs的主要目的就是让不...
Linux1FTP工作原理
由于ftp采用客户端 服务器模式,且客户端和服务器之间使用tcp连接,所以为了建立一个tcp连接客户端和服务器都必须打开一个tcp端口,如图8 1所示。在服务器端,ftp服务器有2个预分配的端口号,分别为20和21。其中,端口21用于发送和接收ftp的控制信息,ftp服务器通过侦听这个端口来判断是否...