NFS服务端和客户端安装配置

一  NFS介绍

 

    NFS用的比较多,可是更新没有想象的那么快,Nginx一年要迭代不少个版本,而NFS最新版本4.1是2010年更新的,到目前为止尚未更新过,但这并不影响NFS使用的普遍性html

    RPC协议为Remote Procedure Call,即为远程过程调用,RPC须要为NFS提供一些支持,好比两台机器服务器端和客户端通讯的时候,他们之间自己不能直接通讯,须要借助于RPC这个协议来完成mysql

NFS架构以下:sql

    有一个场景是:ABC三台服务器作成负载均衡,数据存储在A上,当A上的数据一旦发生了变化,就会当即将更新的的文件共享出来,B和C上立刻就能看到,或者说B上更新了文件,A和C也能立刻看到,这种需求咱们能够经过NFS这个服务实现vim

NFS原理图以下:centos

    NFS原理:服务器端要启动一个NFS服务,服务器端要想给客户端提供服务,就要借助于RPC协议,而RPC协议是经过rpcbind这个服务所实现的,protmap是在centos5以前的版本中的叫法,在centos六、centos7中就叫作rpcbind,其实是一个东西,最终都是启动这个服务,实现RPC通讯;默认NFS不会监放任何端口,最终监听端口实现TCP/IP通讯过程的是rpcbind这个服务产生的RPC协议实现的,rpcbind监听的端口是111,RPC通讯时,NFS服务会在RPC协议里注册一个端口,NFS告诉RPC他本身通讯的端口是什么,而后服务端RPC把这个端口号告诉客户端rpcbind,而后客户端这台机器再和服务端的这个端口通讯,最终实现数据的传输(问题:网站数据存放是存放在一台机器上的吗?RPC通讯只会传输端口号嘛?数据只经过两台机器RPC客户端机器会保留网站的数据文件吗?服务器

    NFS(Network File System)即网络文件系统,它容许网络中的计算机之间经过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用能够透明地读写位于远端NFS服务器上的文件,就像访问本地文件同样,也就是说客户端PC能够挂载NFS服务器所提供的目录而且挂载以后这个目录看起来如同本地的磁盘分区同样,可使用cp、cd、mv、rm及df等与磁盘相关的命令。网络

 

二 NFS服务端安装配置

    在作这个实验以前,咱们先准备好了两台虚拟机,IP分别为192.168.31.157和192.168.31.149 ,他们中31.157作客户端,31.149作服务端,下面咱们来安装配置架构

一、安装服务端软件负载均衡

    # yum install -y nfs-utils rpcbind   //安装nfs-utils和rpcbind两个包async

二、安装客户端软件

    # yum install -y nfs-utils    //安装nfs-utils

    从下图的安装过程能够看到,在安装nfs-utils的过程当中,也会自动地将rpcbind安装上,因此上一个步骤命令中的rpcbind实际上是能够省略的

    安装完成后咱们来查看两台机器监听的端口,此时已经监听了111端口了

三、在服务端编辑配置文件

    # vim /etc/exports

    在配置文件中加入如下内容:

    /home/nfstestdir/          //这行内容是服务端共享出来的目录,此目录目前还不存在,须要手动建立

    192.168.31.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)    //定义IP或IP段

四、在服务端建立分享目录

    # mkdir /home/nfstestdir/

五、更改分析目录权限

    # chmod 777 /home/nfstestdir/

六、启动rpcbind

    # systemctl start rpcbind   //若是没有启动rpcbind的话能够执行此命令启动rpcbind

七、启动nfs服务

    # systemctl start nfs    

    # ps aux |grep rpc    //启动nfs服务成功后咱们再来查看rpc,能够看到在启动nfs时会自动地启动rpc的一些服务

八、开机启动

    若是咱们想让nfs开机启动,须要执行如下命令

    # systemctl enable nfs

三 NFS挂载选项

• rw   read write读写

• ro    read only只读

• sync 同步模式,内存数据实时写入磁盘,能够很快地将数据写到磁盘中去,可是这样会相应地下降磁盘的效率

• async 非同步模式,与sync相对,async会每隔一段时间将内存中的数据写入到磁盘中去,这样作的好处是可以保证磁盘的效率,很差的地方是万一断电,数据可能会丢失一部分

• no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大,客户端的root用户不受限制,能够像访问本地文件同样访问服务端的共享文件

• root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

• all_squash 客户端上全部用户在使用NFS共享目录时都被限定为一个普通用户

• anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

    客户端挂载

一、安装nfs-utils

    # yum install -y nfs-utils     //前面咱们已经按照好了,在安装nfs-utils的过程当中,也会自动地将rpcbind安装上,

二、查看客户端是否有访问服务端的权限

    # showmount -e 192.168.31.149   //这个IP就是我配置的NFS服务端IP

    上面的访问结果提示咱们网络不通,缘由之一多是服务端rpcbind服务没有开启,没有监听111端口,咱们可使用下面命令查看

    # ps aux |grep rpc    //下图能够看到111端口已经开启

    另一个缘由多是防火墙致使,要想让nfs实现正常的通讯,咱们还须要将防火墙关一下,由于nfs这个服务比较特殊,虽然rpc已经能够通讯了,即便说111端口已经放行了,可是nfs不必定可以正常通讯,由于他们用了一个不固定的端口,此时咱们须要将服务端和客户端的防火墙先关闭

    # systemctl stop firewalld   //关闭服务端和客户端的防火墙

    # setenforce 0                     //只关闭服务端的SELinux

    而后咱们再来查询访问权限,能够看到已经有访问权限了

    # showmount -e 192.168.31.149

    上图提示程序未注册,经查询资料,咱们重启了rpcbind和nfs,再来执行上条命令,出现以下提示

    经排查,发现/etc/exports配置文件行首多了几个空格,修改这个文件

    修改完毕后,咱们来执行# exportfs -ar 

    没有提示错误,而后再来重启rpcbind和nfs,重启成功后,咱们到用户端再次执行如下命令查看访问权限

    # showmount -e 192.168.31.149

    若是出现上图提示,则说明咱们有读写服务端共享文件的权限

三、挂载

    咱们须要在客户端将服务端提供的共享目录看成本地磁盘同样挂载

    # mount -t nfs 192.168.31.149:/home/nfstestdir/ /mnt/        //挂载

    # df -h             //查看挂载是否成功,能够看到咱们已经成功挂载了

四、测试验证    

    下面咱们来验证两边的数据是否能同步 ,首先是客户端的操做

    # cd /mnt            //首先切换到共享目录下

    # touch   lj.html           //而后咱们在客户端共享目录下建立一个文件

    # ls -l                          // 查看新建立的这个文件的详细信息

    咱们能够看到这个由客户端建立的文件的属主和属组均为mysql,而后咱们又来查看下服务端

    # ls -l /home/nfstestdir     //查看下服务端共享目录下是否更新了刚才咱们建立的文件lj.html

    上面的对比咱们能够看到文件的属主和属组均为mysql,这是由于咱们再/etc/exports文件中anonuid=1000,anongid=1000两处配置的意思就是让全部在共享目录中建立的文件其属主和属组均为此处设置的1000这个id号对应用户,下面咱们来看下1000这个id对应的属主和属组是否是就是mysql呢

  从这张图能够看到mysql用户的id号为1000

    其实不管是用户端仍是服务端在这个目录建立的文件,其属主和属组均为mysql

相关文章
相关标签/搜索