5.8. 配置一个具有可选的 NFSv4 的 NFSv3 服务器
在仍然使用 NFSv3 客户端的网络中,配置服务器,以使用 NFSv3 协议提供共享。如果在您的网络中还有较新的客户端,您也可以启用 NFSv4。默认情况下,Red Hat Enterprise Linux NFS 客户端使用服务器提供的最新 NFS 版本。
流程
- 安装 - nfs-utils软件包:- dnf install nfs-utils - # dnf install nfs-utils- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:默认启用 NFSv3 和 NFSv4。如果您不需要 NFSv4 或只需要特定的次版本,请取消所有 - vers4.<minor_version>参数的注释,并相应地设置它们:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 使用这个配置,服务器仅提供 NFS 版本 3 和 4.2。 重要- 如果您只需要特定的 NFSv4 次版本,则只为次版本设置参数。不要取消 - vers4参数的注释,以避免不可预测的次版本的激活或停用。默认情况下,- vers4参数启用或禁用所有 NFSv4 次版本。但是,如果您将- vers4与其他- vers参数一起设置,则此行为会改变。
- 默认情况下,NFSv3 RPC 服务使用随机端口。要启用防火墙配置,请在 - /etc/nfs.conf文件中配置固定端口号:- 在 - [lockd]部分中,为- nlockmgrRPC 服务设置固定端口号,例如:- [lockd] port=5555 - [lockd] port=5555- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 使用这个设置时,服务会自动对 UDP 和 TCP 协议使用这个端口号。 
- 在 - [statd]部分中,为- rpc.statd服务设置一个固定端口号,例如:- [statd] port=6666 - [statd] port=6666- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 使用这个设置时,服务会自动对 UDP 和 TCP 协议使用这个端口号。 
 
- 可选:创建一个您要共享的目录,例如: - mkdir -p /nfs/projects/ - # mkdir -p /nfs/projects/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果要共享一个现有目录,请跳过这一步。 
- 在 - /nfs/projects/目录上设置所需的权限:- chmod 2770 /nfs/projects/ chgrp users /nfs/projects/ - # chmod 2770 /nfs/projects/ # chgrp users /nfs/projects/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这些命令为 - /nfs/projects/目录上的- users组设置写权限,并确保自动在此目录中创建的新条目上设置同样的组。
- 为每个您要共享的每个目录向 - /etc/exports文件中添加一个导出点:- /nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw) - /nfs/projects/ 192.0.2.0/24(rw) 2001:db8::/32(rw)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 此条目将 - /nfs/projects/目录共享为可被- 192.0.2.0/24和- 2001:db8::/32子网中的客户端读写。
- 在 - firewalld中打开相关的端口:- firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp} firewall-cmd --reload- # firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} # firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp} # firewall-cmd --reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 启用并启动 NFS 服务器: - systemctl enable --now rpc-statd nfs-server - # systemctl enable --now rpc-statd nfs-server- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 在服务器上,验证服务器是否只提供您配置的 NFS 版本: - cat /proc/fs/nfsd/versions +3 +4 -4.0 -4.1 +4.2 - # cat /proc/fs/nfsd/versions +3 +4 -4.0 -4.1 +4.2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在客户端上执行以下步骤: - 安装 - nfs-utils软件包:- dnf install nfs-utils - # dnf install nfs-utils- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 挂载导出的 NFS 共享: - mount -o vers=<version> server.example.com:/nfs/projects/ /mnt/ - # mount -o vers=<version> server.example.com:/nfs/projects/ /mnt/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证是否使用指定的 NFS 版本挂载了共享: - mount | grep "/mnt" - # mount | grep "/mnt" server.example.com:/nfs/projects/ on /mnt type nfs (rw,relatime,vers=3,...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以 - users组成员的用户身份,在- /mnt/中创建一个文件:- touch /mnt/file - # touch /mnt/file- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 列出目录以验证文件是否已创建: - ls -l /mnt/ - # ls -l /mnt/ total 0 -rw-r--r--. 1 demo users 0 Jan 16 14:18 file- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow