CentOS/RHEL 7:配置 NFS 服务器和 NFS 客户端

NFS 允许 Linux 服务器通过网络与其他 UNIX 客户端共享目录。
NFS 服务器导出一个目录,NFS 客户端挂载这个目录。
RHEL 7 支持 NFS NFSv3 和 NFSv4 两个版本。

配置 NFS 服务器

  1. 如果服务器上尚未安装所需的 nfs 软件包,请安装:
# rpm -qa | grep nfs-utils
# yum install nfs-utils rpcbind
  1. 在启动时启用服务:
#  systemctl enable nfs-server
#  systemctl enable rpcbind
#  systemctl enable nfs-lock

在 RHEL7.1 (nfs-utils-1.3.0-8.el7) 中,启用 nfs-lock 不起作用(没有这样的文件或者目录)。
由于 rpc-statd.service 是静态的,因此不需要启用它。

#  systemctl enable nfs-idmap

在 RHEL7.1 (nfs-utils-1.3.0-8.el7) 中这不起作用(没有这样的文件或者目录)。
由于 nfs-idmapd.service 是静态的,因此不需要启用它。

  1. 启动 NFS 服务:
#  systemctl start rpcbind
#  systemctl start nfs-server
#  systemctl start nfs-lock
#  systemctl start nfs-idmap
  1. 检查NFS服务的状态:
# systemctl status nfs
  1. 创建共享目录:
# mkdir /test
  1. 导出目录。
    /etc/exports 文件的格式是:
dir client1 (options) [client2(options)...]

客户端选项包括(首先列出默认值):

ro / rw :

a) ro :允许客户端只读访问共享。

b) rw :允许客户端对共享进行读写访问。

sync / async :

a) sync:NFS 服务器仅在先前请求所做的更改写入磁盘后才回复请求。

b) async :指定服务器不必等待。

wdelay/no_wdelay

a) wdelay :当 NFS 服务器怀疑另一个写请求即将到来时,它会延迟提交写请求。

b) no_wdelay :使用此选项禁用延迟。
no_wdelay 选项只能在启用默认同步选项时启用。

no_all_squash/all_squash :

a) no_all_squash :不改变远程用户的映射。

b) all_squash :压缩包括 root 在内的所有远程用户。

root_squash/no_root_squash :

a) root_squash :防止远程连接的 root 用户拥有 root 访问权限。
有效压缩远程 root 权限。

b) no_root_squash :禁用根挤压。

例子 :

# vi /etc/exports
/test *(rw)
  1. 导出共享:
# exportfs -r

-r 重新导出 /etc/exports 中的条目并将 /var/lib/nfs/etab 与 /etc/exports 同步。
/var/lib/nfs/etab 是主导出表。

可以与 exportfs 命令一起使用的其他选项是:

-a:导出/etc/exports中的条目,但不与/var/lib/nfs/etab同步
-i:忽略/etc/exports中的条目并使用命令行参数。
-u:取消导出一个或者多个目录
-o:在命令行上指定客户端选项
  1. 重启NFS服务:
# systemctl restart nfs-server

防火墙服务在 NFS 服务器上处于活动状态

要使 NFS 服务器正常工作,请在 firewall-config 应用程序或者使用 firewall-cmd 的相关区域中启用 nfs、mountd 和 rpc-bind 服务:

# firewall-cmd --add-service=nfs --zone=internal --permanent
# firewall-cmd --add-service=mountd --zone=internal --permanent
# firewall-cmd --add-service=rpc-bind --zone=internal --permanent

NFS 服务器和 RPC 进程

启动 nfs-server 进程会启动 NFS 服务器和其他 RPC 进程。
RPC 过程包括:
rpc.statd : 在 NFS 客户端和 NFS 服务器之间实现监控协议 (NSM)
rpc.mountd :NFS 挂载守护进程,它实现了来自 NFSv3 客户端的挂载请求的服务器端。
rpc.idmapd :映射 NFSv4 名称和本地 UID 和 GID
rpc.rquotad :为远程用户提供用户配额信息。

欢迎来到之路教程(on itroad-com)

配置 NFS 客户端

  1. 如果服务器上尚未安装所需的 nfs 软件包,请安装:
# rpm -qa | grep nfs-utils
# yum install nfs-utils
  1. 使用 mount 命令挂载导出的文件系统。
    命令的语法:
mount -t nfs -o options host:/remote/export /local/directory

示例:

# mount -t nfs -o ro,nosuid remote_host:/home /remote_home

此示例执行以下操作:

  • 它从远程主机 (remote_host) 挂载 /home 到本地挂载点 /remote_home。

  • 文件系统以只读方式安装,并且阻止用户运行 setuid 程序(-o ro,nosuid 选项)。

  1. 更新 /etc/fstab 以在启动时挂载 NFS 共享。
# vi /etc/fstab
remote_host:/home 	/remote_home	 nfs 	ro,nosuid 	0 	0
日期:2020-09-17 00:12:46 来源:oir作者:oir