nfs ,nis 中portmap服务的作用
因为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。
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所示。
NFS服务器配置
1、安装
NFS服务器需要安装portmap、nfs-utils两个软件包,可使用rpm -q查看是否已安装。
#rpm -q portmap
#rpm -q nfs-utils
rpm -qa|grep nfs
service nfs status
2、配置,编辑/etc/exports文件
#vi /etc/exports
/share *(sync,ro) 1.1.1.1(sync,rw,no_root_squash)
3、启动服务器
#service portmap restart
#service nfs restart
4、读取配置(可选),重启服务
#service nfs restart
读取配置文件内容
#exportfs -rv
检查服务器端的配置是否成功
1、showmount查看NFS服务器的链接信息
#showmount
#showmount 1.1.1.20
2、showmount -e查看NFS服务器的输出目录
#showmount -e
#showmount -e 1.1.1.20
3、showmount -d查看NFS服务器已被挂载的目录
#showmount -d
#showmount -d 1.1.1.20
4、showmount -a查看客户端的信息
#showmount -a
#showmount -a 1.1.1.20
操作配置文件
1、使用exportfs -rv命令来重新读取exports配置文件内容
2、使用exportfs -auv命令来停止当前主机中的所有输出目录
3、使用exportfs -av命令来启用当前主机中停止输出的目录
![](/qrcode.jpg)
客户端设置
1、临时挂载
#mount -t nfs 1.1.1.20:/share /mnt
2、永久挂载
#vi /etc/fstab
1.1.1.20:/share /mnt nfs defaults 0 0
如果需要此记录立即生效重启系统或使用mount命令来挂载
#reboot
#init 6
#shutdown -r now
#mount /mnt
注意:
1、共享目录的权限,nfs共享权限、目录权限
2、服务的状态
3、防火墙是否打开