搭建NFS服务器

作者: s1mple | 来源:发表于2021-04-15 11:17 被阅读0次

    NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

    NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的。

    NFS应用场景,常用于高可用文件共享,多台服务器共享同样的数据,可扩展性比较差,本身高可用方案不完善,取而代之的数据量比较大的可以采用MFS、TFS、HDFS等等分布式文件系统。

    1. 环境准备两台Centos7.6虚拟机:

    服务端:192.168.199.180

    客户端:192.168.199.190

    2.创建用户,指定用户访问共享文件夹:

    useradd test   #创建test用户

                                       passwd   test  #设置test密码为123456

    3. 查看test用户UID跟GID参数,方便一会去NFS主配置文件增加权限控制   4. NFS安装命令:yum  install nfs* -y 如下图: 5. 查看nfs是否安装成功:rpm -qa nfs-utils  

    6.编辑nfs主配置文件/etc/exports;并添加以下内容:

    /www  192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)     

    参数详解:

    NFS安装完毕,需要创建共享目录,共享目录在/etc/exports文件里面配置,可配置参数如下:

    /www  192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)

    第一列/www 表示需要共享的目录

    IP表示允许哪个客户端访问

    IP后括号里的设置表示对该共享文件的权限

    ro                      只读访问

    rw                      读写访问

    sync                    所有数据在请求时写入共享

    hide                    在NFS共享目录中不共享其子目录

    no_hide                 共享NFS目录的子目录

    all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

    no_all_squash           保留共享文件的UID和GID(默认)

    root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)

    no_root_squas           root用户具有根目录的完全管理访问权限

    anonuid                 指定用户UID

    anongid                 指定用户组ID

    7.启动nfs服务:systemctl start nfs

    8.查看nfs及rpc端口是否启动成功:

    9. rpcinfo -p 192.168.199.180 查看,如图所示:

    RPC命令详解: rpcinfo 命令会向 RPC 服务器发出 RPC 调用,并将得到的结果显示出来。rpcinfo 会列出所有在主机 host 上向 rpcbind 注册的 RPC 服务。

    10. 使用showmount -e localhost 命令用于查询NFS服务器的相关信息,显示NFS服务器的输出清单。

    11. 创建共享文件夹目录www ;并在www目录下新建jfedu.txt并加入内容,授予www用户用户组的nfsnobody.nfsnobody权限

    mkdir -p /www                       #创建www共享目录

    touch  /www/jfedu.txt               #在www目录下创建jfedu.txt文件

    chown  -R  test:test  /www  #授权用户用户组test给www目录

    二、安装客户端:(192.168.199.190)

    1. yum  install nfs-utils  -y

    客户端上不需要启动nfs服务,只是为了使用showmount工具

    2. 查看RPC端口是否启动:netstat -ntpl

    3.使用showmount -e 192.168.199.180命令显示NFS服务器输出结果:

    4.远程挂载www共享目录到客户端的/mnt目录下:mount -t nfs 192.168.199.180:/www /mnt

    5. 进入到/mnt挂载盘符目录下cd /mnt  ;确认是否有jfedu.txt文件存在及查看文件权限属于谁:

    确认文件已存在,用户用户组均为test用户所属,其他用户不能操作此目录下的文件及文件夹;包括root用户都不能操作删除及修改文件,例如root用户都不能删除jfedu.txt文件:

    6.如果也只需要客户端的test用户去对www共享文件夹有增删改查权限的话,需要以下步骤:

    a. 在客户端创建相同的test用户,并保证UID一致的情况下才能对共享目录有权限进行操作

    b. 设置tets用户密码为123456

    c. 查看test用户UID参数值是多少  cat /etc/passwd

    d. 那么问题来了,服务端的test用户UID为1002,客户端test用户UID为1004,共享目录在客户端的权限也为1002,那么1004是没有权限去访问共享目录的,可参考下目前状态的错误图;首先切换到test用户,然后进入到/mnt目录下进行jfedu.txt文件删除看是否报错:

    e. 经过测试同样的tets用户,但是客户端的用户UID跟服务端不一致,所以是没有权限删除文件的,首先退出tets用户,切换root用户后,需要修改客户端test用户UID跟服务端一致即可解决问题,命令:usermod -u 1002  tets

    7.修改完客户端test用户UID为1002后,切换到test用户,查看是否有jfedu.txt文件存在;然后追加新内容123456到jfedu.txt中;最后新建123.txt文件成功,代表NFS共享目录指定用户读取(增删改查)成功。

    8. 在NFS服务端把NFS跟RPC服务加入开机自启动:

    systemctl enable nfs-server

    systemctl enable rpcbind

    9. 在客户端将NFS远程共享目录挂载命令加入fstab配置,不然服务器重启挂载点将消失,加入以下配置到/etc/fstab配置文件

    192.168.199.180:/www     /mnt       nfs     defaults   0 0

    相关文章

      网友评论

        本文标题:搭建NFS服务器

        本文链接:https://www.haomeiwen.com/subject/hjrdlltx.html