常见的 EFS 接入点配置有哪些?

上次更新日期:2022 年 7 月 13 日

哪些常见的 Amazon Elastic File System (Amazon EFS) 接入点配置可以正常工作,哪些会导致挂载错误?

解决方法

在查看接入点配置之前,请确保您了解以下内容:

Amazon EFS 如何认证客户或在需要时覆盖认证

  • EFS 文件和目录支持基于用户 ID 和组 ID 的标准 Unix 风格的读、写和运行权限。
  • 如果 NFS 客户端在没有访问点的情况下装载文件系统,则客户端提供的用户和组 ID 将被信任和使用。
  • 默认情况下,根压缩不会开启。Amazon EFS 的行为犹如带有 no_root_squash 的 Linux NFS 服务器。有关更多信息,请参阅 No root squashing(无根压缩)。
  • 如果用户或组 ID 为 0,则 Amazon EFS 将该用户视为根用户,并绕过权限检查。要覆盖 NFS 客户端使用的用户 ID 和组 ID,可以使用 EFS 接入点。Amazon EFS 使用接入点 ID 来指示用户创建的新文件和目录的所有者和组所有者。这是 "all squash" 映射行为。
    注意:Amazon EFS 不会检查用户或组名称。它仅使用数字标识符。

NFS 映射行为,例如 no_root_squash、root_squash 和 all_squash

  • root_squash:将来自 UID 或 GID 0 的请求映射到匿名 UID 或 GID。这不适用于可能同样敏感的任何其他 UID 或 GID,例如用户箱或组员工。
  • no_root_squash:关闭根压缩。此选项对无盘客户端很有用。
  • all_squash:将所有 UID 和 GID 映射到匿名用户。此选项对于 NFS 导出的公共 FTP 目录、新闻 spool 目录等非常有用。相反的选项为 no_all_squash,这是默认设置。

具有非根路径和其他配置的接入点

接入点具有以前不存在的非根路径,例如 /test。POSIX 用户和创建信息字段为空。

常见问题:您尝试通过接入点将文件系统挂载到 Amazon Elastic Compute Cloud (Amazon EC2) 实例。如果文件系统中不存在访问点的路径目录(在本例中为 /test),则装载会失败。

解决方法:在不使用访问点的情况下使用或装载文件系统之前,创建一个目录。或者,在创建或修改接入点时指定 Creation Info(创建信息)。

接入点具有以前不存在的非根路径,例如 /test。已配置 POSIX 用户(例如 1000:1000)。“创建信息” 字段为空。

常见问题:当您尝试通过访问点将文件系统装载到 EC2 实例时,装载会失败。这是因为文件系统中不存在访问点的路径目录(在本例中为 /test)。

解决方法:在不使用访问点的情况下使用或装载文件系统之前,创建一个目录。或者,在创建或修改接入点时指定 Creation Info(创建信息)。

接入点具有以前不存在的非根路径,例如 /test。POSIX 用户(例如 1000:1000)和 “创建信息” 字段已完成(例如 1000:1000 (0755))。

此配置不会出现挂载问题。

具有根路径和其他配置的接入点

如果您在创建接入点时未指定 "path" 值,则 EFS 将使用文件系统的根目录作为访问点的路径。在这种情况下,文件系统只允许操作系统的 root 账户执行文件系统操作,如读取、写入和运行。这是因为在这样设置的文件系统中,不允许您更改根目录的权限。

但是,当用户强制开启后,Amazon EFS 会将 NFS 客户端的用户和组 ID 替换为访问点上为所有文件系统操作配置的身份。此选项在文件系统的 EFS 服务器端发生冲突。

接入点具有根路径 " / ",并且 POSIX 用户和创建信息字段为空。

此配置不会出现挂载问题。此配置与使用不使用接入点的 EFS 文件系统相同。只有根用户可以创建或修改文件。

接入点具有根路径 “/”,POSIX 用户设置为 0:0。“创建信息” 字段为空。

此配置不会出现挂载问题。这是因为 all_squash 映射使所有操作看起来都是使用 root 账户执行的,这样会强制执行用户身份。此配置与使用不使用接入点的 EFS 文件系统相同。只有根用户可以创建或修改文件。

接入点具有根路径 “/”,POSIX 用户设置为 1000:1000。“创建信息” 字段为空。

此配置不会出现挂载问题。这是因为 all_squash 映射使得所有操作都是使用具有 1000 UID/GID 数字标识的账户执行的。即使使用具有此配置的 sudo 命令,也无法创建或修改文件。

接入点具有根路径 “/”,POSIX 用户设置为 1000:1000。创建信息字段设置为 1000:1000 0755。

如果目录尚不存在,EFS 会自动创建具有这些权限的指定根目录。但是由于 all_squash 映射,用户根本无法写入文件系统。

注意:创建信息不会影响 EFS 文件系统,因为根目录 (/) 已经存在。

常见问题:由于所有权冲突,用户无法执行任何文件操作。

解决方法:

  • 不要使用 "/" 作为接入点的路径。
  • 0:0 用作为一个 POSIX 用户,并且不使用 Creation info(创建信息),因为该信息根本无需提供。

具有非根路径的访问点(例如 /test),POSIX 用户为 0:0,创建信息字段为 0:0 (0755)

由于 all_squash 映射,此配置不会出现挂载问题。all_squash 映射使所有操作看起来都是使用 root 账户执行的(强制使用用户身份)。即使用户是非根用户,也是如此。

具有非根路径(例如 /test)、POSIX 用户为 1000:1000、创建信息字段为空的接入点

注意:为接入点创建路径 /test

此配置不会出现挂载问题。但请注意,所有文件和目录都归数字标识 UID 1000 和 GID 1000 的账户所有。

具有非根路径(例如 /test)、创建信息字段为 0:0 (0755) 且 POSIX 用户为空的接入点

此配置不会出现挂载问题。但是,sudo 必须用于文件操作。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?