连接 NFS 客户端

本页介绍了如何连接 NFS 客户端。

准备工作

根据您的 Linux 发行版类型安装 NFS 客户端工具,以准备好客户端:

RedHat

运行以下命令:

sudo yum install -y nfs-utils

SuSe

运行以下命令:

sudo yum install -y nfs-utils

Debian

运行以下命令:

sudo apt-get install nfs-common

Ubuntu

运行以下命令:

sudo apt-get install nfs-common

使用导出政策控制卷访问权限

NFSv3 和 NFSv4.1 中的卷访问权限控制基于客户端的 IP 地址。卷的导出政策包含导出规则。每条规则都是以英文逗号分隔的 IP 地址或网络 CIDR 列表,用于定义允许挂载该卷的允许的客户端。规则还定义了客户端拥有的访问权限类型,例如读取和写入只读。作为一项额外的安全措施,NFS 服务器会将访问权限从根用户 (UID=0) 重新映射到 nobody (UID=65535),这会使 root 成为在访问卷上文件时没有特权的用户。当您在相应的导出规则中将根访问权限设为开启时,根用户将保持根访问权限。导出规则的顺序很重要。

我们建议您在制定导出政策时遵循以下最佳实践:

  • 按从最具体到最不具体对导出规则进行排序。

  • 仅导出到受信任的客户端,例如特定客户端或包含受信任客户端的 CIDR。

  • 将根访问权限限制为一小部分受信任的管理客户端。

规则 允许的客户端 访问 根访问权限 说明
1 10.10.5.3、
、10.10.5.9
读写 开启 管理客户端。根用户保持根身份,可以管理所有文件权限。
2 10.10.5.0/24 读写 关闭 允许来自 10.10.5.0/24 网络的所有其他客户端挂载
,但将 root 访问权限映射到 nobody。
3 10.10.6.0/24 只读 关闭 另一个网络可以从卷读取数据,但不能写入数据。

客户端挂载卷后,文件级访问权限将决定用户可以执行哪些操作。如需了解详情,请参阅适用于 UNIX 风格卷的 NFS 文件级访问权限控制

NFS 客户端的装载说明

您可以按照以下说明使用 Google Cloud 控制台或 Google Cloud CLI 为 NFS 客户端获取挂载说明:

控制台

  1. 在 Google Cloud 控制台中,前往 NetApp 卷页面。

    转到“NetApp Volumes”

  2. 点击

  3. 点击 展开

  4. 选择安装说明

  5. 按照 Google Cloud 控制台中显示的挂载说明操作。

  6. 确定挂载命令并使用挂载选项,除非您的工作负载有特定的挂载选项要求。

    仅限 NFSv3:如果您的应用不使用锁,或者您未将客户端配置为启用 NSM 通信,我们建议您添加 nolock 挂载选项。

gcloud

查找卷的装载说明:

 gcloud netapp volumes describe VOLUME_NAME \
    --project=PROJECT_ID \
    --location=LOCATION \
    --format="value(mountOptions.instructions)"

替换以下信息:

  • VOLUME_NAME:卷的名称。

  • PROJECT_ID:卷所在项目的名称。

  • LOCATION:卷的位置。

如需详细了解其他可选标志,请参阅 Google Cloud SDK 文档中的卷部分。

其他 NFSv4.1 说明

启用 NFSv4.1 后,服务等级为标准、高级和极端的卷也会自动启用 NFSv4.2。除非您指定要装载的版本,否则 Linux 装载命令始终会装载最高可用的 NFS 版本。如果您想使用 NFSv4.1 进行挂载,请在挂载命令中使用 -o vers=4.1 参数。

在 NFSv3 中,用户和群组通过 NFSv3 协议发送的用户 ID (UID) 和群组 ID (GID) 进行标识。请务必确保在访问该卷的所有客户端上,相同的 UID 和 GID 代表相同的用户和群组。NFSv4 通过使用安全标识符,消除了对显式 UID 和 GID 映射的需求。安全标识符是格式为 <username|groupname>@<full_qualified_domain> 的字符串。安全标识符示例为 bob@example.com。客户端需要先将内部使用的 UID 和 GID 转换为安全标识符,然后才能向服务器发送 NFSv4 请求。对于传入请求,服务器需要将安全标识符转换为 UID 和 GID;对于响应,则需要进行相反的转换。使用转换的优势在于,每个客户端和服务器都可以使用不同的内部 UID 和 GID。不过,缺点是,所有客户端和服务器都需要维护 UID 和 GID 以及用户和群组名称之间的映射列表。客户端上的映射信息可以来自 /etc/passwd/etc/groups 等本地文件或 LDAP 目录。此映射的配置由 rpc.idmapd 管理,该工具必须在客户端上运行。

在 NetApp 卷上,LDAP 必须提供映射信息,并且 Active Directory 是唯一支持的 RFC2307bis 兼容 LDAP 服务器。将 Kerberos 用于 NFSv4 时,安全标识符会以 username@DOMAINNAME 格式存储 Kerberos 正文,其中 DOMAINNAME(大写)会成为领域名称。

数字 ID

对于不想配置名称映射,而是使用 NFSv4 替换 NFSv3 的用户,NFSv4 引入了一个名为 numeric ID 的选项,该选项会将 UID 和 GID 编码的文本字符串作为安全标识符发送。这简化了用户的配置流程。

您可以使用以下命令检查客户端设置:

     cat /sys/module/nfs/parameters/nfs4_disable_idmapping
   

默认值为 Y,表示启用数字 ID。NetApp Volumes 支持使用数字 ID。

在 NFS 客户端上配置 rpc.idmapd

无论您使用的 ID 或安全标识符类型如何,都需要在 NFS 客户端上配置 rpc.idmapd。如果您按照准备工作部分中针对客户端实用程序的安装说明操作,则客户端实用程序应该已安装,但可能未运行。在您挂载第一个 NFS 卷时,某些发行版会使用 systemd 自动启动它。rpc.idmapd 所需的最低配置是设置域名设置。否则,用户 root 将显示为 UID=65535 or 4294967295 的 nobody。

请按照以下说明在 NFS 客户端上配置 rpc.idmapd

  1. 在客户端上,打开 /etc/idmapd.conf 文件,然后将网域参数更改为以下任一参数:

    • 如果您的卷未启用 LDAP,请执行 domain = defaultv4iddomain.com

    • 如果您的卷已启用 LDAP,domain = <FDQN_of_Windows_Domain>

  2. 运行以下命令,使对 rpc.idmapd 所做的更改生效:

     nfsidmap -c

将 Linux 连接到 LDAP

如果您使用的是 NFSv3 扩展群组或 NFSv4.1 安全标识符,则您可以配置 NetApp Volumes,以使用连接到存储池的 Active Directory 将 Active Directory 用作 LDAP 服务器。

为了在 NFS 客户端和服务器之间保持一致的用户信息,您可能需要将客户端配置为使用 Active Directory 作为用户和群组信息的 LDAP 名称服务。

请使用以下资源配置 LDAP:

使用 Kerberized NFS 时,您可能需要使用本部分中提到的部署指南来配置 LDAP 并确保客户端和服务器之间的一致性。

后续步骤

将大容量卷与多个存储端点相关联