CentOS 7如何搭建NFS服务器

【1】NFS简介:

         1.NFS是Network File System的简称,即网络文件系统

         2.NFS是一种分布式文件系统,可以在不同的操作系统间共享文件

         3.NFS基于TCP/IP协议,可将远程计算机磁盘挂载到本地

         4.NFS在文件或信息传送过程中依赖于RPC(Remote Procedure Call)协议,不论是服务端还是客户端,只要用到NFS的地方都要启动RPC服务

         5.RPC协议可以在不同的系统间使用,此通信协议设计与主机及操作系统无关。

         6.NFS本身可以认为是RPC的一个程序,NFS是一个文件系统,而RPC负责信息的传输

【2】配置NFS服务器

         1.NFS的安装需要2个软件包[通常作为系统的默认包安装]:

                   nfs-utils-1.3.0-0.e17.x86_64.rpm             //包含一些基本的nfs命令与控制脚本

                   rpcbind-0.2.0-23.e17.x86_74.rpm           //是一个管理RPC连接的程序,类似的管理工具为portmap

         2.检查系统中是否安装了对应的软件

                   rpm  -qa|grep -i nfs

         3.使用yum工具安装nfs、rpcbind软件包[如何配置yum源,请点击这里]

                   yum  install -y  nfs-utils  rpcbind

         4.查看安装的主要文件列表

                   rpm  -qpl nfs-utils-1.3.0-0.e17.x86_64.rpm

【3】NFS的主要文件和进程:

         1.nfs有的发行版名字叫做nfsserver,主要用来控制NFS服务的启动和停止,安装后位于/etc/init.d目录下

      2.rpc.nfsd是基本的NFS守护进程,主要功能是控制客户端是否可以登录服务器,另外可以结合/etc/hosts.allow和/etc/hosts.deny做更精细的权限控制

        3.rpc.mountd是RPC安装守护进程,主要功能是管理NFS的文件系统。通过配置文件共享指定的目录,同时根据配置文件做一些权限验证

        4.rpcbind是一个管理RPC连接的程序,rpc服务对NFS是必需的,因为是NFS的动态端口分配守护进程,如果rpc不启动,NFS服务则无法启动,类似的管理工具为portmap

        5.exportfs,如果修改了/etc/exports,无需重新激活NFS,只要重新扫描一次/etc/exports文件,并且重新将设定加载即可。exports命令常用参数如下:

                   exportfs  -a    //全部挂载/etc/exports文件内的设置

                   exportfs  -r     //重新挂载/etc/exports中的设置

                   exportfs  -u    //卸载某一目录

                   exportfs  -v    //在export时将共享的目录显示在屏幕上

        6.showmount,显示指定NFS服务器连接NFS客户端的信息。showmount命令常用参数如下:

                   showmount  -a    //列出NFS服务共享的完整目录信息

                   showmount  -d    //仅列出客户机远程安装的目录

                   showmount  -e    //显示导出目录的列表

【4】配置/etc/exports

         1.格式:

                   #<共享目录>  [客户端1 选项]        [客户端2 选项]

                   /nfsshare *(rw,all_squash,sync,anonuid=1001,anongid=1000)

         2.客户端常用的指定方式:

                   指定ip地址的主机:192.168.3.101

                   指定子网中的所有主机:192.168.3.0/24  192.168.0.0/255.255.255.0

                   指定域名的主机:www.domain.com

                   指定域中的所有主机:*.domain.com

                   所有主机:*

         3.NFS常用选项说明:

                   ro     //该主机有只读权限

                   rw    //该主机对该共享目录有可读可写的权限

                   all_squash        //将远程访问的所有普通用户及所属组都映射为匿名用户或用户组,相当于使用nobody用户访问该共享目录,此参数为默认设置

                   no_all_squash //与all_squash取反,该选项默认设置

                   root_squash    //将root用户及所属组都映射为匿名用户或用户组,为默认设置

                   anonuid    //将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户

                   anongid    //将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户

                   sync //将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性

                   async        //将数据先保存在内存缓冲区中,必要时才写入磁盘

【5】/etc/exports文件配置实例说明

         例子一:

                   /nfsshare  *.*(rw)

         解释:

                   1.共享/nfsshare目录,所有主机都可访问,且具有读写权限

                   2.客户端上的任何用户在访问时都映射成nobody用户

                   3.若客户端要在该共享目录上保存文件,则服务器上的nobody用户对/nfsshare目录必须要有写的权限

         例子二:

                   /nfsshare2  192.168.19.0/255.255.255.0(rw,all_squash,anonuid=1001,anongid=100)

                                        192.168.32.0/255.255.255.0 (ro)

         解释:

                   1.共享/nfsshare2目录,192.168.19.0/24网段的所有主机都可以访问该目录,具有读写权限,且所有的用户在访问是都映射成服务器上的uid为1001、gid为100的用户

                   2.192.168.32.0/24网段的所有主机对该目录有只读访问权限,且访问是所有的用户都映射成nobody用户

【6】启动服务

         cat  /etc/exports

         mkdir  /nfsshare

         systemctl  restart rpcbind

         systemctl  start nfs-server

【7】NFS服务有5个后台进程组成

         rpc.nfsd             //负责主要的工作

         rpc.lockd和rpc.statd      //负责抓去文件锁

         rpc.mountd               //负责初始化客户端的mount请求

         rpc.rquotad               //负责对客户文件的磁盘配置限制

  1.这些后台程序是nfs-util的一部分,如果使用的是rpm包,它们存放在/usr/sbin目录下

  2.在CentOS7之前的版本中,要启动NFS服务,执行/etc/init.d/nfsstart即可;在CentOS7中由于系统框架的改变,可以使用systemctl启动,也可以使用service nfs-server start启动

【8】确认NFS是否已经启动

         rpcinfo  -p

         showmount  -e 127.0.0.1    //查看服务器的输出清单

【9】配置NFS客户端

         确定要挂载的文件路径,且该路径中已经没有存在的数据

         确定要挂载的服务器端的路径,使用mount挂载到本地磁盘

         命令:

                   [root@CentOStest]mount  -t  nfs -o  rw  192.168.12.102:/nfsshare   /test

                   [root@CentOStest]touch   s

                            cannot  touch 's':Permission denied

         解释:

                   1.以读写方式挂载了共享目录,但root用户并不可写,其原因在于/etc/exports中的文件设置

                   2.由于all_squash和root_squash为NFS的默认设置,会将远程访问的用户映射成为nobody用户,而/test目录nobody用户是不可写的。

                   3.通过修改共享设置/etc/exports可以解决这个问题:

                            /nfsshare *(rw,all_squash,sync,anonuid=1001,anongid=1000)

                   4.重启NFS服务,重新挂载即可正常读写

【10】将远程服务器192.168.3.101上的/nfsshare挂载到本地目录

                   mount    192.168.3.101:/nfsshare     /nfsshare

         当挂载成功后,本地上/nfsshare目录下如果有数据,则原有的数据都不可见,用户看到的是远程主机上面/nfsshare目录中的文件列表

你可能感兴趣的:(Linux技术)