Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131990
  • 博文数量: 76
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 513
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-23 00:06
个人简介

展示自己、证明自己

文章分类

全部博文(76)

文章存档

2018年(1)

2014年(55)

2013年(20)

我的朋友

分类: C/C++

2013-08-25 11:58:31

NFC与RPC的调用关系 http://blog.csdn.net/dianhuiren/article/details/7192668

NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动。每启动一个功能就会启用一些端口来传输数据,因此NFS的功能所对应的端口才没有固定,而是采用随机取用一些未被使用的小于724的端口来作为传输之用。但如此一来又造成客户端要连接服务器时的困扰,因为客户端要知道服务器端的相关端口才能够联机,此时我们需要远程过程调用(RPC)的服务。RPC最主要的功能就是指定每个NFS功能所对应的端口号,并且回报给客户端,让客户端可以连接到正确的端口上。当服务器在启动NFS时会随机选用数个端口,并主动地向RPC注册。因此RPC可以知道每个端口对应的NFS功能。然后RPC固定使用端口111来监听客户端的请求并回报客户端正确的端口,所以可以让NFS的启动更为容易。注意,启动NFS之前,要先启动RPC;否则NFS会无法向RPC注册。另外,重新启动RPC时原本注册的数据会不见,因此RPC重新启动后它管理的所有程序都需要重新启动以重新向RPC注册。
当客户端有NFS文件要存取请求时,它如何向服务器端要求数据?
(1)客户端会向服务器端的RPC(port 111)发出NFS文件存取功能的询问请求。
(2)服务器端找到对应的已注册的NFS daemon端口后会回报给客户端。
(3)客户端了解正确的端口后,就可以直接与NFS守护进程来联机。
由于NFS的各项功能都必须要向RPC注册,因此RPC才能了解NFS服务的各项功能的port number、PID和NFS在主机所监听的IP等,而客户端才能够通过RPC的询问找到正确对应的端口。即NFS必须要有RPC存在时才能成功地提供服务,因此我们称NFSRPC Server的一种。事实上,有很多这样的服务器都向RPC注册。例如,NIS(Network Information Service)也是RPC Server的一种。不论是客户端还是服务器端,要使用NFS都需要启动RPC
NFS工作原理  http://blog.csdn.net/dianhuiren/article/details/7192751 

本节将介绍客户工作站访问远程文件时经历的准确步骤。假定所有上述讨论的NFS组件都已经加载到客户工作站和服务器上,且已经完成导出/加挂操作。然后将发生下面的动作顺序。

运行在客户机器上的应用程序发出对某些数据的系统调用。

客户机器上的VFS获取该系统调用,并确定该调用是针对本地数据还是远程数据的,即它是针对LFS(本地文件系统)还是针对NFS(网络文件系统)的。

如果调用的是本地数据,VFS将其发送给如图11-7所示的本地文件系统。现在可以根据运行在客户机器上的LFS算法进行数据访问和检索。这些功能在前面有关信息管理的那一章讨论过。

如果客户机上的VFS发现它是对远程数据的调用,就将该调用转换成一个或多个NFS调用。表11-2给出了部分针对RPC的NFS调用函数,这些函数用于完成转换工作。然后,客户机上的VFS按照顺序逐个发送NFS调用。服务器单独处理每个NFS调用并将控制权转移给客户机。然后客户机发送下一个NFS调用。这样在服务器出现故障的时候还可以使用恢复机制。客户机知道重新开始运行的准确位置。因此,这种情况下的恢复工作就是客户机的职责。

表11-2  针对RPC的NFS调用

NFS 调用

    

getattr()

获取文件属性

lookup()

返回文件句柄

read()

读取远程文件的数据

write()

向远程文件写入数据

create()

在远程主机上新建文件

remove()

删除远程主机上的文件

rename()

对远程主机上的文件重命名

mkdir()

在远程主机上创建目录

rmdir()

删除远程主机上的目录

readdir()

读取远程主机上的目录内容

每个NFS RPC调用都包含参数,它们被传送给运行在客户机上的RPC/XDR模块。诚如所知,数据以及数据类型要一并发送,XDR根据需要转换格式。

客户机器上的RPC/XDR使用运行在自己机器上的传输层协议软件TCP/IP将消息发送给服务器。TCP/IP收集消息并将其发送给运行在服务器上的RPC/XDR模块。该消息现在是NFS可以理解的格式。

服务器上的XDR再次转换格式,如果需要,将控制权移交给服务器上的RPC (本书已经介绍过RPC基于端口号的工作原理,该端口号指明了在服务器上执行哪一个NFS调用) 。

服务器上的RPC/XDR启动服务器上合适的端口管理程序,这取决于期望的NFS调用。

端口管理程序和服务器上的VFS通信,发送合适的请求。接下来它成为对运行在服务器上的本地操作系统的LFS的请求或调用。

服务器上的LFS访问并检索数据,然后将其传送给服务器上的VFS。

VFS将数据传送给服务器上适当的端口管理程序。

端口管理程序使用服务器上结合了如TCP/IP这样的通信协议模块的RPC/XDR模块,将数据发送给客户。数据最终到达客户机上的RPC/XDR模块。

现在将数据传送给客户节点上的NFS文件系统。

NFS文件系统将数据传送给客户节点上的虚拟文件系统,而后者又会将数据传送给客户机上运行的应用程序。

本书作者希望这个顺序能够为读者解释清楚NFS的工作原理

阅读(724) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:epoll 事件类型

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册