在对NFS服务进行建设的时候,我们知道,打造一个NFS服务器需要有一个客户端和一个服务端,然后两者才能够相连进行通信使用。这里我们就来了解一下客户端以及服务器端的一些设置,然后再进行一下优化的讲解。
CLIENT 和SERVER的具体操作和设置
在讲NFS SERVER的运作之前先来看一些与NFS SERVER有关的东西:
RPC(Remote Procedure Call)
NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议.而这些传输协议勇士用到这个RPC功能的.可以说NFS本身就是使用RPC的一个程序.或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT.这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应.可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输.
NFS服务器需要启动的DAEMONS
pc.nfsd:主要复杂登陆权限检测等.
rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理
NFS SERVER在REDHAT LINUX平台下一共需要两个套件:nfs-utils和PORTMAP
nfs-utils:提供rpc.nfsd 及 rpc.mountd这两个 NFS DAEMONS的套件
portmap:NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个 RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的.通俗的说PortMap就是用来做 PORT的mapping的.
NFS服务器调优
调优的步骤:
1、测量当前网络、服务器和每个客户端的执行效率.
2、分析收集来的数据并画出图表.查找出特殊情况,例如很高的磁盘和CPU占用、已经高的磁盘使用时间
3、调整服务器
4、重复第一到第三步直到达到你渴望的性能
与 NFS性能有关的问题有很多,通常可以要考虑的有以下这些选择:
WSIZE,RSIZE参数来优化NFS的执行效能
WSIZE、 RSIZE对于NFS的效能有很大的影响.
wsize和rsize设定了SERVER和CLIENT之间往来数据块的大小,这两个参数的合理设定与很多方面有关,不仅是软件方面也有硬件方面的因素会影响这两个参数的设定(例如LINUX KERNEL、网卡,交换机等等).
下面这个命令可以测试NFS的执行效能,读和写的效能可以分别测试,分别找到合适的参数.对于要测试分散的大量的数据的读写可以通过编写脚本来进行测试.在每次测试的时候最好能重复的执行一次MOUNT和unmount.
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于测试的WSIZE,RSIZE最好是1024的倍数,对于NFS V2来说8192是RSIZE和WSIZE的最大数值,如果使用的是 NFS V3则可以尝试的最大数值是32768.
如果设置的值比较大的时候,应该最好在CLIENT上进入mount上的目录中,进行一些常规操作(LS,VI等等),看看有没有错误信息出现.有可能出现的典型问题有LS的时候文件不能完整的列出或者是出现错误信息,不同的操作系统有不同的最佳数值,所以对于不同的操作系统都要进行测试.
设定最佳的NFSD的COPY数目.
linux中的NFSD的COPY数目是在/etc/rc.d/init.d/nfs这个启动文件中设置的,默认是8个NFSD,对于这个参数的设置一般是要根据可能的CLIENT数目来进行设定的,和WSIZE、RSIZE一样也是要通过测试来找到最近的数值.
UDP and TCP
可以手动进行设置,也可以自动进行选择.
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP有着传输速度快,非连接传输的便捷特性,但是UDP在传输上没有TCP来的稳定,当网络不稳定或者黑客入侵的时候很容易使NFS服务器的 Performance 大幅降低甚至使网络瘫痪.所以对于不同情况的网络要有针对的选择传输协议.nfs over tcp比较稳定,nfs over udp速度较快.在机器较少网络状况较好的情况下使用UDP协议能带来较好的性能,当机器较多,网络情况复杂时推荐使用TCP协议(V2只支持UDP协议).在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能,在广域网中推荐使用TCP协议,TCP协议能让NFS在复杂的网络环境中保持最好的传输稳定性.可以参考这篇文章:http://www.hp.com.tw/ssn/unix/0212/unix021204.asp ;