您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 第7章NFS服务器的安装和故障排除
第7章NFS服务器的安装和故障排除摘要:《RedHatEnterpriseLinux5.0服务器构建与故障排除》第7章NFS服务器的安装和故障排除这一章介绍了如何安装配置NFS服务,如何使用NFS客户端以及NFS服务的安全问题,以及NFS服务器常见故障排除,本小节为大家介绍的是其他挂载NFS文件系统的方法。标签:RedHatEnterpriseNFSLinux服务器故障排除7.1.1NFS简介第7章NFS服务器的安装和故障排除本章要点NFS(NetworkFileSystem,网络文件系统)服务器的工作原理。安装配置NFS服务器。NFS的图形化配置。NFS的客户端配置。NFS服务器的故障排除。7.1NFS服务器的工作原理7.1.1NFS简介NFS是分布式计算机系统的一个组成部分,可实现在异构网络上共享和装配远程文件系统。NFS由SUN公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813)。其最大功能是可以通过网络让不同操作系统的计算机可以共享数据,所以也可以将其看做是一台文件服务器,如图7-1所示。NFS提供了除Samba之外,Windows与Linux及UNIX与Linux之间通信的方法。(点击查看大图)图7-1NFS可作为文件服务器客户端PC可以挂载NFS服务器所提供的目录并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。NFS有属于自己的协议与使用的端口号,但是在传送资料或者其他相关信息时候,NFS服务器使用一个称为“远程过程调用”(RemoteProcedureCall,RPC)的协议来协助NFS服务器本身的运行。7.1.2为何使用NFS7.1.2为何使用NFSNFS的目标是使计算机共享资源,在其发展过程中(即20世纪80年代),计算机工业飞速发展,廉价CPU及客户端/服务器技术促进了分布式计算环境的发展。然而当处理器价格下降时,大容量的存储系统相对而言价格仍居高不下。因此必须采用某种机制在充分发挥单个处理器性能的同时使计算机可共享存储资源和数据,于是NFS应运而生。7.1.3NFS协议7.1.3NFS协议使用NFS,客户端可以透明地访问服务器中的文件系统,这不同于提供文件传输的FTP协议。FTP会产生文件一个完整的副本;NFS只访问一个进程引用文件部分,并且一个目的就是使得这种访问透明。这就意味着任何能够访问一个本地文件的客户端程序不需要做任何修改,就应该能够访问一个NFS文件。NFS是一个使用SunRPC构造的客户端/服务器应用程序,其客户端通过向一台NFS服务器发送RPC请求来访问其中的文件。尽管这一工作可以使用一般的用户进程来实现,即NFS客户端可以是一个用户进程,对服务器进行显式调用,而服务器也可以是一个用户进程。因为两个理由,NFS一般不这样实现。首先访问一个NFS文件必须对客户端透明,因此NFS的客户端调用是由客户端操作系统代表用户进程来完成的;其次,出于效率的考虑,NFS服务器在服务器操作系统中实现。如果NFS服务器是一个用户进程,每个客户端请求和服务器应答(包括读和写的数据)将不得不在内核和用户进程之间进行切换,这个代价太大。第3版的NFS协议在1993年发布,图7-2所示为一个NFS客户端和一台NFS服务器的典型结构。(点击查看大图)图7-2NFS客户端和NFS服务器的典型结构(1)访问一个本地文件还是一个NFS文件对于客户端来说是透明的,当文件被打开时,由内核决定这一点。文件被打开之后,内核将本地文件的所有引用传递给名为“本地文件访问”的框中,而将一个NFS文件的所有引用传递给名为“NFS客户端”的框中。(2)NFS客户端通过其TCP/IP模块向NFS服务器发送RPC请求,NFS主要使用UDP,最新的实现也可以使用TCP。(3)NFS服务器在端口2049接收作为UDP数据包的客户端请求,尽管NFS可以被实现为使用端口映射器,允许服务器使用一个临时端口,但是大多数实现都是直接指定UDP端口2049。(4)当NFS服务器收到一个客户端请求时,它将这个请求传递给本地文件访问例程,然后访问服务器主机上的一个本地的磁盘文件。(5)NFS服务器需要花一定的时间来处理一个客户端的请求,访问本地文件系统一般也需要一部分时间。在这段时间间隔内,服务器不应该阻止其他客户端请求。为了实现这一功能,大多数的NFS服务器都是多线程的——服务器的内核中实际上有多个NFS服务器在NFS本身的加锁管理程序中运行,具体实现依赖于不同的操作系统。既然大多数UNIX内核不是多线程的,一个共同的技术就是启动一个用户进程(常被称为“nfsd”)的多个实例。这个实例执行一个系统调用,使其作为一个内核进程保留在操作系统的内核中。(6)在客户端主机上,NFS客户端需要花一定的时间来处理一个用户进程的请求。NFS客户端向服务器主机发出一个RPC调用,然后等待服务器的应答。为了给使用NFS的客户端主机上的用户进程提供更多的并发性,在客户端内核中一般运行着多个NFS客户端,同样具体实现也依赖于操作系统。7.1.4RPC7.1.4RPC因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动。每启动一个功能就会启用一些端口来传输数据,因此NFS的功能所对应的端口才没有固定,而是采用随机取用一些未被使用的小于724的端口来作为传输之用。但如此一来又造成客户端要连接服务器时的困扰,因为客户端要知道服务器端的相关端口才能够联机,此时我们需要远程过程调用(RPC)的服务。RPC最主要的功能就是指定每个NFS功能所对应的端口号,并且回报给客户端,让客户端可以连接到正确的端口上。当服务器在启动NFS时会随机选用数个端口,并主动地向RPC注册。因此RPC可以知道每个端口对应的NFS功能。然后RPC固定使用端口111来监听客户端的请求并回报客户端正确的端口,所以可以让NFS的启动更为容易。注意,启动NFS之前,要先启动RPC;否则NFS会无法向RPC注册。另外,重新启动RPC时原本注册的数据会不见,因此RPC重新启动后它管理的所有程序都需要重新启动以重新向RPC注册。当客户端有NFS文件要存取请求时,它如何向服务器端要求数据?(1)客户端会向服务器端的RPC(port111)发出NFS文件存取功能的询问请求。(2)服务器端找到对应的已注册的NFSdaemon端口后会回报给客户端。(3)客户端了解正确的端口后,就可以直接与NFS守护进程来联机。由于NFS的各项功能都必须要向RPC注册,因此RPC才能了解NFS服务的各项功能的portnumber、PID和NFS在主机所监听的IP等,而客户端才能够通过RPC的询问找到正确对应的端口。即NFS必须要有RPC存在时才能成功地提供服务,因此我们称NFS为RPCServer的一种。事实上,有很多这样的服务器都向RPC注册。例如,NIS(NetworkInformationService)也是RPCServer的一种。所以如图7-3所示,不论是客户端还是服务器端,要使用NFS都需要启动RPC。(点击查看大图)图7-3NFS与RPC服务及操作系统的相关性NFS协议从诞生到现在为止,已经有多个版本,如NFSV2(rfc794)及NFSV3(rfc1813)(最新的版本是V4(rfc307))。最早,SUN公司曾将NFSV2设计为只使用UDP,主要原因是当时机器的内存、网络速度和CPU的影响,不得不选择对机器负担较轻的方式。而到了NFSV3,SUN公司选择了TCP作为默认的传输方式。V3相对V2的主要区别如下。(1)文件尺寸。V2最大只支持32位的文件大小(4GB),而V3新增加了支持64位文件大小的技术。(2)文件传输尺寸。V3没有限定传输尺寸,V2最多只能设定为8KB,可以使用-rsizeand-wsize来设定。(3)返回完整的信息。V3增加和完善了返回错误和成功信息,对于服务器的设置和管理能带来很大好处。(4)增加了对TCP传输协议的支持。V2只提供了对UDP的支持,在一些高要求的网络环境中有很大限制;V3增加了对TCP的支持。UDP有着传输速度快且非连接传输的便捷特性,但是在传输上没有TCP稳定。当网络不稳定或者黑客入侵时很容易使NFS的性能大幅度降低,甚至使网络瘫痪。所以对于不同情况,网络要有针对性地选择传输协议。NFS的默认传输协议是UDP,然而RHEL4.0内核提供了对通过TCP的NFS的支持。要通过TCP来使用NFS,在客户端系统上挂载NFS导出的文件系统时包括一个“-otcp”选项。使用TCP的优点和缺点如下。被提高了的连接持久性,因此获得的NFSstalefilehandles消息就会较少。载量较大的网络的性能会有所提高,因为TCP确认每个分组,而UDP只在完成时才确认。TCP具有拥塞控制技术(UDP根本没有),在一个拥塞情况严重的网络上,UDP分组是被首先撤销的类型。使用UDP意味着,如果NFS正在写入数据(单元为8KB的块),所有这8KB数据都需要被重新传输。由于TCP的可靠性,8KB数据中只有一部分需要重新传输。错误检测。当TCP连接中断(由于服务器停止),客户端就会停止发送数据而开始重新连接。UDP是无连接的,使用它的客户端就会继续给网络发送数据直到服务器重新上线为止。TCP的费用在性能方面的提高并不显著。(5)异步写入特性。(6)改进了服务器的mount性能。(7)有更好的I/O写性能。(8)更强的网络运行效能,使得网络运行更为有效。(9)更强的灾难恢复功能。在Linux上,UDP是默认使用的协议。作为服务器别无选择。但作为客户端,可以使用TCP和其他使用TCP的UNIXNFS服务器互联。在局域网中使用UDP较好,因为局域网有比较稳定的网络保证。使用UDP可以带来更好的性能,Linux默认使用V2,但是也可以通过mountoption的nfsvers=n选择。NFS使用TCP/IP提供的协议和服务运行于OSI层次模型的应用层,如表7-1所示。表7-1OSI层次模型上的NFS层数名称功能1应用层NFS2表示层XDR3会话层RPC4传输层UDP,TCP5网络层IP6数据链路层7物理层Ethernet更多的NFS相关协议信息可以参考如下网页。(1)。(2)。7.2.1了解NFS网络文件的系统结构7.2安装配置NFS服务器如果在RedHatEnterpriseLinux5安装时已经默认安装了NFS组件,接下来的工作主要是配置相关文件使服务器提供NFS服务,步骤如下。(1)设定某台计算机为NFS服务器,并在后台启动相关的守护进程(在“服务配置”中启动)。一般来说,如果NFS服务器要提供服务,必须启动inet、portmap、nfs和mount这4个守护进程并保持在后台运行。(2)规划服务器分区,从安全等方面定义哪些分区作为要共享的文件系统。(3)在客户端列表中定义每一台客户机的参数。(4)修改/etc/exports。(5)重新启动NFS服务器,启动方法可采用命令行的方式,即/etc/rc.d/init.d/nfsrestart。服务器端文件系统的共享设置有3种方法,一是直接修改/etc/exports文件;二是用exports命令来增加和删除目录;三是图形化的配置方法。7.2.1了解NFS网络文件的系统结构NFS网络文件的系统结构包括如下目录结构:1./etc/exports这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在。可能要使用vi主动建立起这个文件,接下来的设定也仅仅是这个文件。2./usr/sbin/exportfs这是维护NFS共享资源的命令,我们可以用其重新分享/etc/exports变更的目录资源,并将NFSServer分享的目录卸载或重新分享等。这个命令是NFS系统中相当重要的一个,至于命令的用法在后面
本文标题:第7章NFS服务器的安装和故障排除
链接地址:https://www.777doc.com/doc-2198201 .html