Ubuntu NFS部署

NFS服务器安装

  • 执行以下命令安装NFS服务器:

    sudo apt install nfs-kernel-server
    
  • 执行以下命令启动NFS服务器:

    sudo systemctl start nfs-kernel-server.service
    
  • 配置操作系统启动时启动NFS服务器:

    sudo systemctl enable nfs-kernel-server.service
    

NFS服务器配置

  • 在服务器上配置 /etc/exports 如下:

    /data   *(rw,sync,no_root_squash,no_subtree_check)
    

以上配置说明如下:

  • rw 允许客户端读写该卷
  • sync NFS在实际完成磁盘写入后才回复客户端,这样可以保证数据安全性,但是也带来了性能的下降
  • no_root_squash 默认情况下,NFS会把远程的 root 用户访问映射成服务器上的一个普通非特权账户,这样可以保护服务器安全性,避免客户端root用户直接具备服务器root账户权限。但是很多时候对于维护不便,所以还是需要结合其他安全措施来加固。
  • no_subtree_check 避免子目录检查,原因是host主机需要每次收到请求都检查整个输出目录树文件是否实际存在,这导致客户端打开一个文件时如果文件被重命名引发很多问题,所以通常这个参数要设置用来禁止子目录检查。
  • 在最前面的参数选项 * 表示允许网络中所有IP的客户端访问,这是一个安全性很松的设置,仅适合测试使用。实际生产环境需要配置运训访问的客户端IP地址以限制非授权访问。
  • 创建NFS目录 /data

    sudo mkdir /data
    
  • 输出配置的 /data 目录:

    sudo exportfs -a
    
  • 完成NFS卷输出以后,可以再次检查确认:

    sudo exportfs
    

输出如下表明已经对外提供了 /data NFS卷:

/data                <world>
  • 其他的NFS配置案例可参考如下:

    /srv     *(ro,sync,subtree_check)
    /home    *.hostname.com(rw,sync,no_subtree_check)
    /scratch *(rw,async,no_subtree_check,no_root_squash,noexec)
    

NFS客户端安装

  • 安装NFS客户端:

    sudo apt install nfs-common
    

NFS客户端配置

直接挂载

NFS客户端可以不用配置,直接如同本地目录挂载一般挂载上述配置在 192.168.6.11 服务器上的NFS输出目录 /data

sudo mkdir /data
sudo mount 192.168.6.11:/data /data

挂载完成后,执行 df -h 可以看到目录如下:

192.168.6.11:/data  117G   11G  102G  10% /data

现在我们就能够读写这个 /data 目录把文件存放到NFS服务器上了。

持久化配置

为了能够持久配置,即在NFS客户端操作系统启动时就挂载NFS并且能够做必要的优化,我们通常会在NFS客户端配置 /etc/fstab 如下:

192.168.6.11:/data  /data  nfs  rw,soft,intr,vers=3,proto=tcp,rsize=32768,wsize=32768 0 0

然后挂载就比较简单了,只需要执行:

mount /data

就可以,并且操作系统重启也会自动挂载

NFS挂载参数解释:

  • rw 允许读写
  • soft 软挂载