一、NFS服务简介
NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS在文件传送或信息传送过程中依赖于RPC协议。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是负责负责信息的传输。
二、RPC简介
NFS支持的功能相当多,每个功能都会启用一些端口来传数据,因此NFS的功能所对应的端口无法固定,而是随机的使用一些未被使用的端口传输数据,这样会造成nfs客户端与nfs服务端通讯障碍,因为nfs客户端必须要知道服务端的端口才能进行通信。
解决上的问题,就要用RPC服务,NFS的RPC服务最主要的功能就是记录每个NFS功能所对应的端口号,并在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而可以确保客户端可以连接到正确的NFS端口上去,达到数据交互的目的。
RPC相当于NFS服务端和NFS客户端之间的一个中介
三、 配置NFS文件系统环境
服务器系统:CentOS 6.5
防火墙:关闭
SELinux:关闭
部署NFS服务,需要安装下面2个软件包
nfs-utils:nfs主程序
portmap:centos5.X下RPC的主程序(centos6.X下的名字为rpcbind)
注意:启动nfs服务前必须先启动portmap或rpcbind服务
四、服务端部署
1、安装软件包(2种方法)
yum install –y nfs-utils rpcbind
yum groupinstall -y “NFS file server”
2、启动RPC服务
/etc/init.d/rpcbind start #启动服务
ps -ef|grep rpc #检查是否启动
/etc/init.d/rpcbind status #查看状态
rpcinfo -p localhost #查看启动的端口(本地)
说明:
RPC 默认使用111 端口
若出现:rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused 报错的原因是RPC服务没开
3、启动NFS服务
/etc/init.d/nfs start
rpcinfo -p localhost
4、设置开机自启动
chkconfig nfs on
chkconfig rpcbind on
chkconfig --list #检查
5、创建共享目录
mkdir /data
6、 编辑/etc/exports文件
[root@storm ~]# vi /etc/exports
添加一行:
#share /data directory
/data 192.168.1.0/24(rw,sync)
共享目录 IP(允许192.168.1.*的IP访问)/子网掩码(权限,同步写入)
7、重启NFS服务
/etc/init.d/nfs reload #reload为平滑重启
8、检查共享
showmount -e localhost
9、改变权限
chown -R nfsnobody:nfsnobody /data/
服务端启动nfs服务后,客户端的访问默认是以nfsnobody来访问的,因此要给服务端共享的文件改变所属组和属主,需要手动指定uid和gid,所有的客户端都要有相同的uid和gid才能避免问题的发生
五、客户端部署
客户端的配置同服务端的配置基本相同,同样需要安装(nfs-utils rpcbind)软件包以及启动rpc服务,不同的是客户端无需配置/etc/export文件,也不需要启动NFS服务,只需检查到远程共享目录后正常挂载即可,注意挂载前服务端需要关闭防火墙,否则会导致客户端无法挂载
1、检测远程NFS目录
showmount -e 192.168.1.189
若检查报错:
ping 查看网络是否通畅
telnet 端口 查看服务是否能链接
若出现telnet: connect to address 192.168.1.189: No route to host 报错,要关闭服务端的防火墙:/etc/init.d/iptables stop (服务端)
2、 挂载
mount -t nfs[可不加] 192.168.1.189:/data /mnt #确保/mnt存在
此挂载方法重启后失效
开机挂载的方法有2种:
- a. 编辑/etc/rc.local
[root@localhost data]# vi /etc/rc.local
/bin/mount -t nfs 192.168.1.189:/data /data
缺点:偶尔开机挂不上
- b. 写入fstab(不可取)
网络文件系统不要放到fstab里,因为fstab优先于网络启动,此时连不上nfs服务器端;
即使是本地文件系统,雅瑶注意,fstab最后2列要设置0 0,否则无法启动