• NFS网络文件系统部署前服务器端的准备工作
    1、查看服务器端系统配置信息如下图所示:
    NFS网络文件系统部署_软件包

    如上图所示:服务器端系统配置为:
    X86-64内核版本是2.6.32-131 red-hat 6.5 的系统 主机名是:redha65-NFS-server
    2、要部署redhat 6.5服务器端的NFS网络文件系统服务器端必须安装两个服务,一个是nfs 一个是rpc (注:因为redhat 6.5版的rpc远程过程调用的服务是rpcbind) 所以必须查询是否存在,这两个服务和两个服务当前的运行状态。
    NFS网络文件系统部署_服务器_02

    如上图所示
    :nfs rpcbind 所要求的软件包已经安装,如果没有安装可以使用:命令:
    yum install nfs-* -y  yum installrpcbind –y 来进行安装,也就是常说的,yum安装。下面就查看一下当前两个服务的运行状态了!
    NFS网络文件系统部署_网络_03
    如上图所示这两个服务的状态都是处于stop状态,要想使用NFS网络文件系统必段将它们启用:启动是有先后顺序的,重点是 rpc服务(rpcbind)必须先启动,然后nfs服务再启动,首先要启动RPC服务否则 NFS SERVER 就无法向RPC服务注册。另外如果RPC服务重新启动,原来已经注册好的NFS端口数据就会丢失,此时RPC服务管理的NFS程序也需要重新启动(最好重新启动一下NFS服务),以重新向RPC注册。所以需要如下命令:1/etc/init.d/rpcbind start  2/etc/init.d/nfsstart

    下图所示:

    NFS网络文件系统部署_网络_04

  • NFS网络文件系统部署前客户端的准备工作
    1、查看客户端系统配置信息如下图所示
    NFS网络文件系统部署_网络_05
    如上图所示:客户器端系统配置为:X86-64内核版本是2.6.32-131 red-hat 6.5 的系统 主机名是:redhat65-NFS-client

    2、要部署redhat 6.5客户端的NFS网络文件系统客户端必须安装一个服务,就是rpc服务(注因为redhat6.5 版本的rpc服务rpcbind )所以需要查看,当前客户端服务器上面是否正确安装了rpcbind的软件包。使用命令:rpm –qa|grep “rpcbind” 如下图所示:
    NFS网络文件系统部署_服务器_06

    安装成功:再看一下当前
    rpc服务的运行状态
    NFS网络文件系统部署_软件包_07
    如上图所示rpc服务正在运行,那么对于服务器端来讲一切有关NFS网络服务的配置已经完成。如果上面的服务没有开启,则需要安装 rpcbind 服务使用 yum install rpcbind –y
    安装完成后,使用命令:/etc/init.d/rpcbind start rpc服务开启就可以了。

    3、本人之前想了很长的时间在NFS网络服务的客户端需不需要也同样打开nfs服务呢,通过最后的实验结论,不需要打开nfs服务如下图所示:
    NFS网络文件系统部署_网络_08
    上面所有的有关nfs服务在客户端都是stop状态,但有一点,客户端的rpc服务一定要打开,这个是必须的。


  • 在服务器端打开
    NFS配置文件并且使用vi 进行编辑
    默认的配置地点是 /etc/exports
    /etc/exports 文件配置格式为:

    NFS  共享的目录 NFS 客户端地址 (参数1 参数2

    其中各项的参数含义如下:
    1NFS 共享的目录:NFS服务端要共享的实际目录,必须是绝对路径
    2、客户端地址: 为服务端授权的可访问的共享目录NFS客户端地址,可以是单独的IP地址或主机名,域名等,也可以为一整个地址网段如(192.168.1.0/24,还可以用*配所有服务器可以访问。这里所谓的客户端一般来说是前端的业务服务器如web服务器
    3、参数集:对授权的客户端的访问权限进行设置。(客户以什么权限访问)

    使用命令:vi /etc/exports 进行编辑。(如果我在服务器端想要共享的目录是/data/shared
    那么这个目录在服务器端必须存在,如果不存在使用命令mkdir /data/shared 进行创建
    NFS网络文件系统部署_服务器_09
    如上图所示我已经配置好了/etc/exports NFS网络文件系统服务端配置文件,意思是192.168.1.0/24 这个网段上所有的主机都可以共享本服务器上面的/data/shared 这个目录,且是(sync 这个参数是可读可写的)。


  • 对配置好的服务器共享文件进行挂载

    可以首先在服务器本地进行挂载:使用showmount –e 127.0.0.1 来查看如下图所示:
    NFS网络文件系统部署_网络_10
    如上图如示,已经显示出可以挂载的目录,这只是第一步,并不代表挂载成功,也可以使用命令 showmount –e 192.168.1.79 这样也可以,192.168.1.79是本机的ip 地址,是如何知道的,可以使用ifconfig 来进行查看如下图所示:
    NFS网络文件系统部署_软件包_11
    那么第二步是进行真正客户端的挂载:使用命令:mount –t nfs 192.168.1.79:/data/shared /mnt

    如下图所示:

    NFS网络文件系统部署_网络_12

    如上图所示本机挂载已经成功
    使用df-h 进行了查看,也可以使用命令 cat  /proc/mounts 查看如下图所示:
    NFS网络文件系统部署_软件包_13
    看最后一行,已经详细显示了挂载的详细信息了。


  • 在客户端对服务端共享的目录进行挂载

    使用命令:showmount –e 192.168.1.79 如下图所示:
    NFS网络文件系统部署_软件包_14

    如上图所示已经显示出服务器端的挂载目录的详细信息了,可以使用命令:
    mount –t nfs 192.168.1.79:/data/shared /mnt 如下图所示:挂载成功
    NFS网络文件系统部署_网络_15

    在客户端输入命令后没有回应就是最好的回应
    表示挂载已经成功了。可以使用 df –h  cat/proc/mounts 进行查看如下图所示:
    NFS网络文件系统部署_软件包_16
    NFS网络文件系统部署_网络_17

    如上面两张图片如示:已经成功实现了对服务器端的挂载。

    那么现在我进入 挂载点 /mnt 能建立一个目录或文件吗? 答案是不能如下图所示,因为我只有登入主机的权限 并没有共享目录写的权限。
    NFS网络文件系统部署_服务器_18

    这个时候有一个重要的知识点需要明白,我们在客户端进入/mnt目录实际上是登入了服务端共享的文件系统 /data/shared目录  客户端是以什么身份登入的 是当前客户端的root用户吗? 不是,是uid gid 65534 的用户nfsnoboy这个身份登入的,如果我们想要在共享目录里面有写的权限,那么只需要在服务器端将/data/shared 这个目录的属主从root 改成nfsnobody 即可如下图所示在服务器端使用命令:chown nfsnobody /data/shared
    NFS网络文件系统部署_网络_19

    然后我们再次在客户端进入/mnt 使用touch a.txt mkdira  进行创建文件与目录 再使用 ll 命令查看
    如下图所示。
    NFS网络文件系统部署_网络_20

    如上图所示已经创建成功

    在服务器端再次查看:
    NFS网络文件系统部署_网络_21

    和上面的结论一样,创建成功了。文件的属主
    与属组都是nfsnobody 证明上面的结论完全正确。


小结:

NFS
文件系统是网络文件系统用来不同主机系统之间共存目录与文件的,是目前网络系统架构中常用的数据存储方式之一。
要想架设好NFS文件系统就必须理解 rpcnfs 之间的关系,以及nfs 配置文件 /etc/exports 正常参数设置,还有就是正确的挂载命令格式。

在挂载之前一定要使用命令showmount –e 127.0.0.1 进行试挂载,如果本机都挂载不了,那么其它主机的挂载也是一定也不行。
如果本地挂载可以,但是其它主机不可以,一定要查看一下服务器端防火墙是否关闭,这个经常遇到问题。还有就是一定要查看 /etc/exports 里的客户端主机地址是否正确等。