一、环境说明 节点信息 角色 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