当前位置:首页 > 服务器 > Linux > 正文内容

Linux 配置NFS文件共享

martinsun3年前 (2021-01-14)Linux2.04 K

NFS 介绍

NFS 为网络文件管理系统,它能够多台服务器直接相互访问文件,可以简单理解为windows系统中的文件共享功能,详细的介绍可以参阅 NFS网络文件系统

安装服务

  • 需要安装的服务(需要使用NFS服务的服务器都需要安装)
    rpcbind:将不同服务与对应的端口进行绑定,以便支持机器间的相互操作
    nfs-server:文件共享服务
  • 检测是否安装
    • 大多数已经自带了rpcbind和nfs-server,如果已经安装则跳过
    • 使用以下命令检测
      rpm -qa nfs-utils rpcbind
      返回了版本等信息则说明已经安装
  • 安装服务
      yum install -y nfs-utils rpcbind

配置服务

我们假定实现两台服务器之间的文件共享,便于理解,我们这里给两台服务器分别取名为SERVER_A(IP:10.0.0.1)和SERVER_B(IP:10.0.0.2),假定SERVER_A为存储资源的服务器

  • 在配置之前,我们需要设置一个用于NFS操作的用户,这里我们直接设置为nginx的用户,原因是网站在访问时,用户为nginx服务的用户,为了防止权限问题导致的异常情况,使NFS服务和nginx服务用户一致即可,同时,在所有使用NFS服务的服务器上,都应该存在这个用户和用户组,即每台服务器的这个用户所属用户ID和所属用户组ID相同。
    例如:
    在SERVER_A上nginx用户名和用户组名为www,用户ID为501,用户组ID为501,那么在其他服务器上,也应该存在一个用户ID为501,用户组ID为501的www用户和用户组。
    这样,每台服务器通过NFS在SERVER_A上的写入文件时,文件所属角色为www:www,其他服务器通过web网页访问创建的文件,在SERVER_A依然有权限通过web网页进行操作

  • 配置NFS用户
    注意: 每台服务器都需要设置

    • 查看nginx用户
      通过查看nginx的配置文件nginx.conf中的user后面跟的信息
      如后面为 www www 表示nginx的用户为www,用户组为www,
      以下均使用www:www 举例说明
    • 查看nginx用户ID和用户组ID
  • 配置共享文件(在SERVER_A操作)

    • NFS服务的配置文件为 /etc/exports

    • 配置内容格式:
      <输出目录> [客户端 选项(访问权限,用户映射,其他)]
      使用以下命令查看配置帮助

        man exports
    • 配置举例
      我们在SERVER_A的根目录创建一个文件夹储存网站的session文件,执行以下两条命令

      mkdir /sessions
      chmod 1777 /sessions

      执行完毕后,会在根目录生成sessions目录,且权限为1777
      现在演示配置将SERVER_A的/sessions目录共享给SERVER_B
      编辑/etc/exports

      vim /etc/exports

      输入如下内容

      解释:
      将SERVER_A的/sessions目录共享给SERVER_B,且SERVER_B拥有读写权限,并指定 用户ID为501,用户组ID为501,此处的501,是通过 配置NFS用户 得到的ID

  • 启动服务(在SERVER_A操作)
    使用systemctl 命令启动

    systemctl  start  rpcbind.service
    systemctl  start  nfs-server.service
  • 挂载(在SERVER_B操作)

    • 在SERVER_B上,首先启动NFS服务,方法同上
    • 查看NFS共享状态
      我们可以在SERVER_B上查看SERVER_A的共享状态,使用showmount 命令
        showmount -e 10.0.0.1
      执行完成后会列出在SERVER_A上的/etc/exports 配置文件中配置的共享设置
    • 挂载目录
      使用mount命令进行挂载,在挂载之前,我们需要先在SERVER_B的根目录建立sessions 目录
        mkdir /sessions
        chmod 1777 /sessions
      将SERVER_A的/sessions目录挂载到当前服务器的/sessions
        mount -t nfs 10.0.0.1:/sessions /sessions
    • 检验是否挂载成功
      我们在SERVER_A的/sessions目录下面随便写入一个文件,例如

      查看SERVER_B的/sessions目录下面,如果出现了aaa.txt 则表示挂载成功或者,我们在SERVER_B上使用df 命令查看,出现以下信息,则表示挂载成功!
    • 检验是否有权限写入(在SERVER_B操作)
      挂载完成后,我们需要检验是否有写入权限,切换至挂载的目录,创建测试文件,如果在SERVER_A的共享目录中出现了测试文件,且文件所有者为www:www,则表示以上NFS配置成功

自启服务和自动挂载

配置完成后,我们需要配置NFS服务自启
使用systemctl命令
分别在两台服务器上执行

systemctl enable rpcbind.service
systemctl enable nfs-server.service

配置SERVER_B的自动挂载
编辑/etc/rc.local

如果 rc.local 没有执行权限,需要设置执行权限

chmod +x /etc/rc.d/rc.local

以上步骤,创建了sessions目录,并设置了共享,设置session共享时,只需要将php.ini中的session储存方式改为文件储存,并且保存目录配置为/sessions,这样即可使服务器之间session共享

版权声明:本文由MartinSun发布,内容供学习参考使用。

图文说明:部分图文来源于网络,如侵权请联系删除。

本文链接:https://www.sunyonghong.com/?id=8

标签: linuxnfs
分享给朋友:

相关文章

在Linux服务器上后台运行npm命令

后台运行nohup npm run serve > test.log & exit 退出后台使用下面的命令查询出相关进程,全部杀死进程即可 ps -ef|grep node...