1.安装

1.1 环境准备

nfs服务端:10.10.5.10,nfs客户端:10.10.5.11,10.10.5.12

1.2 服务端安装

  1. 安装nfs服务端软件包

     yum install -y nfs-utils
    
  2. 启动nfs服务并设置开机启动

     # 启动服务
     systemctl start nfs-server
        
     # 设置开机启动
     systemctl enable nfs-server
        
     # 查看服务状态
     systemctl status nfs-server
    
  3. 创建目录并设置权限

     mkdir -p /nfs/data
     # /etc/exports文件内容的配置格式:/nfs/data *(insecure,rw,sync,no_root_squash)
     # 第一部分是配置共享的目录,此处是共享/nfs/data 个人觉得应该用/mnt/nfs/data
     # 第二部分是*,*代表所有IP地址都可以访问,如果写成10.10.5.0/24,代表该网段的所有IP地址可以访问,也可以写成一个固定的IP
     # 第三部分是权限,紧跟在IP后面的括号部分,具体权限配置信息解释见下面的表格
     echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports
    
  4. 重启nfs-server

     systemctl restart nfs-server
    

1.3 客户端安装

  1. 安装nfs客户端软件包(同服务端)

     yum install -y nfs-utils
    
  2. 创建共享目录并挂载

     mkdir -p /nfs/data
        
     # 把本地的/nfs/data挂载到主节点上,此挂载方式是临时生效的,如果重启后也生效,需要修改/etc/fstab文件
     mount 10.10.5.10:/nfs/data /nfs/data
        
     # 挂载永久生效
     vi /etc/fstab
        
     # 新增一行
        
     # device                mountpoint        fs-type        options        dump        fsckorder
     10.10.5.10:/nfs/data     /nfs/data          nfs          rw          0                0
    
  3. 测试

     # 在任意一个客户端节点上创建一个文件,并查看其他节点是否有文件被同步
        
     echo "nfs data" >> /nfs/data/test.txt
    

nfs权限配置解释:

参数命令 参数用途
rw 表示可读写,注意,仅仅设置成读写客户端还是不能正常写入,还要正确地设置共享目录的权限
ro 只读
sync 文件同时写入硬盘和内存,读取或者写入数据时,数据同步到 NFS server 的硬盘中后才返回
async 文件暂存于内存,而不是直接写入内存
no_root_squash NFS 客户端连接服务器时如果使用的是 root 的话,那么对服务器端共享的目录来说,也拥有 root 权限。显然开此选项是不安全的
root_squash NFS 客户端连接服务器时如果使用的是 root 的话,那么对服务器端共享的目录来说,拥有匿名用户权限,通常他将使用 nobody 或 nfsnobody 身份;客户端通过 root 用户添加的文件 uid 是 0,代表服务器端的 root 用户默认存在,实现 root 的映射
all_squash 不论 NFS 客户端连接服务器时使用什么用户,对服务器端共享的目录来说都拥有匿名用户权限;这个参数可以确保多个 NFS 客户端的 uid、gid 不同,但服务器端使用一致的 uid/gid,如服务器匿名用户的 uid 是 2000,那么客户端也一定要写在大于 2000 以内才行
anonuid 匿名用户的 UID 值,通常是 nobody 或 nfsnobody,可以在此处自行设定;说明客户端以什么权限来访问
anongid 同 uid

2.原理

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。其概念和相关知识点见下图: NFS简单工作原理图如下:

  1. 首先服务器端启动RPC服务,并开启111端口
  2. 服务器端启动NFS服务,并向RPC注册端口信息
  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

NFS优缺点:

  1. 节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问
  2. 方便部署非常快速,维护十分简单,简单容易上手。
  3. 局限性容易发生单点故障,及server机宕机了所有客户端都不能访问。
  4. 在高并发下NFS效率/性能有限。多台机器挂载NFS服务器时,连接管理维护麻烦
  5. 客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)