NFS概念描述:
NFS的使用很像windows的网络共享、安全、网络驱动器映射(相当于linux里的samba服务)
NFS的企业应用场景:
NFS网络文件系统在企业工作场景中,一般用来存储共享视频、图片、附件等静态资源文件(一般由网站用户上传的文件都放到NFS共享里,例如:图片、附件、头像,注意网站程序不要放NFS共享里),是当前互联网系统架构中最常用的数据存储服务之一,特别是中小网站公司应用频率很高,大公司或门户除了使用NFS外,还可能会使用MFS、GFS
NFSRPC最主要的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,让客户端可以连接到正确的端口上去,从而实现数据传输。
房屋中介:我们找房子就相当于NFS客户端,中介介绍房子就相当于RPC服务,房子就相当于NFS服务端
那么RPC有事如何知道每个NFS的端口呢?
原因是,当NFS服务端启动服务时会随机抽取数个端口,并主动向RPC服务注册
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 �Clf /mnt //强制卸载
NFS排错:
1、首选在服务器看看配置OK不
showmount�Celocalhost
1、确认客户端showmount是否ons
showmount�Ce10.0.0.250
2、如果客户端不同,先ping服务器看看同不,如果同就telnet10.0.0.250111端口(安装telnet)
3、如果能ping通不能telnet,很可能是开启iptables了
4、showmount�Ce10.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的硬盘后才返回。目的确保数据安全