有人知道统信的NFS服务器维护怎么部署吗?

NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端的NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就像是在使用本地文件一样。NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。V3相对V2的主要区别:1、文件尺寸V2最大只支持32BIT的文件大小(4G),而NFS V3新增加了支持64BIT文件大小的技术。2、文件传输尺寸V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。3、完整的信息返回V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。4、增加了对TCP传输协议的支持V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持5、异步写入特性6、改进了SERVER的mount性能7、有更好的I/O WRITES 性能。9、更强网络运行效能,使得网络运作更为有效。10、更强的灾难恢复功能。异步写入特性(v3新增加)介绍:NFS V3 能否使用异步写入,这是可选择的一种特性。NFS V3客户端发发送一个异步写入请求到服务器,在给客户端答复之前服务器并不是必须要将数据写入到存储器中(稳定的)。服务器能确定何时去写入数据或者将多个写入请求聚合到一起并加以处理,然后写入。客户端能保持一个数据的copy以防万一服务器不能完整的将数据写入。当客户端希望释放这个copy的时候,它会向服务器通过这个操作过程,以确保每个操作步骤的完整。异步写入能够使服务器去确定最好的同步数据的策略。使数据能尽可能的同步的提交何到达。与V2比较来看,这样的机制能更好的实现数据缓冲和更多的平行(平衡)。而NFS V2的SERVER在将数据写入存储器之前不能再相应任何的写入请求。V4相对V3的改进:1:改进了INTERNET上的存取和执行效能2:在协议中增强了安全方面的特性3:增强的跨平台特性在讲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 (守护进程)1、pc.nfsd:主要负责登陆权限检测等。2、rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理 ;3、NFS SERVER在REDHAT LINUX平台下一共需要两个套件:nfs-utils和PORTMAP4、nfs-utils:提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件5、portmap: NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。 服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:欲分享出去的目录 主机名称1或者IP1(权限参数1,权限参数2) 主机名称2或者IP2(权限参数3,权限参数4)上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。可以设定的权限参数主要有以下这些:参数说明rw可读写的权限;ro只读的权限;no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户anonuid将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。anongid同 anonuid ,但是?成 group ID 就是了!sync同时将数据写入到内存与硬盘中,保证不丢失数据async优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据insecure允许从这台机器过来的非授权访问。例如可以编辑/etc/exports为:/tmp     (rw,no_root_squash)/home/public  192.168.0.(rw)   *(ro)/home/test   192.168.0.100(rw)/home/linux  *.the9.com(rw,all_squash,anonuid=40,anongid=40)设定好后可以使用以下命令启动/重启NFS:/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start /restart
exportfs命令:如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :在 export 的?r候,将详细的信息输出到屏幕上。
具体例子:[root @test root]# exportfs -rv <==全部重新 export 一次!
exporting 192.168.0.100:/home/test
exporting 192.168.0.*:/home/public
exporting *.the9.com:/home/linux
exporting *:/home/public
exporting *:/tmp
reexporting 192.168.0.100:/home/test to kernel
exportfs -au <==全部都卸载了。
1、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法.showmout-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。-e :显示指定的NFS SERVER上export出来的目录。例如:showmount -e 192.168.0.30
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.0.100
2、mount nfs目录的方法:mount -t nfs hostname(orIP):/directory /mount/point
具体例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs
3、mount nfs的其它可选参数:HARD mount和SOFT MOUNT:HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。rsize和wsize:文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)fg:和bg正好相反,是默认的参数nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3mountport:设定mount的端口port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定timeo =n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)tcp:使用tcp作为nfs的传输协议namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255acregmin=n:设定最小的在文件更新之前cache时间,默认是3acregmax=n:设定最大的在文件更新之前cache时间,默认是60acdirmin=n:设定最小的在目录更新之前cache时间,默认是30acdirmax=n:设定最大的在目录更新之前cache时间,默认是60actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutesnoac:关闭cache机制。同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。4、/etc/fstab的设定方法/etc/fstab的格式如下:fs_spec   fs_file  fs_type   fs_options  fs_dump fs_pass fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFSfs_file:本地的挂载点fs_type:对于NFS来说这个字段只要设置成nfs就可以了fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0 。5、与NFS有关的一些命令介绍nfsstat:查看NFS的运行状态,对于调整NFS的运行有很大帮助rpcinfo:查看rpc执行信息,可以用于检测rpc运行情况的工具。四、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 /DIRUDP 有着传输速度快,非连接传输的便捷特性,但是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版本的选择V3作为默认的选择(RED HAT 8默认使用V2,SOLARIS 8以上默认使用V3),可以通过vers= mount option来进行选择。LINUX通过mount option的nfsvers=n进行选择。五、NFS故障解决1、NFSD没有启动起来首先要确认 NFS 输出列表存在,否则 nfsd 不会启动。可用 exportfs 命令来检查,如果 exportfs 命令没有结果返回或返回不正确,则需要检查 /etc/exports 文件。2、mountd 进程没有启动mountd 进程是一个远程过程调用 (RPC) ,其作用是对客户端要求安装(mount)文件系统的申请作出响应。mountd进程通过查找 /etc/xtab 文件来获知哪些文件系统可以被远程客户端使用。另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表。查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:100005 1 udp 1039 mountd100005 1 tcp 1113 mountd100005 2 udp 1039 mountd100005 2 tcp 1113 mountd100005 3 udp 1039 mountd100005 3 tcp 1113 mountd如果没有起来的话可以检查是否安装了PORTMAP组件。rpm -qa|grep portmap3、fs type nfs no supported by kernelkernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。4、can’t contact portmapper: RPC: Remote system error - Connection refused出现这个错误信息是由于SEVER端的PORTMAP没有启动。5、mount clntudp_create: RPC: Program not registeredNFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来。6、mount: localhost:/home/test failed, reason given by server: Permission denied这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。7、被防火墙阻挡这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。六、NFS安全NFS的不安全性主要体现于以下4个方面:1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制3、较早的NFS可以使未授权用户获得有效的文件句柄4、在RPC远程调用中,一个SUID的程序就具有超级用户权限.加强NFS安全的方法:1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPTiptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPTiptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPTiptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的/etc/hosts.allowportmap: 192.168.0.0/255.255.255.0 : allowportmap: 140.116.44.125 : allow/etc/hosts.denyportmap: ALL : deny5、改变默认的NFS 端口NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。6、使用Kerberos V5作为登陆验证系统转载于:https://www.cnblogs.com/licheng/archive/2008/02/17/1071274.htmlNFS服务所需软件及主要配置文件:安装NFS服务,需要安装两个软件,分别是:RPC主程序:rpcbindNFS 其实可以被视为一个 RPC 服务,因为启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)。NFS主程序:nfs-utils就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。主要配置文件:/etc/exports这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。NFS 文件系统维护指令:/usr/sbin/exportfs这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。分享资源的登录档:/var/lib/nfs/*tab在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此NFS 服务器的相关客户端数据。客户端查询服务器分享资源的指令:/usr/sbin/showmount这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。服务端安装NFS服务步骤客户端同样安装方式,只是不要填写/etc/exports,仅编辑/etc/fstab即可 :第一步:安装NFS和rpc。[root@localhost ~]# yum install -y
nfs-utils
#安装nfs服务
[root@localhost ~]# yum install -y rpcbind
#安装rpc服务
第二步:启动服务和设置开启启动:注意:先启动rpc服务,再启动nfs服务。[root@localhost ~]# systemctl start rpcbind
或者 sudo service start rpcbind
#先启动rpc服务
[root@localhost ~]# systemctl enable rpcbind
#设置开机启动
[root@localhost ~]# systemctl start nfs-server nfs-secure-server 或者/etc/rc.d/init.d/nfs start/restart
#启动nfs服务和nfs安全传输服务
[root@localhost ~]# systemctl enable nfs-server nfs-secure-server
[root@localhost /]# firewall-cmd --permanent --add-service=nfs
success
#配置防火墙放行nfs服务
[root@localhost /]# firewall-cmd
--reload
success
第三步:配置共享文件目录,编辑配置文件:首先创建共享目录,然后在/etc/exports配置文件中编辑配置即可。[root@localhost /]# mkdir /public
#创建public共享目录
[root@localhost /]# vi /etc/exports
/public 192.168.245.0/24(ro)
/protected 192.168.245.0/24(rw)
[root@localhost /]# systemctl reload nfs
#重新加载NFS服务,使配置文件生效
NFS客户端挂载配置:**第一步:**使用showmount命令查看nfs服务器共享信息。输出格式为“共享的目录名称 允许使用客户端地址”。[root@localhost ~]# showmount -e 192.168.245.128
Export list for 192.168.245.128:
/protected 192.168.245.0/24
/public
192.168.245.0/24
showmount命令的用法;参数 作用-e 显示NFS服务器的共享列表-a 显示本机挂载的文件资源的情况NFS资源的情况-v 显示版本号**第二步,**在客户端创建目录,并挂载共享目录。[root@localhost ~]# mkdir /mnt/public
[root@localhost ~]# mkdir /mnt/data
[root@localhost ~]# vim /etc/fstab
#在该文件中挂载,使系统每次启动时都能自动挂载
192.168.245.128:/public
/mnt/public
nfs
defaults 0 0
192.168.245.128:/protected /mnt/data
nfs
defaults
0 1
[root@localhost ~]# mount -a
#是文件/etc/fstab生效
第三步:检查:[root@mail ~]# df -Th
Filesystem
Type
Size
Used Avail Use% Mounted on
/dev/mapper/rhel-root
xfs
17G
3.1G
14G
18% /
devtmpfs
devtmpfs
1.4G
0
1.4G
0% /dev
tmpfs
tmpfs
1.4G
140K
1.4G
1% /dev/shm
tmpfs
tmpfs
1.4G
9.1M
1.4G
1% /run
tmpfs
tmpfs
1.4G
0
1.4G
0% /sys/fs/cgroup
/dev/sda1
xfs
1014M
173M
842M
18% /boot
tmpfs
tmpfs
280M
32K
280M
1% /run/user/0
/dev/sr0
iso9660
3.6G
3.6G
0 100% /mnt/cdrom
192.168.245.128:/public
nfs4
17G
3.7G
14G
22% /mnt/public
192.168.245.128:/protected nfs4
17G
3.7G
14G
22% /mnt/data
1、clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)解决:1、首先重启rpcbind和nfs2、关闭防火墙及iptable简单粗暴地关闭防火墙systemctl stop firewalld
如果开启了iptables的话,也是一样的,iptables的策略里也默认不会为nfs服务开启需要的端口
systemctl stop iptables
2.在防火墙上开启端口在设置了防火墙的环境中使用NFS,需要在防火墙上打开如下端口:1. portmap 端口 111 udp/tcp;
2. nfsd 端口 2049 udp/tcp;
3. mountd 端口 "xxx" udp/tcp
系统 RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768–65535)来进行通讯,我们可以通过编辑/etc/services 文件为 mountd指定一个固定端口:在末尾添加
mountd 1011/udp
mountd 1011/tcp
wq退出保存该文件
# stopsrc -s rpc.mountd
# startsrc -s rpc.mountd
# exportfs -a
# rpcinfo -p Hostname
现在我们会发现 mountd已经和端口 1011绑定了。另外,nfs中需要通讯的服务还有 rpc.lockd和 rpc.statd,其中对lockd我们可以用类似的方法来指定固定端口,# vim /etc/services
添加
lockd 35000/ucp
lockd 35000/tdp
# stopsrc -s rpc.lockd
# startsrc -s rpc.lockd
# exportfs -a
nfs客户端mount文件系统但 rpc.statd无法通过该方法来指定端口,它只能使用随机端口,如有必要,在防火墙上要根据下面命令的显示来开放随机端口:tcp_ephemeral_high = 65535tcpp_ephemeral_low = 32768udp_ephemeral_high = 65535udp_ephemeral_low = 32768当然也可以不开放 rpc.statd需要的随机端口,带来的影响就是如果 nfs连接中断(比如server或client宕掉了),系统将无法通过statd来恢复连接中断前的状态,而必须重新 mount该nfs文件系统。有关statd的详细功能说明,请参阅 http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.cmds/doc/aixcmds5/statd.htm解决方法二:关闭被访问的NFS服务器上的防火墙和selinux(当然只适合个人测试环境),执行systemctl stop firewalld;
iptables -F ;
setenforce 0
在客户端重新查看showmount -e 192.168.122.10;在客户端showmount -e 192.168.122.10遇到以下错误提示,“clnt_create: RPC: Program not registered” ,解决方法:服务端[root@server /]# rpc.mountd
即可
客户端查看[root@node1 ~]# showmount -e 192.168.122.10
Export list for server.example.com:
/tmp
*(rw,sync,no_root_squash)
附加:批量查看环境:cat /etc/redhat-release //系统版本
uname -r //内核版本
uname -m //操作系统位数
软件列表:
nfs-utils:NFS主程序
rpcbind:RPC主程序
安装方法:
yum install -y nfs-utils rpcbind
主客户端均要安装,按理来说客户端无需装nfs-utils,但是客户端会用到showmount命令.
启动:
/etc/init.d/rpcbind start//启动rpcbind
/etc/init.d/rpcbind status//查看rpcbind状态
lsof -i :111//查看端口
netstat -lntup|grep rpcbind//查看端口
rpcinfo -p localhost//查看rpc注册端口信息
/etc/init.d/nfs start//启动nfs并向rpc注册
/etc/init.d/rpcbind status//查看rpcbind状态
netstat -lnupt
grep 2049//查看nfs端口信息
将/etc/init.d/rpcbind start和/etc/init.d/nfs start写入/etc/rc.loacl做一个自启动
NFS服务进程说明
ps -ef
egrep "rpc|nfs"
NFS配置文件/etc/exports格式:共享目录 + 主机名/地址/通配符 + (参数)共享参数exportfs -rv
/etc/init.d/nfs reload //两个平缓加载重启NFS的命令
showmount -e IPADDRESS //查看某主机的共享目录
mount -t nfs localhost:/data //挂载共享目录
mount
cat /proc/mounts //查看挂载信息
cat /var/lib/nfs/etab //显示nfs共享参数
df -h //查看挂载资源
默认情况下,客户端访问NFS文件系统时,用户被压缩成默认uid65534 nfsnobody的用户.
所以,需要将共享目录的属主数组改为nfsnobody.
常见故障排查1.确认服务是否启动
2.本地showmount一下,有可能防火墙挡住了
3.ping链路
4.服务启动顺序 rpcbind-->nfs
5.共享目录是否创建
6.如果文件无法创建,查看下nfs共享权限以及服务端本地权限.
7.注意.服务端挂掉,客户端挂载会hang住.
客户端挂载参数fg/bg(默认fg)
挂载时选择前台/后台(挂载请求会一直持续,后台不会影响前台操作)
soft/hard(默认hard)
soft挂载不上不再尝试挂载,hard会持续尝试挂载
intr
hard方式在配合intr时,超时可以将挂载程序中断
rsize/wsize
读写块大小,用于提升性能!
proto=tcp/udp
协议,可靠/不可靠
async
异步操作写入磁盘
sync
同步写入磁盘
ro
只读方式挂载
rw
读写方式挂载
auto
能否通过mount -a 自动挂载
default(rw,suid,dev,exec,auto,nouser,async)
默认挂载参数
exec/noexec
文件系统中的二进制程序能否执行(安全优化)
noatime
不更新inode,高并发最好选用这个参数
nodiratime
不更新dirinode,高并发使用
suid/nosuid
支持/不支持suid
remount
用于修复文件系统因fstab修改错误无法启动故障,具体案例见下文
救援模式下,mount -o rw,remount / ,然后修改fstab
建议:默认或以下挂载方式
mount -t nfs -o bg,hard,intr,rsize=131072,wsize=131072 IP_ADDR:/data
NFS优化安全挂载:mount -t nfs -o nosuid,noexec,nodev,rw IP_ADDR:/data /mnt性能挂载:mount -t nfs -o noatime,nodiratime IP_ADDR:/data /mnt安全+性能:mount -t nfs -o nosuid,nodev,noexec,rw,noatime,nodiratime IP_ADDR:/data /mnt针对NFS对内核进行优化//调大套接字接受/发送缓冲区大小,来自官方cat >>/etc/sysctl.conf<<EOF
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.core.rmem_max=16777216
net.core.wmem_max=16777216
NFS硬件选择SAS/SSD磁盘多块,做raid0/10,网卡至少千兆,多块bond.强制卸载卸载不掉的文件系统umount -lf部分内容参考链接:https://www.jianshu.com/p/1bdcf6e3fa1f
NFS服务基本情况介绍
软件包:
nfs-utils
Kernel支持:
nfs.ko
端口:
2049(nfsd), 其它端口由portmap(111)分配
配置文件:
/etc/exports,/etc/exports.d/*.exports
差别:
CentOS7不支持同一目录同时用nfs和samba共享,因为使用锁机制不同,CentOS6开portmaprpcbind代替,CentOS7服务名是nfs-server,CentOS6服务名是nfs
相关软件包:
rpcbind(必须), tcp_wrappers
NFS服务主要进程:
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
rpc.lockd 非必要,管理文件锁,避免同时写出错
rpc.statd 非必要,检查文件一致性,可修复文件
日志:
/var/lib/nfs/
NFS配置文件
配置文件格式
/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...
主机格式:
单个主机: ipv4, ipv6, FQDN
IP networks:两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主机名通配,例如*.example.com, IP不可以
netgroups: NIS域的主机组, @group_name
anonymous:表示使用*通配所有客户端
选项:
默认选项: (ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
async 异步,数据变化后不立即写磁盘,性能高
sync(1.0.0后为默认)同步,数据在请求时立即写入共享
no_all_squash (默认)保留共享文件的UID和GID
all_squash 所有远程用户(包括root)都变成nfsnobody
root_squash (默认)远程root映射为nfsnobody,UID为65534,早期版本是4294967294 (nfsnobody)
no_root_squash 远程root映射成root用户
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nfsnobody,可配合all_squash使用
在/etc/exports文件中定义示例/myshare server.example.com
/myshare *.example.com
/myshare server?.example.com
/myshare server[0-20].example.com
/myshare 172.25.11.10
/myshare 172.25.0.0/16
/myshare 2000:472:18:b51:c32:a21
/myshare 2000:472:18:b51::/64
/myshare *.example.com 172.25.0.0/16
/myshare desktop.example.com(ro)
/myshare desktop.example.com(ro) server[0-20].example.com(rw)
/myshare diskless.example.com(rw,no_root_squash)NFS工具(注意防火墙)
rpcinfo
rpcinfo -p hostname
rpcinfo –s hostname 查看RPC注册程序
exportfs
–v 查看本机所有NFS共享
–r 重读配置文件,并共享目录
–a 输出本机所有共享
–au 停止本机所有共享
showmount -e hostIP 显示NFS主机共享目录客户端NFS挂载基于安全考虑,建议使用nosuid,nodev,noexec挂载选项
NFS相关的挂载选项:
fg(默认)前台挂载, bg后台挂载
hard(默认)持续请求, soft 非持续请求
intr 和hard配合,请求可中断
rsize和wsize 一次读和写数据最大字节数, rsize=32768
_netdev 无网络不挂载
示例:mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/开机挂载:/etc/fstab172.16.0.1:/public /mnt/nfs nfs defaults 0 0自动挂载可使用autofs按需要挂载NFS共享,在空闲时自动卸载 由autofs包提供 系统管理器指定由/etc/auto.master自动挂载器守护进程控制的挂载点 自动挂载监视器访问这些目录并按要求挂载文件系统 文件系统在失活的指定间隔5分钟后会自动卸载 为所有导出到网络中的NFS启用特殊匹配 -host 至“browse” 更多选项查看autofs(5)相对路径法[root@centos7 ~]# vi /etc/auto.master
/misc
/etc/auto.misc
[root@centos7 ~]# vi /etc/auto.misc
cd
-fstype=iso9660,ro,nosuid,nodev
:/dev/cdrom
*
-fstype=nfs
192.168.6.6:/&
#想挂载本地和远程一样的目录可以使用这个方法,但只适用于相对路径法绝对路径不会影响本地目录结构[root@centos7 ~]# vi /etc/auto.master
/-
/etc/auto.direct
[root@centos7 ~]# vi /etc/auto.direct
/app/mydata
-fstype=nfs
192.168.6.6:/data挂载伪根配置NFS服务器vi /etc/fstab
/data/read /exports/read none bind 0 0
/data2/write /exports/write none bind 0 0
vi /etc/exports
/exports *(fsid=o,rw,crossmnt)
/exports/read 192.168.0.0/24(ro) #针对192.168这个网段对read目录设置只读权限
/exports/write 192.168.0.0/24(rw) 配置NFS客户端mount 192.168.6.6:/ /mnt/nfs
vi /etc/fstab
192.168.6.6:/ /mnt/ nfs4 ro 0 0

我要回帖

更多关于 服务器 的文章