NFS概念描述:
NFS的使用很像windows的网络共享、安全、网络驱动器映射(相当于linux里的samba服务)
NFS的企业应用场景:
NFS网络文件系统在企业工作场景中,一般用来存储共享视频、图片、附件等静态资源文件(一般由网站用户上传的文件都放到NFS共享里,例如:图片、附件、头像,注意网站程序不要放NFS共享里),是当前互联网系统架构中最常用的数据存储服务之一,特别是中小网站公司应用频率很高,大公司或门户除了使用NFS外,还可能会使用MFS、GFS
NFSRPC最主要的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,让客户端可以连接到正确的端口上去,从而实现数据传输。
房屋中介:我们找房子就相当于NFS客户端,中介介绍房子就相当于RPC服务,房子就相当于NFS服务端
那么RPC有事如何知道每个NFS的端口呢?
原因是,当NFS服务端启动服务时会随机抽取数个端口,并主动向RPC服务注册

230350158.png

Centos5.8下为portmap服务,Centos6.4下为rpcbind服务

生产环境常见的配置案例:
配置例一:/data/bbs10.0.0.0/24(rw,sync)注意不能有空格

案例:实现将nfsserver上的/data/bbs共享给10.0.0.0/24整个网段的主机可读写。

服务器端配置

1、检查系统信息,按照nfs、rpc服务

[root@C64_x86_64 ~]# cat /etc/redhat-release
CentOS release 6.4 (Final)
[root@C64_x86_64 ~]# uname -a
Linux C64_x86_64 2.6.32-8.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@eric ~]# rpm -aq nfs-utils portmap rpcbind
nfs-utils-1.0.9-66.el5
portmap-4.0-65.2.2.1

2、开启rpc服务端

[root@eric~]#/etc/init.d/portmapstart
Startingportmap:[OK]
[root@eric~]#/etc/init.d/portmapstatus
portmap(pid6322)isrunning...
[root@C58_x86_64~]#rpcinfo-plocalhost  //检查rpc对应端口
programversprotoport
1000002tcp111portmapper

3、开启nfs服务端

[root@eric~]#/etc/init.d/nfs  status
rpc.mountdisstopped
nfsdisstopped
rpc.rquotadisstopped
[root@eric~]#/etc/init.d/nfs   start
StartingNFSservices:[OK]
StartingNFSquotas:[OK]
StartingNFSdaemon:[OK]
StartingNFSmountd:[OK]
StoppingRPCidmapd:[OK]
StartingRPCidmapd:[OK]
[root@C58_x86_64~]#rpcinfo-plocalhost
programversprotoport
1000002tcp111portmapper
1000002udp111portmapper
1000111udp1017rquotad
1000112udp1017rquotad
1000111tcp1020rquotad
1000112tcp1020rquotad
1000032udp2049nfs
1000033udp2049nfs
1000034udp2049nfs
1000211udp55701nlockmgr
1000213udp55701nlockmgr
1000214udp55701nlockmgr
1000032tcp2049nfs
1000033tcp2049nfs
1000034tcp2049nfs
1000211tcp46327nlockmgr
1000213tcp46327nlockmgr
1000214tcp46327nlockmgr
1000051udp608mountd
1000051tcp611mountd
1000052udp608mountd
1000052tcp611mountd
1000053udp608mountd
1000053tcp611mountd
[root@C58_x86_64~]#


4、查看rpc、nfs进程,设置开机自动启动

