百度已收录

一、环境说明

节点信息 角色
192.168.0.20 NFS服务端
192.168.0.21 NFS客户端
192.168.0.22 NFS客户端
192.168.0.23 NFS客户端

二、NFS服务端搭建

1、关闭防火墙并禁用SELinux

# 由于nfs使用端口不固定,因此需要关闭防火墙

# 关闭防火墙
systemctl stop firewalld

# 禁止开机自启动
systemctl disable firewalld

# 查看防火墙状态
systemctl status firewalld

# 这里是临时禁用SELinux,永久禁用自行百度
setenforce 0

2、yum安装nfs-utils包(所有节点都执行)

yum install nfs-utils -y

3、创建共享目录(只在服务端执行)

# 我这里就设置一级目录,可以指定多级,-p为递归创建
mkdir /data -p

# 为数据目录添加读写权限
chmod 777 /data -R

4、修改NFS配置文件(只在服务端执行)

vim /etc/exports

# 在文件中添加 
/data *(rw,sync,no_subtree_check,no_root_squash)

nfs配置文件参数解析:

  • /data 表明将该目录共享出去
  • * 用于访问控制,只有在该IP段的机器才可以访问,星号表示所有,也可以使用192.168.0.*通配符,或者192.168.0.0/24
  • IP地址与后面权限控制的括号中间不能出现空格,否则会出现只读异常
  • rw 表示允许客户端以读写(read-write)模式访问共享目录。如果使用 ro(read-only),则客户端只能以只读模式访问
  • sync表示所有数据在请求时都会同步写入到磁盘。这是默认选项,确保了数据的持久性。如果使用async,则数据可能会先写入到缓存中,然后异步写入到磁盘,这可能会提高性能,但牺牲了数据的安全性
  • no_subtree_check 关闭子树检查。当客户端访问一个文件时,NFS 服务器通常会在该文件的目录上执行检查,以确保客户端有权访问。如果关闭这个选项,可以减少服务器的负担,提高性能,但可能会降低安全性
  • no_root_squash 当客户端以 root 用户身份访问共享目录时,不会将 root 用户映射为 NFS 服务器上的非 root 用户。这意味着客户端的 root 用户将保留 root 权限。这可能会带来安全风险,因为任何拥有 root 权限的客户端用户都可以不受限制地修改共享目录的内容。如果使用root_squash,则会将 root 用户映射为服务器上的匿名用户,通常是nobody,从而限制其权限

5、开启NFS服务并设置开机自启动(所有节点都执行)

# 启动nfs-server
systemctl start nfs-server

# 设置开机自启
systemctl enable nfs-server

6、查看服务端搭建结果(只在服务端执行)

# 查看是否成功运行
showmount -e

# 出现如下则代表成功
[root@server ~]# showmount -e
Export list for server:
/data *

三、NFS客户端挂载

1、客户端查看连通性并创建本地用于挂载的目录(只在客户端执行)

# 查看连通性
showmount -e 192.168.0.20

# 出现如下即可进行下一步
[root@client01 ~]# showmount -e 192.168.0.20
Export list for 192.168.0.20:
/data *

# 创建本地目录用于挂载
mkdir /nfs_data

# 使用mount命令挂载
mount -t nfs 192.168.0.20:/data /nfs_data

# 卸载挂载
umount /nfs_data

# 或者使用fstab挂载,使系统每次启动时都能自动挂载
vim /etc/fstab

# 在文件中添加挂载内容
192.168.0.20:/data /nfs_data nfs defaults 0 0

# 使文件/etc/fstab生效
mount -a

fstab中添加的内容参数解析:

  • 192.168.0.20:/data:这是 NFS 服务器的 IP 地址和共享的目录路径。192.168.0.20是 NFS 服务器的 IP 地址,/data 是服务器上共享的目录。

  • /nfs_data:这是本地挂载点,即 NFS 共享将被挂载到本地系统的哪个目录。
  • nfs:指定了文件系统的类型。在这里,nfs 表示这个挂载点是网络文件系统(NFS)。
  • defaults:这是挂载选项。defaults 通常包括 rw, suid, dev, exec, auto, nouser, 和 async。这些选项的含义如下:
    • rw:挂载为读写模式。
    • suid:允许执行文件时保留 set-user-identifier 和 set-group-identifier 权限位。
    • dev:解释字符设备和块设备。
    • exec:允许执行二进制文件。
    • auto:可以在启动时或使用 mount -a 命令时自动挂载。
    • nouser:不允许普通用户挂载或卸载。
    • async:写入操作可以异步进行。
  • 0:这是 dump 工具的频率。0 表示不使用 dump 工具备份这个文件系统。
  • 0:这是 fsck(文件系统检查)的顺序。0 表示在启动时不检查这个文件系统。

2、检查客户端挂载情况

df -h