文件共享之NFS

一、什么是NFS

主要功能是通过网络让不同的机器系统之间可以彼此共享文件,使NFS客户端将NFS服务器的共享目录挂在到NFS客户端。在NFS客户端看来,NFS服务端的共享目录就如同自己的磁盘分区。换句话说就是将NFS服务端的某个目录映射到客户端。(服务端共享,客户端挂载)

注意:(1)NFS客户端挂载到的目录最好是空的,否则会造成短暂性文件查不到的问题。

         (2)NFS客户端如果可以操作该共享目录,服务端需要给到写的权限。

二、NFS原理

比如NFS服务端将/var/www/html目录进行共享,那么有访问权限的NFS服务端就可以将该目录挂载到本地,并且可以看到和服务端html下面相同的文件内容,服务端给客户端相应的权限(读、写、读写),客户端也就会拥有相应的权限(读、写、读写)。挂载后NFS客户端查看磁盘信息命令:#df -h

NFS是通过网络进行服务端与客户端直接 数据传输(需要相应的网络端口支持)的,且NFS服务端是通过随机选择端口(<1024)进行数据传输的。然后NFS服务端通过RPC(远程过程调用协议)使NFS客户端知道服务端目前正在使用的端口。

注意:RPC协议/服务会统一管理NFS的端口,统一对外的端口是111,客户端和服务端通过RPC先沟通NFS使用了哪些端口。

RPC和NFS之间的通信:

NFS服务端要先开启RPC服务(portmap或rpcbind服务),再开启NFS,这样才能使NFS去RPC中注册端口信息,当NFS启动后,会随机选择一些端口向RPC注册这些端口,RPC就会记录下这些端口,并开启对外111端口,等待客户端的请求。当客户端有请求时,客户端的RPC向服务端的RPC请求获取服务端的NFS端口信息,服务端的RPC就会将服务端的NFS信息返回给客户端的RPC。

注:若RPC服务重启了,原来注册好的NFS端口数据就会丢失,所以NFS也要重新启动,重新向RPC注册端口,若只是修改NFS配置文件,不需要重启NFS,直接执行/etc/init.d/nfs reload 或者 exportfs -rv即可使修改的/etc/exports生效。

总结为:

1)首先服务器端启动RPC服务,并开启111端口

2)启动NFS服务,并向RPC注册端口信息

3)客户端启动RPCportmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。


、服务端NFS部署

部署NFS服务端和客户端都必须安装的两个包:nfs-utils(NFS主程序,包含rpc.nfsd、rpc.mount)、portmap:(RPC主程序)

客户端和服务端都要开启rpcbind服务器,但nfs只需要服务端开启即可

(1)查看系统版本:

cat /etc/redhat-release

(2)  查看是否安装nfs和portmap   (NFS的RPC服务,在Centos5下名为portmap,Centos6下名称为rpcbind。)

>centos6版本: rpm -qa | egrep "nfs|rpcbind" (注意centos5的话。换成 rpm -qa | grep portmap )

如果显示如下内容表示已经安装成功或已经安装

   libnfsidmap-0.25-17.el7.x86_64
   rpcbind-0.2.0-42.el7.x86_64
   nfs-utils-1.3.0-0.48.el7_4.x86_64
     如果没有上述信息,则进行安装
yum intall nfs-utils rpcbind   centos5:   yum intall nfs-util portmap  

   (3)启动rpc(必须先启动)

service rpcbind start
    启动rpcbind后,使用netstat -nltp查看是否有111端口,如有,则表示启动成功。
tcp6       0      0 :::111               :::*                    LISTEN      10681/rpcbind  
    查看在rpc注册的端口信息

rpcinfo  -p 
   (4)启动nfs(先启动rpc)

service nfs start
     查看nfs状态
service nfs status

设置开启自启

chkconfig nfs on

chkconfig rpcbind on

   (5)配置NFS

配置文件路径/etc/exports,默认该配置文件是空的

格式:  NFS共享目录(绝对路径)  客户端地址1(参数1,参数2) 客户端地址2(参数1,参数2

客户端地址可写为单个主机也可以为某个网段,参数:读写权限(rw) 同步更新(sync) 压缩来访问账号(all_squash) 压缩后的匿名账号(anonuid=uid,anongid=gid)等

/var/www/html  192.168.1.124(rw,sync)
配置完后,将nfs重启

service nfs restart
注意:(1)nfs配置好之后,通过cat /var/lib/nfs/etab来查看nfs配置的参数。/var/lib/nfs/rmtab从这个文件中可以看到有哪些客户端挂载了nfs共享目录。

   (2)配置文件已经设置了共享且是读写权限,但目录文件还没有开放权限,所以也要开启本地安全权限 chmod -R 777 /var/www/html

四、客户端部署

启动rpc

service rpcbind start
    查看服务端给提供的共享文件

showmount -e 192.168.1.131
   挂载服务端共享出来的目录

mount -t nfs 192.168.1.131:/html F:
五、客户端如何设置开机自动挂载

特别说明:我们重新启动客户端之后,我们要重新去挂载nfs,我们可以有两种方式来实现。
<1>通过把mount–t  nfs 192.168.1.131/html  F:这条命令写到/etc/rc.local中,让它开机就执行。
<2>在/etc/fstab(系统开机启动分区加载项)添加我们的NFS配置
但在生产环境中,对于共享的NFS目录,一般不会配置到/etc/fstab里。因为在客户端主机重启时如果由于网络等原因连接不上nfs server时,就会导致客户机无法启动的厄运发生。一般是通过把mount -t  nfs  192.168.1.131:/html F:命令放到rc.local中来实现开机自动挂载NFS。














         


你可能感兴趣的:(文件共享之NFS)