[root@eric~]#ps-ef|grep-E"rpc|nfs"
root265180Aug24?00:00:00[rpciod/0]
rpcuser265710Aug24?00:00:00rpc.statd
rpc63221006:24?00:00:00portmap
root63921006:26?00:00:00rpc.rquotad
root64098006:26?00:00:00[nfsd4]
root64111006:26?00:00:00[nfsd]
root64121006:26?00:00:00[nfsd]
root64131006:26?00:00:00[nfsd]
root64141006:26?00:00:00[nfsd]
root64151006:26?00:00:00[nfsd]
root64161006:26?00:00:00[nfsd]
root64171006:26?00:00:00[nfsd]
root64181006:26?00:00:00[nfsd]
root64211006:26?00:00:00rpc.mountd
root64741006:26?00:00:00rpc.idmapd
root64965370006:33pts/000:00:00grep-Erpc|nfs
[root@C58_x86_64~]#chkconfig  nfs  on
[root@C58_x86_64~]#chkconfig  portmap  on
[root@C58_x86_64~]#chkconfig--list  nfs
nfs0:off1:off2:on3:on4:on5:on6:off
[root@C58_x86_64~]#chkconfig--list  portmap
portmap0:off1:off2:on3:on4:on5:on6:off

5、创建共享的目录,并且将该目录设置为共享,注意书写格式,IP地址和权限直接没有空格

[root@eric~]#mkdir-p/data/bbs
[root@eric~]#tail-2/etc/exports
#shared/date/bbsbyoldboyfortechat201309141756
/data/bbs10.0.0.0/24(rw,sync)

6、平滑重启nfs服务

[root@eric~]#/etc/init.d/nfs  reload

7、检查nfs配置,查看本机,表示服务端配置成功

[root@eric~]#/usr/sbin/showmount-elocalhost
Exportlistforlocalhost:
/data/bbs10.0.0.0/24

客户端配置

客户端系统为centos5.9开启rpcbind服务即可

1、开启rpcbind服务,设置开机自启动

[root@eric6 home]# /etc/init.d/rpcbind status
rpcbind 已停
You have new mail in /var/spool/mail/root
[root@eric6 home]# /etc/init.d/rpcbind start
正在启动 rpcbind:                                         [确定]
[root@eric6 home]# chkconfig rpcbind on
[root@eric6 home]# chkconfig --list |grep rpc
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcgssd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcidmapd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcsvcgssd      0:off   1:off   2:off   3:off   4:off   5:off   6:off

2、客户端挂载10.0.0.250(NFS服务端ip)

[root@eric6 home]# mount -t nfs 10.0.0.250:/data/bbs /mnt

3、本机检查NFS挂载

[root@eric6 mnt]# showmount -e 10.0.0.16
Export list for 10.0.0.16:
/data/bbs 10.0.0.0/24
[root@eric6 mnt]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             8.3G  1.8G  6.1G  23% /
tmpfs                 244M     0  244M   0% /dev/shm
/dev/sda1             194M   28M  156M  16% /boot
10.0.0.250:/data/bbs  9.1G  2.1G  6.6G  24% /mnt

4、创建文件提示没权限,服务器授予文件目录权限,或者更改所属组/所属者

[root@eric6 mnt]# touch sdklfjsdlkf
touch: cannot touch `sdklfjsdlkf': Permission denied
umount –lf /mnt  //强制卸载

NFS排错:
1、首选在服务器看看配置OK不
showmount–elocalhost
1、确认客户端showmount是否ons
showmount–e10.0.0.250
2、如果客户端不同,先ping服务器看看同不,如果同就telnet10.0.0.250111端口(安装telnet)
3、如果能ping通不能telnet,很可能是开启iptables了
4、showmount–e10.0.0.250
5、客户端创建文件提示没权限,是服务器端bbs没给写入权限。仅仅是给了NFS网络权限,远端服务器本地权限还没有
6、默认情况下,nfs客户端写入的用户是nfsnobody,

7、
把服务器bbs所有者所属组该成nfsnobody,不建议给bbs777权限

8、NFS客户端挂载,不建议些到fstab里面,因为如果NFSserver出问题,系统会启不来

/etc/export详细配置信息

rwread-write表示可读可写权限

roread-only表示只读权限

sync请求或写入数据时,数据同步写入到NFSserver的硬盘后才返回。目的确保数据安全