柳暗花明笔记

    nfs ,nis 中portmap服务的作用

    所属分类:[ linux&mysql ] 猫哲学家 发表于:2012-08-10 22:15 浏览:431

    nfs ,nis 中portmap服务的作用

     

    7.1.4  RPC
    因为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存在时才能成功地提供服 务,因此我们称NFS为RPC Server的一种。事实上,有很多这样的服务器都向RPC注册。例如,NIS(Network Information Service)也是RPC Server的一种。所以如图7-3所示,不论是客户端还是服务器端,要使用NFS都需要启动RPC。

    (点击查看大图)图7-3  NFS与RPC服务及操作系统的相关性

    NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc794)及NFS V3(rfc1813)(最新的版本是V4(rfc307))。最早,SUN公司曾将NFS V2设计为只使用UDP,主要原因是当时机器的内存、网络速度和CPU的影响,不得不选择对机器负担较轻的方式。而到了NFS V3,SUN公司选择了TCP作为默认的传输方式。V3相对V2的主要区别如下。
    (1)文件尺寸。
    V2最大只支持32位的文件大小(4 GB),而V3新增加了支持64位文件大小的技术。
    (2)文件传输尺寸。
    V3没有限定传输尺寸,V2最多只能设定为8 KB,可以使用-rsize and -wsize来设定。
    (3)返回完整的信息。
    V3增加和完善了返回错误和成功信息,对于服务器的设置和管理能带来很大好处。
    (4)增加了对TCP传输协议的支持。
    V2只提供了对UDP的支持,在一些高要求的网络环境中有很大限制;V3增加了对TCP的支持。UDP有着传输速度快且非连接传输的便捷特性,但是在传输 上没有TCP稳定。当网络不稳定或者黑客入侵时很容易使NFS的性能大幅度降低,甚至使网络瘫痪。所以对于不同情况,网络要有针对性地选择传输协议。 NFS的默认传输协议是UDP,然而RHEL 4.0内核提供了对通过TCP的NFS的支持。要通过TCP来使用NFS,在客户端系统上挂载NFS导出的文件系统时包括一个“-o tcp”选项。使用TCP的优点和缺点如下。
    被提高了的连接持久性,因此获得的NFS stale file handles消息就会较少。
    载量较大的网络的性能会有所提高,因为TCP确认每个分组,而UDP只在完成时才确认。
    TCP具有拥塞控制技术(UDP根本没有),在一个拥塞情况严重的网络上,UDP分组是被首先撤销的类型。使用UDP意味着,如果NFS正在写入数据(单 元为8 KB的块),所有这8 KB数据都需要被重新传输。由于TCP的可靠性,8 KB数据中只有一部分需要重新传输。
    错误检测。当TCP连接中断(由于服务器停止),客户端就会停止发送数据而开始重新连接。UDP是无连接的,使用它的客户端就会继续给网络发送数据直到服务器重新上线为止。
    TCP的费用在性能方面的提高并不显著。
    (5)异步写入特性。
    (6)改进了服务器的mount性能。
    (7)有更好的I/O写性能。
    (8)更强的网络运行效能,使得网络运行更为有效。
    (9)更强的灾难恢复功能。
    在Linux上,UDP是默认使用的协议。作为服务器别无选择。但作为客户端,可以使用TCP和其他使用TCP的UNIX NFS服务器互联。在局域网中使用UDP较好,因为局域网有比较稳定的网络保证。使用UDP可以带来更好的性能,Linux默认使用V2,但是也可以通过 mount option的nfsvers=n选择。NFS使用TCP/IP提供的协议和服务运行于OSI层次模型的应用层,如表7-1所示。
    表7-1  OSI层次模型上的NFS

    层    数

    名    称

    功    能

    1

    应用层

    NFS

    2
    表示层
    XDR

    3
    会话层
    RPC

    4
    传输层
    UDP,TCP

    5
    网络层
    IP

    6
    数据链路层

    7

    物理层

    Ethernet

    转自:http://bbs.51cto.com/thread-499969-1.html

    标签: linux 
    上一编文章 LINUX守护进程介绍 下一编文章 portmap的作用
    最近文章
    发表评论