NFS

一、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是负责负责信息的传输。

 

 

二、NFS应用原理

    

    ① 用户访问NFS客户端,将请求转化为函数
    ② NFS通过TCP/IP连接服务端
    ③ NFS服务端接收请求,会先调用portmap进程进行端口映射
    ④ Rpc.nfsd进程用于判断NFS客户端能否连接服务端;
    ⑤ Rpc.mount进程用于判断客户端对服务端的操作权限
    ⑥ 如果通过权限验证,可以对服务端进行操作,修改或读取

 

 

 

 

三、NFS配置详解

    配置格式  

        [挂载点] [可以访问的IP]([权限参数])

    参数

        rw :可读可写权限

        ro  :只读权限

        root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用)

        no_root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用)

        all_squash      :无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用)

        no_all_squash:无论NFS客户端使用什么账户访问,都不进行压缩 (不常用)

        sync :同时将数据写入到内存与硬盘中,保证不丢失数据 (常用)

        async:优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用)

        anonuid:配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用)

        anongid:配置all_squash使用,指定NFS的用户GID,必须存在系统 (常用)

        

四、NFS实现文件共享(以考试系统为例)

    服务端

      ① 下载nfs-utils和rpcbind工具

      [root@nfs ~]# yum install nfs-utils rpcbind

      ② 创建挂载点

      [root@nfs ~]# mkdir /web/upload

      ③ 配置挂载点 /etc/exports

      [root@nfs ~]# vim /etc/export

      # [挂载点] [可以访问的IP]([权限参数])

      /web/upload  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)

      ④ 创建nfs统一用户

      [root@nfs ~]# groupadd www -g 666

      [root@nfs ~]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin 

      ⑤ 给予挂载点权限 

      [root@nfs ~]# chown -R www.www /web/upload/      

      ⑥ 关闭防火墙与selinux服务

      [root@nfs ~]# setenforce 0

      [root@nfs ~]# systemctl disable --now firewalld

      ⑦开启NFS服务和rpcbind服务

      [root@nfs ~]# systemctl start nfs-server 

      [root@nfs ~]# systemctl start rpcbind

         ⑧ 查看服务端是否正常

      [root@nfs ~]# showmount -e

 

    客户端

      ① 安装NFS(有几台安装几台)

      [root@web01 opt]# yum install -y nfs-utils

      ② 安装web软件(有几台安装几台)

      [root@web01 opt]# yum install httpd php php-devel -y

      ③ 将考试系统代码放入网站的根目录

      [root@web01 opt]# cd /var/www/html/

      利用lrzsz工具移入

      ④ 创建统一用户(每一台都得创建)

      [root@nfs ~]# groupadd www -g 666

      [root@nfs ~]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin 

        ⑤ 在/var/www/html/ 目录下创建一个upload目录用来当作挂载点

      [root@web01 html]# mkdir upload

      ⑥ 给予web软件统一用户的权限

      [root@web01 html]# chown -R www.www /var/www/html

      ⑦ 修改web软件的用户

      [root@web01 html]# vim /etc/httpd/conf/httpd.conf

      将里面的User与Group后面的apache修改成www

        ⑧ 挂载

      [root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

 

 

       ⑨ 查看是否挂载成功

        [root@web01 /]# df -h

 

 

       ⑩ 测试

       在一台客户端上上传文件到客户端,在其他客户端上查看是否能够查看,如果能查看便是成功的实现了文件共享

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-12-30 19:32  椰子皮0oo0  阅读(99)  评论(0)    收藏  举报
1