NFS

NFS

 

NFS简介

  介绍

    NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。

    NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph

 

  应用

    1.用户访问NFS客户端,将请求转化为函数

    2.NFS通过TCP/IP连接服务端

    3.NFS服务端接收请求,会先调用portmap进程进行端口映射

    4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端

    5.Rpc.mount进程用于判断客户端对服务端的操作权限

    6.如果通过权限验证,可以对服务端进行操作,修改或读取

 

 

 

NFS配置详解

  1.控制读写

    rw        读写权限 (常用)

    ro         只读权限 (不常用)

 

  2.控制文件权限

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

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

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

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

 

  3.控制写模式

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

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

 

  4.控制用户

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

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

 

NFS实践 

  服务端

    1.安装NFS和rpcbind

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

 

    2.创建挂载点

      [root@nfs ~]# mkdir /web/nfs{1..9}

    3.配置挂载点

      格式:

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

      eg

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

/web/nfs1 172.16.1.0/20(rw,sync,all_squash)  

 

    4.关闭selinux和防火墙

      [root@nfs ~]# setenforce 0

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

 

    5.启动Nfs和rpcbind服务

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

      [root@nfs ~]# systemctl start rpcbind

 

    6.检查服务端是否正常

      showmount -e [服务端的地址,默认是本机地址]

      [root@nfs ~]# showmount -e

        Export list for nfs:

        /web/nfs1 172.16.1.0/20

      [root@nfs ~]# showmount -e 172.16.1.31

        Export list for 172.16.1.31:

        /web/nfs1 172.16.1.0/20

      [root@nfs ~]# cat /var/lib/nfs/etab

 

    7.给挂载点授权

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

 

  客户端

    1.安装NFS

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

 

    2.创建目录

      [root@web01 opt]# mkdir /opt/nfs/

 

    3.挂载NFS

      [root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/

 

    4.测试NFS文件同步功能

 

统一用户

  1.创建用户

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

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

 

  2.修改挂载点权限

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

 

  3.使用

 

搭建考试系统

  搭建WEB服务

    1.安装web软件

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

 

    2.将代码放置于网站的根目录

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

 

    # 上传代码并解压

      [root@web01 html]# unzip kaoshi.zip 

 

    3.授权

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

 

    4.关闭selinux和防火墙

      [root@nfs ~]# setenforce 0

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

 

    5.修改web软件的用户

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

User www
Group www

 

    6.启动web软件

      [root@web01 html]# systemctl start httpd

 

    7.测试

      1.上传


      2.访问

        http://172.16.1.7/upload/1_linux.jpg

 

  配合NFS实现文件共享

    1.修改NFS配置文件

      [root@nfs nfs1]# vim /etc/exports

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

 

    2.创建挂载点

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

      [root@nfs nfs1]# chown www.www /web/upload

 

    3.重启NFS

      [root@nfs nfs1]# systemctl restart nfs-server rpcbind

 

    4.客户端安装NFS软件

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

      [root@web02 html]# yum install nfs-utils -y

      [root@web03 html]# yum install nfs-utils -y

 

    5.挂载

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

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

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

 

    6.测试

      用web2上传,web3查看

 

常见问题记录

   NFS挂载无法持久化

# 1.通过开机自启动脚本挂载
    [root@web01 html]# vim /etc/rc.local
    /usr/bin/mount -t nfs 172.16.1.31:/web/upload         
        /var/www/html/upload
    [root@web01 html]# chmod +x /etc/rc.d/rc.local 

# 2.通过/etc/fstab配置文件
    [root@web02 ~]# vim /etc/fstab
    #               挂载点                   挂载的目录    类型     设置默认权限    0 不备份 1 备份    0 不检查 1 检查
        172.16.1.31:/web/upload  /var/www/html/upload   nfs       defaults          0                0
    [root@web02 ~]# mount -a

 

 

END

 

posted @ 2021-12-30 16:57  Snails蜗牛  阅读(128)  评论(0编辑  收藏  举报