ubuntu18.04上安装和配置NFS服务器


简介

网络文件系统(NFS)是一个分布式文件系统协议,允许你通过网络共享远程文件夹,通过NFS的方式,将远程文件夹挂载到本地系统上,并且操作远程机器的文件,就像本地文件一样方便。

NFS 协议默认是不加密的,它不像 Samba,它不提供用户身份鉴别。服务端通过限定客户端的 IP 地址和端口来限制访问。

在本文中,将介绍如何在 Ubuntu 18.04 上建立 NFSV4 服务器以及如何挂载 NFS 到本地系统中

前提条件

使用一台Ubuntu 18.04 的机器作为服务端,在该服务端,我们将安装搭建NFS服务,另外一台linux 服务器作为 NFS 客户端,服务端和客户端之间能够通过局域网互相连接。

搭建 NFS 服务器

这里说明如何安装必要软件包,创建并导出NFS目录,配置防火墙

安装NFS服务器

刷新软件索引,并且安装NFS服务

sudo apt update
sudo apt install nfs-kernel-server

安装完成后,NFS 服务将会自动启动,默认在Ubuntu 18.04上NFS2 被禁用,NFS3和NFS4可以使用。
查看NFS的版本信息 + 表示支持 - 表示不支持

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

创建文件系统

配置NFSv4 服务器,最好使用一个全局的NFS根目录,然后在这个根目录下挂载实际的目录,在这个例子中,/opt/nfsv4作为NFS 的root 根目录。
分享两个目录(/var/data/opt/back),使用不同的配置,来说明如何挂载NFS,/var/data归属于用户和用户组data/opt/back归属于root
NFS 服务器的ip地址为192.168.174.10

  • 创建导出文件系统
sudo mkdir -p /opt/nfsv4/data
sudo mkdir -p /opt/nfsv4/back
  • 挂载实际的目录
sudo mount --bind /var/data /opt/nfsv4/data
sudo mount --bind /opt/back /opt/nfsv4/back
  • 持久化挂载

    • 打开文件/etc/fstab
        sudo nano /etc/fstab 
      
    • 添加条目
       /var/data  /opt/nfsv4/data  none bind 0 0
       /opt/back  /opt/nfsv4/back  none bind 0 0
      
  • 导出文件系统

    • 修改配置文件
      修改/etc/exports文件,添加文件系统导出,
      这里将databack 导出,并且配置网络访问权限

      sudo nano /etc/exports
      

      添加如下内容

      /opt/nfsv4 192.168.174.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
      /opt/nfsv4/back 192.168.174.0/24(ro,sync,no_subtree_check) 192.168.174.20(rw,sync,no_subtree_check)
      /opt/nfsv4/data 192.168.174.30(rw,sync,no_subtree_check)
      
    • 配置说明
      第一行包含fsid=0定义NFS根目录/opt/nfs4,网络192.168.174.0/24客户端允许访问NFS卷,crossmnt选项是必要的,用来分享被导出目录的子目录
      第二行表示如何针对一个文件系统,配置多个导出规则,导出目录 /opt/nfs4/back ,允许192.168.174.0/24客户端只读访问,允许192.168.174.20客户端读写访问
      第三行表示单个导出规则,导出目录/opt/nfs4/data,允许192.168.174.30客户端读写访问

    • 导出分享

         sudo exportfs -ra
      
    • 查看当前活跃的导出和状态

         sudo exportfs -v
      

      输出会包含所有分享以及他们的选项,有些选项是默认的选项,如果需要修改这些,需要在配置中显示设置这些选项

      /opt/nfsv4/back 192.168.174.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
      /opt/nfsv4/data 192.168.174.30(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
      /opt/nfsv4 192.168.174.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
      /opt/nfsv4/back 192.168.174.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
      

配置防火墙

如果网络上有防火墙,需要在防火墙中添加一条规则,允许流量通过NFS端口
如果使用ufw管理防火墙,运行命令添加防火墙

sudo ufw allow from 192.168.174.0/24 to any port nfs

查看防火墙的状态

sudo ufw status

输出结果

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.174.0/24
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

NFS客户端

安装NFS客户端

  • 在Ubuntu 上安装NFS客户端,客户端的软件名称为 nfs-common
 sudo apt install nfs-common
  • 在Centos 上安装NFS客户端,客户端的软件名称为nfs-utils
sudo yum install nfs-utils

挂载文件系统

客户端ip为192.168.174.30,这台机器有对/opt/nfs4/back有只读权限,对/opt/nfs4/data有读写权限
创建两个新目录作为挂载点

sudo mkdir -p /opt/back
sudo mkdir -p /opt/data

使用mount挂载文件系统

sudo mount -t nfs -o vers=4 192.168.174.10:/back /opt/back
sudo mount -t nfs -o vers=4 192.168.174.10:/data /opt/data

当挂载NFSV4 文件系统时,需要忽略NFS根目录,不使用/opt/nfs4/data,而是使用/data

使用df -h 命令可以查看NFS是否挂载成功

如果想要持久化挂载,需要修改/etc/fstab文件,将挂载信息写入到此文件中

sudo nano /etc/fstab

添加如下内容

192.168.174.10:/back /opt/back   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.174.10:/data /opt/data       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

测试NFS访问

/opt/back中创建文件

sudo touch /backups/test.txt

back文件系统为只读权限,会看到Read-only file system 的错误信息

以root 身份在/var/data中中创建测试文件,依然提示Permission denied

sudo touch /var/data/test.txt

原因分析:/var/data归属于data用户,并且这个分享有root_squash选项,表示会将root用户映射成nobody用户和nogroup组,导致root用户对远程文件夹没有写入权限,假如data用户在客户机上存在,并且GIDUID和远程服务器上的一致,则会有权限创建文件


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM